v1.2.2
This commit is contained in:
@@ -511,40 +511,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
|
||||
// User filter.
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
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 ", "(", ")"));
|
||||
}
|
||||
}
|
||||
filter.AddRange(GetUserAccountFilters(prm.UserFilter, aliasUserAccount));
|
||||
|
||||
// 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)
|
||||
{
|
||||
List<String> userAccountFilter = new List<string>();
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
filter.AddRange(GetPartialUserAccountFilters(prm.UserFilterPartial, aliasUserAccount));
|
||||
|
||||
// Active roles.
|
||||
List<String> roleCodes = new List<string>();
|
||||
@@ -581,6 +552,49 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static List<String> GetUserAccountFilters(String userFilter, String aliasUserAccount)
|
||||
{
|
||||
List<String> filter = new List<string>();
|
||||
if (!StringUtil.IsEmpty(userFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = userFilter.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userAccountFilter = new List<string>();
|
||||
// Exact match for each word to avoid Online user search allowing partial lookup.
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
internal static List<String> GetPartialUserAccountFilters(String userFilterPartial, String aliasUserAccount)
|
||||
{
|
||||
List<String> filter = new List<string>();
|
||||
if (!StringUtil.IsEmpty(userFilterPartial))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = userFilterPartial.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userAccountFilter = new List<string>();
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserAccountStatusCatFilterCondition(SaxUserAccount.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserAccount.StatusCat.AwaitingOnly)
|
||||
@@ -597,6 +611,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item sort columns.
|
||||
public List<String> GetUserAccountSortColumns(SaxUserAccount.Params prm)
|
||||
{
|
||||
|
||||
@@ -450,22 +450,36 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// User Account status.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
// User Account filters.
|
||||
if (StringUtil.IsEmpty(prm.Alias_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("1");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
|
||||
// User Account table isn't linked - use sub-query.
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOrganisation_UserAccount);
|
||||
qry.Columns.Add("1");
|
||||
// Construct required filters.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserOrganisation_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
qry.Filters.AddRange(SaxAccountMgr_Dbas.GetUserAccountFilters(prm.UserFilter, aliasUserOrganisation_UserAccount));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
qry.Filters.AddRange(SaxAccountMgr_Dbas.GetPartialUserAccountFilters(prm.UserFilterPartial, aliasUserOrganisation_UserAccount));
|
||||
if (!qry.Filters.IsEmpty())
|
||||
{
|
||||
// At least one User Account filter has been applied. Include Id filter and construct main query filter.
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
|
||||
filter.Add("Exists (" + qry.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Account table is linked - filter directly.
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Account table is linked - filter directly.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, prm.Alias_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
filter.AddRange(SaxAccountMgr_Dbas.GetUserAccountFilters(prm.UserFilter, prm.Alias_UserAccount));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
filter.AddRange(SaxAccountMgr_Dbas.GetPartialUserAccountFilters(prm.UserFilterPartial, prm.Alias_UserAccount));
|
||||
}
|
||||
|
||||
// Organisations.
|
||||
@@ -537,6 +551,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item sort columns.
|
||||
public List<String> GetUserOrganisationSortColumns(SaxUserOrganisation.Params prm)
|
||||
{
|
||||
|
||||
@@ -218,7 +218,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
dbOrganisationEvent._RegionIdCountry = SysId.ToInt(organisationEvent.RegionIdCountry);
|
||||
dbOrganisationEvent._EventAt = organisationEvent.EventAt;
|
||||
dbOrganisationEvent._EventTypeCode = EventTypeCodes.GetCodeForType(organisationEvent.EventType);
|
||||
dbOrganisationEvent._About = organisationEvent.About;
|
||||
dbOrganisationEvent._Summary = organisationEvent.Summary;
|
||||
dbOrganisationEvent._Details = organisationEvent.Details;
|
||||
dbOrganisationEvent._EventData = organisationEvent.EventData;
|
||||
dbOrganisationEvent._PublishedAt = organisationEvent.PublishedAt;
|
||||
dbOrganisationEvent._ExpiresAt = organisationEvent.ExpiresAt;
|
||||
@@ -243,7 +244,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
organisationEvent.RegionIdCountry = new SysId(dbOrganisationEvent._RegionIdCountry);
|
||||
organisationEvent.EventAt = dbOrganisationEvent._EventAt;
|
||||
organisationEvent.EventType = (Sax.EventType)EventTypeCodes.GetTypeForCode(dbOrganisationEvent._EventTypeCode);
|
||||
organisationEvent.About = dbOrganisationEvent._About;
|
||||
organisationEvent.Summary = dbOrganisationEvent._Summary;
|
||||
organisationEvent.Details = dbOrganisationEvent._Details;
|
||||
organisationEvent.EventData = dbOrganisationEvent._EventData;
|
||||
organisationEvent.PublishedAt = dbOrganisationEvent._PublishedAt;
|
||||
organisationEvent.ExpiresAt = dbOrganisationEvent._ExpiresAt;
|
||||
@@ -341,8 +343,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
case SaxOrganisationEvent.Column.EventType_Desc:
|
||||
SetOrganisationEventColDfn(columnDfn, "Type", 120, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTypeCode, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.About:
|
||||
SetOrganisationEventColDfn(columnDfn, "About", 200, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_About);
|
||||
case SaxOrganisationEvent.Column.Summary:
|
||||
SetOrganisationEventColDfn(columnDfn, "Summary", 200, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Details:
|
||||
SetOrganisationEventColDfn(columnDfn, "Details", 200, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.PublishedAt_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Published", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_PublishedAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
@@ -453,11 +458,11 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_RegionIdCountry, aliasOrganisationEvent) + " IN (" + regionIdsIncluded + ")");
|
||||
|
||||
// About.
|
||||
if (!StringUtil.IsEmpty(prm.AboutPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_About, aliasOrganisationEvent) + " Like '%" + DbQuery.FormatForLike(prm.AboutPartial, true) + "%'");
|
||||
// Summary.
|
||||
if (!StringUtil.IsEmpty(prm.SummaryPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent) + " Like '%" + DbQuery.FormatForLike(prm.SummaryPartial, true) + "%'");
|
||||
|
||||
// Article.
|
||||
// Event filter.
|
||||
if (!StringUtil.IsEmpty(prm.EventFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
@@ -467,7 +472,8 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> articleFilter = new List<String>();
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_About, aliasOrganisationEvent) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details, aliasOrganisationEvent) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
@@ -606,8 +612,10 @@ namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.EventTypeCode) || columns.HasId(SaxOrganisationEvent.Column.EventType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTypeCode, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.About))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_About, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Summary))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Details))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.PublishedAt_Date) || columns.HasId(SaxOrganisationEvent.Column.PublishedAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_PublishedAt, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.ExpiresAt_Date) || columns.HasId(SaxOrganisationEvent.Column.ExpiresAt_DateTime))
|
||||
|
||||
Reference in New Issue
Block a user