From 740323c67df34114af8b401b7ecaf1602cdf081d Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 29 Jan 2021 21:40:08 +0000 Subject: [PATCH] --- .../AyaNova/DataList/CustomerNoteDataList.cs | 2 +- server/AyaNova/DataList/DataListFactory.cs | 6 +++--- server/AyaNova/DataList/DataListFetcher.cs | 5 ++++- .../DataList/DataListProcessingBase.cs | 4 ++-- .../DataListSqlFilterCriteriaBuilder.cs | 2 +- .../DataListSqlFilterOrderByBuilder.cs | 2 +- .../DataList/IDataListInternalCriteria.cs | 2 +- .../{IDataList.cs => IDataListProcessing.cs} | 4 ++-- server/AyaNova/DataList/InsideUserDataList.cs | 2 +- server/AyaNova/DataList/MemoDataList.cs | 2 +- .../AyaNova/DataList/OutsideUserDataList.cs | 2 +- .../AyaNova/DataList/PartInventoryDataList.cs | 2 +- .../PartInventoryTransactionsDataList.cs | 2 +- server/AyaNova/DataList/ReminderDataList.cs | 2 +- server/AyaNova/DataList/ReviewDataList.cs | 2 +- server/AyaNova/models/DataListColumnFilter.cs | 9 ++++++++ ...ataListBase.cs => DataListFilterOption.cs} | 18 ---------------- .../AyaNova/models/DataListProcessingBase.cs | 21 +++++++++++++++++++ .../AyaNova/models/DataListSelectedRequest.cs | 2 +- .../models/DataListSelectionOptions.cs | 2 +- server/AyaNova/models/DataListTableOptions.cs | 2 +- 21 files changed, 55 insertions(+), 40 deletions(-) rename server/AyaNova/DataList/{IDataList.cs => IDataListProcessing.cs} (86%) create mode 100644 server/AyaNova/models/DataListColumnFilter.cs rename server/AyaNova/models/{DataListBase.cs => DataListFilterOption.cs} (75%) create mode 100644 server/AyaNova/models/DataListProcessingBase.cs diff --git a/server/AyaNova/DataList/CustomerNoteDataList.cs b/server/AyaNova/DataList/CustomerNoteDataList.cs index 9bf1acf2..df424fab 100644 --- a/server/AyaNova/DataList/CustomerNoteDataList.cs +++ b/server/AyaNova/DataList/CustomerNoteDataList.cs @@ -82,7 +82,7 @@ namespace AyaNova.DataList } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); //ClientCriteria MUST be CustomerId diff --git a/server/AyaNova/DataList/DataListFactory.cs b/server/AyaNova/DataList/DataListFactory.cs index d8f9d0d3..5f4b41a1 100644 --- a/server/AyaNova/DataList/DataListFactory.cs +++ b/server/AyaNova/DataList/DataListFactory.cs @@ -11,10 +11,10 @@ namespace AyaNova.DataList //Instantiate list object specified //this is safe as it's only attempting to load assemblies in the AyaNova.DataList namespace so can't attempt to instantiate some random object or nefarious object //returns null if doesn't exist - internal static IDataList GetAyaDataList(string ListKey) + internal static IDataListProcessing GetAyaDataList(string ListKey) { System.Reflection.Assembly ass = System.Reflection.Assembly.GetEntryAssembly(); - return ass.CreateInstance($"AyaNova.DataList.{ListKey}") as IDataList; + return ass.CreateInstance($"AyaNova.DataList.{ListKey}") as IDataListProcessing; } //List all the datalist types available @@ -27,7 +27,7 @@ namespace AyaNova.DataList foreach (System.Reflection.TypeInfo ti in ass.DefinedTypes) { - if (!ti.IsAbstract && ti.ImplementedInterfaces.Contains(typeof(IDataList))) + if (!ti.IsAbstract && ti.ImplementedInterfaces.Contains(typeof(IDataListProcessing))) { ret.Add(ti.Name); } diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index 2ee49204..1a8848a7 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -31,6 +31,9 @@ namespace AyaNova.DataList if (!userRoles.HasAnyFlags(DataList.AllowedRoles)) throw new System.UnauthorizedAccessException("User roles insufficient for this datalist"); + + //turn the DataListTableRequest into a + DataList.SetListOptionDefaultsIfNecessary(dataListTableOptions); @@ -258,7 +261,7 @@ namespace AyaNova.DataList // if (string.IsNullOrWhiteSpace(listView)) // listView = DataList.DefaultListView; - DataList.SetListOptionDefaultsIfNecessary(dataListSelectionOptions); + DataList.ProcessRequest(dataListSelectionOptions); // //parse the list view // var ListViewArray = JArray.Parse(listView); diff --git a/server/AyaNova/DataList/DataListProcessingBase.cs b/server/AyaNova/DataList/DataListProcessingBase.cs index d914c611..549b30ba 100644 --- a/server/AyaNova/DataList/DataListProcessingBase.cs +++ b/server/AyaNova/DataList/DataListProcessingBase.cs @@ -12,7 +12,7 @@ namespace AyaNova.DataList /// /// DataList object base class /// - internal abstract class DataListProcessingBase : IDataList + internal abstract class DataListProcessingBase : IDataListProcessing { //CoreBizObject add here //well, not here exactly but add a new DATALIST class if it will be displayed as a list anywhere in the UI or reported on @@ -40,7 +40,7 @@ namespace AyaNova.DataList public Dictionary DefaultSortBy { get; set; } //set defaults if not provided in listOptions - public void SetListOptionDefaultsIfNecessary(DataListBase listOptions) + public void ProcessRequest(Models.DataListProcessingBase listOptions) { //columns, filter and sortby could all be null if (listOptions.Filter == null) diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index d0140f45..563233ed 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -11,7 +11,7 @@ namespace AyaNova.DataList { public static class DataListSqlFilterCriteriaBuilder { - public static string DataFilterToSQLCriteria(List objectFieldsList, Models.DataListBase listOptions) + public static string DataFilterToSQLCriteria(List objectFieldsList, Models.DataListProcessingBase listOptions) { if (listOptions.Filter == null || listOptions.Filter.Count == 0) diff --git a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs index 2d6a3d73..e20e39bb 100644 --- a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs @@ -10,7 +10,7 @@ namespace AyaNova.DataList { - public static string DataFilterToSQLOrderBy(List objectFieldsList, Models.DataListBase listOptions) + public static string DataFilterToSQLOrderBy(List objectFieldsList, Models.DataListProcessingBase listOptions) { StringBuilder sb = new StringBuilder(); diff --git a/server/AyaNova/DataList/IDataListInternalCriteria.cs b/server/AyaNova/DataList/IDataListInternalCriteria.cs index 0b3aef3b..11b0428f 100644 --- a/server/AyaNova/DataList/IDataListInternalCriteria.cs +++ b/server/AyaNova/DataList/IDataListInternalCriteria.cs @@ -6,6 +6,6 @@ namespace AyaNova.DataList //Additional criteria for security or other reasons //hard coded into some lists (e.g. MemoDataList so users can't get other people's memos) //clientCriteria is additional criteria provided by client to list to process as it sees fit (e.g. CustomerNoteDataList requires customer id from client) - System.Collections.Generic.List DataListInternalCriteria(long currentUserId, AyaNova.Biz.AuthorizationRoles userRoles, Models.DataListBase dataListBase); + System.Collections.Generic.List DataListInternalCriteria(long currentUserId, AyaNova.Biz.AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase); } } \ No newline at end of file diff --git a/server/AyaNova/DataList/IDataList.cs b/server/AyaNova/DataList/IDataListProcessing.cs similarity index 86% rename from server/AyaNova/DataList/IDataList.cs rename to server/AyaNova/DataList/IDataListProcessing.cs index be643553..13cfc9ad 100644 --- a/server/AyaNova/DataList/IDataList.cs +++ b/server/AyaNova/DataList/IDataListProcessing.cs @@ -4,7 +4,7 @@ using AyaNova.Biz; using AyaNova.Models; namespace AyaNova.DataList { - internal interface IDataList + internal interface IDataListProcessing { //sql query from fragment with table joins et @@ -23,7 +23,7 @@ namespace AyaNova.DataList List DefaultColumns { get; set; } Dictionary DefaultSortBy { get; set; } - void SetListOptionDefaultsIfNecessary(Models.DataListBase listOptions); + void ProcessRequest(Models.DataListProcessingBase listOptions); Newtonsoft.Json.Linq.JArray GenerateReturnListColumns(List columns); // List GetFieldListFromListView(JArray listViewArray); diff --git a/server/AyaNova/DataList/InsideUserDataList.cs b/server/AyaNova/DataList/InsideUserDataList.cs index 8ed0ce63..32d6c2ae 100644 --- a/server/AyaNova/DataList/InsideUserDataList.cs +++ b/server/AyaNova/DataList/InsideUserDataList.cs @@ -115,7 +115,7 @@ namespace AyaNova.DataList }); } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/MemoDataList.cs b/server/AyaNova/DataList/MemoDataList.cs index 1a935039..cfe00db5 100644 --- a/server/AyaNova/DataList/MemoDataList.cs +++ b/server/AyaNova/DataList/MemoDataList.cs @@ -136,7 +136,7 @@ namespace AyaNova.DataList } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/OutsideUserDataList.cs b/server/AyaNova/DataList/OutsideUserDataList.cs index ef0dd782..9787240e 100644 --- a/server/AyaNova/DataList/OutsideUserDataList.cs +++ b/server/AyaNova/DataList/OutsideUserDataList.cs @@ -120,7 +120,7 @@ namespace AyaNova.DataList }); } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/PartInventoryDataList.cs b/server/AyaNova/DataList/PartInventoryDataList.cs index fe1a7984..4d62f3d6 100644 --- a/server/AyaNova/DataList/PartInventoryDataList.cs +++ b/server/AyaNova/DataList/PartInventoryDataList.cs @@ -116,7 +116,7 @@ namespace AyaNova.DataList } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/PartInventoryTransactionsDataList.cs b/server/AyaNova/DataList/PartInventoryTransactionsDataList.cs index d9eb8307..05f200a9 100644 --- a/server/AyaNova/DataList/PartInventoryTransactionsDataList.cs +++ b/server/AyaNova/DataList/PartInventoryTransactionsDataList.cs @@ -130,7 +130,7 @@ namespace AyaNova.DataList } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/ReminderDataList.cs b/server/AyaNova/DataList/ReminderDataList.cs index 6af42fc2..1f645c03 100644 --- a/server/AyaNova/DataList/ReminderDataList.cs +++ b/server/AyaNova/DataList/ReminderDataList.cs @@ -117,7 +117,7 @@ namespace AyaNova.DataList } //Ensure only current user can fetch their reminders - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); diff --git a/server/AyaNova/DataList/ReviewDataList.cs b/server/AyaNova/DataList/ReviewDataList.cs index 836f3741..7516b3c9 100644 --- a/server/AyaNova/DataList/ReviewDataList.cs +++ b/server/AyaNova/DataList/ReviewDataList.cs @@ -207,7 +207,7 @@ namespace AyaNova.DataList // return "[]";//this means effectively don't process this at all // } - public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListBase dataListBase) + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, Models.DataListProcessingBase dataListBase) { List ret = new List(); bool HasSupervisorRole = diff --git a/server/AyaNova/models/DataListColumnFilter.cs b/server/AyaNova/models/DataListColumnFilter.cs new file mode 100644 index 00000000..fcd1b71d --- /dev/null +++ b/server/AyaNova/models/DataListColumnFilter.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +namespace AyaNova.Models +{ + public class DataListColumnFilter + { + public string op { get; set; } + public string value { get; set; } + } +} diff --git a/server/AyaNova/models/DataListBase.cs b/server/AyaNova/models/DataListFilterOption.cs similarity index 75% rename from server/AyaNova/models/DataListBase.cs rename to server/AyaNova/models/DataListFilterOption.cs index b10fc1ba..9ded9b3a 100644 --- a/server/AyaNova/models/DataListBase.cs +++ b/server/AyaNova/models/DataListFilterOption.cs @@ -2,20 +2,7 @@ using System.Collections.Generic; namespace AyaNova.Models { - //common base class for data table display at client, reporting and mass bulk operations - public class DataListBase - { - public string DataListKey { get; set; } - public Dictionary SortBy { get; set; } - public List Filter { get; set; } - public string ClientCriteria { get; set; } - public DataListBase() - { - SortBy = new Dictionary(); - Filter = new List(); - } - } /* OLD EXAMPLE: @@ -52,9 +39,4 @@ namespace AyaNova.Models } } - public class DataListColumnFilter - { - public string op { get; set; } - public string value { get; set; } - } } diff --git a/server/AyaNova/models/DataListProcessingBase.cs b/server/AyaNova/models/DataListProcessingBase.cs new file mode 100644 index 00000000..4cab5bc8 --- /dev/null +++ b/server/AyaNova/models/DataListProcessingBase.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +namespace AyaNova.Models +{ + + //common base class for data table display at client, reporting and mass bulk operations + public class DataListProcessingBase + { + public string DataListKey { get; set; } + public Dictionary SortBy { get; set; } + public List Filter { get; set; } + public string ClientCriteria { get; set; } + + public DataListProcessingBase() + { + SortBy = new Dictionary(); + Filter = new List(); + } + } + + +} diff --git a/server/AyaNova/models/DataListSelectedRequest.cs b/server/AyaNova/models/DataListSelectedRequest.cs index 88903775..df1636f3 100644 --- a/server/AyaNova/models/DataListSelectedRequest.cs +++ b/server/AyaNova/models/DataListSelectedRequest.cs @@ -3,7 +3,7 @@ namespace AyaNova.Models { //Request version of selection request used by report and bulk ops //handles posts from client - public class DataListSelectedRequest : DataListBase + public class DataListSelectedRequest : DataListProcessingBase { public AyaType ObjectType { get; set; } public long[] SelectedRowIds { get; set; } diff --git a/server/AyaNova/models/DataListSelectionOptions.cs b/server/AyaNova/models/DataListSelectionOptions.cs index 5898744d..3ce2babd 100644 --- a/server/AyaNova/models/DataListSelectionOptions.cs +++ b/server/AyaNova/models/DataListSelectionOptions.cs @@ -5,7 +5,7 @@ namespace AyaNova.Models //Used to drive processes that rely on selections made at client from a datalist //either a preselected list of id's or a datalist key and listview filter object that can //be used to rehydrate a list of id's - public class DataListSelectionOptions : DataListBase + public class DataListSelectionOptions : DataListProcessingBase { public AyaType ObjectType { get; set; } public long[] SelectedRowIds { get; set; } diff --git a/server/AyaNova/models/DataListTableOptions.cs b/server/AyaNova/models/DataListTableOptions.cs index cec5fba9..17865093 100644 --- a/server/AyaNova/models/DataListTableOptions.cs +++ b/server/AyaNova/models/DataListTableOptions.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace AyaNova.Models { - public sealed class DataListTableOptions : DataListBase + public sealed class DataListTableOptions : DataListProcessingBase { public List Columns { get; set; } public const int MaxPageSize = 1000;