v1.1.8
This commit is contained in:
@@ -289,6 +289,10 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
private static readonly String prefixUserAccount_Region_Country = "UsrAct_Ctr_";
|
||||
private static readonly String aliasUserAccount_Region_Province = "UsrAct_Prv";
|
||||
private static readonly String prefixUserAccount_Region_Province = "UsrAct_Prv_";
|
||||
private static readonly String aliasUserAccount_UserSport = "UsrAct_UsrSpt";
|
||||
//private static readonly String prefixUserAccount_UserSport = "UsrAct_UsrSpt_";
|
||||
private static readonly String aliasUserAccount_UserRole = "UsrAct_UsrRol";
|
||||
//private static readonly String prefixUserAccount_UserRole = "UsrAct_UsrRol_";
|
||||
private static readonly String colUserAccount_UserRoleCount = "UsrAct_RoleCount";
|
||||
private static readonly String colUserAccount_SystemAdminRole = "UsrAct_SystemAdminRole";
|
||||
private void SetUserAccountColDfn
|
||||
@@ -462,18 +466,73 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
{
|
||||
List<String> nameFilter = new List<string>();
|
||||
nameFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
|
||||
nameFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
|
||||
nameFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
|
||||
filter.Add(nameFilter.Concat(" OR ", "(", ")"));
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.NamePartial.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userFilter = new List<string>();
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
filter.Add(userFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// User Account filter.
|
||||
if (!StringUtil.IsEmpty(prm.UserAccountFilter))
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
{
|
||||
if (prm.Alias_UserSport.IsEmpty())
|
||||
{
|
||||
// User Sport table is not linked in query.
|
||||
DbQuery userSportQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
userSportQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserAccount_UserSport);
|
||||
userSportQuery.Columns.Add("1");
|
||||
userSportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserAccount_UserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
userSportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserAccount_UserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
filter.Add("Exists(" + userSportQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Sport table is already linked in th equery.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, prm.Alias_UserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
}
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> regionFilter = new List<string>();
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, aliasUserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, aliasUserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
filter.Add(regionFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// User filter.
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.UserAccountFilter.Split((char[])null).ToList();
|
||||
List<String> filterWords = prm.UserFilter.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userFilter = new List<string>();
|
||||
// Exact match for each word to avoid Online user search allowing partial lookup.
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
filter.Add(userFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// User filter - partial.
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.UserFilterPartial.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
@@ -488,21 +547,27 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
}
|
||||
|
||||
// Active roles.
|
||||
if (!prm.ActiveRoles.IsEmpty())
|
||||
List<String> roleCodes = new List<string>();
|
||||
foreach (Sax.UserRole userRole in prm.ActiveRoles)
|
||||
roleCodes.Add(UserRoleCodes.GetCodeForType(userRole));
|
||||
if (roleCodes.Exists(item => !item.Trim().IsEmpty()))
|
||||
{
|
||||
String aliasUserRole = "UsrRol";
|
||||
DbQuery roleQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
roleQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserRole);
|
||||
roleQuery.Columns.Add("1");
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
|
||||
foreach (Sax.UserRole userRole in prm.ActiveRoles)
|
||||
if (prm.Alias_UserRole.IsEmpty())
|
||||
{
|
||||
roleQuery.Filters.Clear();
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + "='" + UserRoleCodes.GetCodeForType(userRole) + "'");
|
||||
// User Role table is not linked in the query.
|
||||
DbQuery roleQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
roleQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserAccount_UserRole);
|
||||
roleQuery.Columns.Add("1");
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserAccount_UserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserAccount_UserRole) + " IN (" + DbQuery.FormatForIn(roleCodes) + ")");
|
||||
filter.Add("Exists(" + roleQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Role table is already linked in the query.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, prm.Alias_UserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, prm.Alias_UserRole) + " IN (" + DbQuery.FormatForIn(roleCodes) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
// Notes.
|
||||
|
||||
@@ -445,20 +445,19 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
// User Account status.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
{
|
||||
String aliasUserOrganisation_UserAccount = StringUtil.OnEmpty(prm.Alias_UserAccount, SaxAccountMgr_Dbas.aliasUserOrganisation_UserAccount);
|
||||
if (StringUtil.IsEmpty(prm.Alias_UserAccount))
|
||||
{
|
||||
// User Account table isn't linked.
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOrganisation_UserAccount);
|
||||
qry.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount));
|
||||
qry.Columns.Add("1");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserOrganisation_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
filter.Add("Exists (" + qry.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Account table is linked - filter directly.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserOrganisation_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, prm.Alias_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
}
|
||||
|
||||
// Organisations.
|
||||
@@ -469,20 +468,19 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
// Organisation status.
|
||||
if (prm.OrganisationStatusCat != SaxOrganisation.StatusCat.Any)
|
||||
{
|
||||
String aliasUserOrganisation_Organisation = StringUtil.OnEmpty(prm.Alias_Organisation, SaxAccountMgr_Dbas.aliasUserOrganisation_Organisation);
|
||||
if (StringUtil.IsEmpty(prm.Alias_Organisation))
|
||||
{
|
||||
// User Account table isn't linked.
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasUserOrganisation_Organisation);
|
||||
qry.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasUserOrganisation_Organisation));
|
||||
qry.Columns.Add("1");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasUserOrganisation_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, aliasUserOrganisation_Organisation) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
filter.Add("Exists (" + qry.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Account table is linked - filter directly.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, aliasUserOrganisation_Organisation) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, prm.Alias_Organisation) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
}
|
||||
|
||||
// Organisation roles.
|
||||
|
||||
Reference in New Issue
Block a user