Version 21.52.3: Nov 06, 2021 Queries moved to module swad_user_database.

This commit is contained in:
acanas 2021-11-06 12:30:24 +01:00
parent e07963d8b1
commit 01e2b94d53
4 changed files with 90 additions and 92 deletions

View File

@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 21.52.2 (2021-11-06)"
#define Log_PLATFORM_VERSION "SWAD 21.52.3 (2021-11-06)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 21.52.3: Nov 06, 2021 Queries moved to module swad_user_database. (321894 lines)
Version 21.52.2: Nov 06, 2021 Query refactoring related to SELECT DISTINCT and UNION. (321899 lines)
Version 21.52.1: Nov 06, 2021 Fixed database query in departments. (321828 lines)
Version 21.52: Nov 05, 2021 Changed SELECT COUNT to SELECT EXISTS in some queries. (321833 lines)

View File

@ -3768,100 +3768,10 @@ static void Usr_GetAdmsLst (HieLvl_Level_t Scope)
static void Usr_GetGstsLst (HieLvl_Level_t Scope)
{
const char *QueryFields =
"UsrCod,"
"EncryptedUsrCod,"
"Password,"
"Surname1,"
"Surname2,"
"FirstName,"
"Sex,"
"Photo,"
"PhotoVisibility,"
"CtyCod,"
"InsCod";
/*
row[ 0]: usr_data.UsrCod
row[ 1]: usr_data.EncryptedUsrCod
row[ 2]: usr_data.Password
row[ 3]: usr_data.Surname1
row[ 4]: usr_data.Surname2
row[ 5]: usr_data.FirstName
row[ 6]: usr_data.Sex
row[ 7]: usr_data.Photo
row[ 8]: usr_data.PhotoVisibility
row[ 9]: usr_data.CtyCod
row[10]: usr_data.InsCod
*/
char *Query = NULL;
/***** Build query *****/
switch (Scope)
{
case HieLvl_SYS:
DB_BuildQuery (&Query,
"SELECT %s"
" FROM usr_data"
" WHERE UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
"UsrCod",
QueryFields);
break;
case HieLvl_CTY:
DB_BuildQuery (&Query,
"SELECT %s"
" FROM usr_data"
" WHERE (CtyCod=%ld"
" OR"
" InsCtyCod=%ld)"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
"UsrCod",
QueryFields,
Gbl.Hierarchy.Cty.CtyCod,
Gbl.Hierarchy.Cty.CtyCod);
break;
case HieLvl_INS:
DB_BuildQuery (&Query,
"SELECT %s"
" FROM usr_data"
" WHERE InsCod=%ld"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
"UsrCod",
QueryFields,
Gbl.Hierarchy.Ins.InsCod);
break;
case HieLvl_CTR:
DB_BuildQuery (&Query,
"SELECT %s"
" FROM usr_data"
" WHERE CtrCod=%ld"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
"UsrCod",
QueryFields,
Gbl.Hierarchy.Ctr.CtrCod);
break;
default: // not aplicable
return;
}
Usr_DB_BuildQueryToGetGstsLst (Scope,&Query);
/***** Get list of students from database *****/
Usr_GetListUsrsFromQuery (Query,Rol_GST,Scope);

View File

@ -205,6 +205,92 @@ bool Usr_DB_FindStrInUsrsNames (const char *Str)
Str);
}
/*****************************************************************************/
/************************ Get list with data of guests ***********************/
/*****************************************************************************/
void Usr_DB_BuildQueryToGetGstsLst (HieLvl_Level_t Scope,char **Query)
{
static const char *QueryFields =
"UsrCod," // row[ 0]
"EncryptedUsrCod," // row[ 1]
"Password," // row[ 2]
"Surname1," // row[ 3]
"Surname2," // row[ 4]
"FirstName," // row[ 5]
"Sex," // row[ 6]
"Photo," // row[ 7]
"PhotoVisibility," // row[ 8]
"CtyCod," // row[ 9]
"InsCod"; // row[10]
static const char *OrderBySubQuery =
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
"UsrCod";
/***** Build query *****/
switch (Scope)
{
case HieLvl_SYS:
DB_BuildQuery (Query,
"SELECT %s"
" FROM usr_data"
" WHERE UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
"%s",
QueryFields,
OrderBySubQuery);
return;
case HieLvl_CTY:
DB_BuildQuery (Query,
"SELECT %s"
" FROM usr_data"
" WHERE (CtyCod=%ld"
" OR"
" InsCtyCod=%ld)"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
"%s",
QueryFields,
Gbl.Hierarchy.Cty.CtyCod,
Gbl.Hierarchy.Cty.CtyCod,
OrderBySubQuery);
return;
case HieLvl_INS:
DB_BuildQuery (Query,
"SELECT %s"
" FROM usr_data"
" WHERE InsCod=%ld"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
"%s",
QueryFields,
Gbl.Hierarchy.Ins.InsCod,
OrderBySubQuery);
return;
case HieLvl_CTR:
DB_BuildQuery (Query,
"SELECT %s"
" FROM usr_data"
" WHERE CtrCod=%ld"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
"%s",
QueryFields,
Gbl.Hierarchy.Ctr.CtrCod,
OrderBySubQuery);
return;
default: // not aplicable
Err_WrongScopeExit ();
return; // Not reached
}
}
/*****************************************************************************/
/****** Build query to get the user's codes of all students of a degree ******/
/*****************************************************************************/

View File

@ -68,6 +68,7 @@ void Usr_DB_UpdateMyLastWhatToSearch (void);
bool Usr_DB_ChkIfUsrCodExists (long UsrCod);
long Usr_DB_GetUsrCodFromEncryptedUsrCod (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]);
bool Usr_DB_FindStrInUsrsNames (const char *Str);
void Usr_DB_BuildQueryToGetGstsLst (HieLvl_Level_t Scope,char **Query);
void Usr_DB_BuildQueryToGetUnorderedStdsCodesInDeg (long DegCod,char **Query);
unsigned Usr_DB_GetNumUsrsWhoChoseAnOption (const char *SubQuery);
unsigned Usr_DB_GetOldUsrs (MYSQL_RES **mysql_res,time_t SecondsWithoutAccess);