This commit is contained in:
@@ -15,6 +15,6 @@ namespace AyaNova.PickList
|
||||
AyaType DefaultListObjectType { get; set; }
|
||||
//Default / STOCK DataListView when none is specified
|
||||
string DefaultTemplate { get; set; }
|
||||
List<string> GetFieldListFromTemplate(JArray listViewArray);
|
||||
List<string> GetFieldListFromTemplate(JArray listViewArray);
|
||||
}
|
||||
}
|
||||
7
server/AyaNova/PickList/IAyaPickListVariant.cs
Normal file
7
server/AyaNova/PickList/IAyaPickListVariant.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace AyaNova.PickList
|
||||
{
|
||||
internal interface IAyaPickListVariant
|
||||
{
|
||||
string GetVariantCriteria(string variant);
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ namespace AyaNova.PickList
|
||||
internal static class PickListFetcher
|
||||
{
|
||||
internal static async Task<List<NameIdActiveItem>> GetResponseAsync(IAyaPickList PickList, string autoCompleteQuery,
|
||||
string tagSpecificQuery, bool includeInactive, long preId, AyContext ct, ILogger log)
|
||||
string tagSpecificQuery, bool includeInactive, long preId, string variant, AyContext ct, ILogger log)
|
||||
{
|
||||
|
||||
//Sort out effective Template
|
||||
@@ -34,7 +34,7 @@ namespace AyaNova.PickList
|
||||
List<string> TemplateColumnNames = PickList.GetFieldListFromTemplate(jTemplate);
|
||||
|
||||
//BUILD THE QUERY
|
||||
var q = PickListSqlBuilder.Build(PickList, TemplateColumnNames, autoCompleteQuery, tagSpecificQuery, includeInactive, preId);
|
||||
var q = PickListSqlBuilder.Build(PickList, TemplateColumnNames, autoCompleteQuery, tagSpecificQuery, includeInactive, preId, variant);
|
||||
|
||||
//RETURN OBJECTS
|
||||
var ret = new List<NameIdActiveItem>();
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace AyaNova.PickList
|
||||
const int MAXIMUM_RESULT_COUNT = 100;
|
||||
|
||||
//Build the query for a picklist request
|
||||
internal static string Build(IAyaPickList pickList, List<string> templateColumnNames, string autoCompleteQuery, string tagSpecificQuery, bool IncludeInactive, long preId)
|
||||
internal static string Build(IAyaPickList pickList, List<string> templateColumnNames, string autoCompleteQuery, string tagSpecificQuery, bool IncludeInactive, long preId, string variant)
|
||||
{
|
||||
|
||||
//determine this in advance as it will be used in a loop later
|
||||
@@ -44,6 +44,14 @@ namespace AyaNova.PickList
|
||||
string TagSpecificWhereFragment = string.Empty;
|
||||
string PredefinedOnlyWhereFragment = string.Empty;
|
||||
|
||||
string VariantWhereFragment = string.Empty;
|
||||
bool HasVariantWhereFragment = false;
|
||||
if (!string.IsNullOrWhiteSpace(variant) && pickList is IAyaPickListVariant)
|
||||
{
|
||||
VariantWhereFragment = ((IAyaPickListVariant)pickList).GetVariantCriteria(variant);
|
||||
HasVariantWhereFragment = !string.IsNullOrWhiteSpace(VariantWhereFragment);
|
||||
}
|
||||
|
||||
//PROCESS ROW ID "VALUE" COLUMN
|
||||
//
|
||||
AyaPickListFieldDefinition rowIdColumn = pickList.ColumnDefinitions.FirstOrDefault(z => z.IsRowId == true);
|
||||
@@ -230,10 +238,15 @@ namespace AyaNova.PickList
|
||||
|
||||
//WHERE
|
||||
//there is a condition where there is no where (inactive=true and no query of any kind)
|
||||
if (preId > 0 || lWhere.Count > 0 || HasTagSpecificQuery || IncludeInactive == false)
|
||||
if (preId > 0 || lWhere.Count > 0 || HasTagSpecificQuery || HasVariantWhereFragment || IncludeInactive == false)
|
||||
{
|
||||
sb.Append(" where ");
|
||||
|
||||
if (HasVariantWhereFragment)
|
||||
{
|
||||
sb.Append($"({VariantWhereFragment}) and ");
|
||||
}
|
||||
|
||||
if (HasTagSpecificQuery)
|
||||
{
|
||||
sb.Append(TagSpecificWhereFragment);
|
||||
|
||||
@@ -3,7 +3,7 @@ using Newtonsoft.Json.Linq;
|
||||
using AyaNova.Biz;
|
||||
namespace AyaNova.PickList
|
||||
{
|
||||
internal class UserPickList : AyaPickList
|
||||
internal class UserPickList : AyaPickList, IAyaPickListVariant
|
||||
{
|
||||
public UserPickList()
|
||||
{
|
||||
@@ -62,5 +62,17 @@ namespace AyaNova.PickList
|
||||
SqlValueColumnName = "auser.tags"
|
||||
});
|
||||
}
|
||||
|
||||
public string GetVariantCriteria(string variant)
|
||||
{
|
||||
switch (variant)
|
||||
{
|
||||
case "inside":
|
||||
return $"auser.usertype!={(int)UserType.Customer} and auser.usertype!={(int)UserType.HeadOffice}";
|
||||
case "outside":
|
||||
return $"auser.usertype={(int)UserType.Customer} or auser.usertype={(int)UserType.HeadOffice}";
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}//eoc
|
||||
}//eons
|
||||
Reference in New Issue
Block a user