From 34a4c31249397f0d94f02f17b4ecd64069c12561 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 27 Jan 2021 23:32:05 +0000 Subject: [PATCH] --- .../core-list-graph-datatable-filter-sort.txt | 4 +- ...er.cs => DataListSavedFilterController.cs} | 60 +++++++++---------- server/AyaNova/DataList/AyaDataList.cs | 2 +- .../DataList/DataListSqlSelectBuilder.cs | 8 +-- server/AyaNova/biz/AyaType.cs | 2 +- .../AyaNova/biz/BizObjectExistsInDatabase.cs | 4 +- server/AyaNova/biz/BizObjectFactory.cs | 4 +- server/AyaNova/biz/BizRoles.cs | 2 +- server/AyaNova/biz/DataListViewBiz.cs | 44 +++++++------- server/AyaNova/models/AyContext.cs | 2 +- ...DataListView.cs => DataListSavedFilter.cs} | 8 ++- server/AyaNova/resource/de.json | 2 +- server/AyaNova/resource/en.json | 2 +- server/AyaNova/resource/es.json | 2 +- server/AyaNova/resource/fr.json | 2 +- server/AyaNova/util/AySchema.cs | 6 +- server/AyaNova/util/Seeder.cs | 53 ++++++++-------- 17 files changed, 106 insertions(+), 101 deletions(-) rename server/AyaNova/Controllers/{DataListViewController.cs => DataListSavedFilterController.cs} (73%) rename server/AyaNova/models/{DataListView.cs => DataListSavedFilter.cs} (64%) diff --git a/devdocs/specs/core-list-graph-datatable-filter-sort.txt b/devdocs/specs/core-list-graph-datatable-filter-sort.txt index 27473447..be12ea1b 100644 --- a/devdocs/specs/core-list-graph-datatable-filter-sort.txt +++ b/devdocs/specs/core-list-graph-datatable-filter-sort.txt @@ -1,5 +1,7 @@ LIST / GRAPH FILTERING SORTING AND COLUMN RETURNED +##### DEPRECATED ALL LISTVIEW STUFF FOR NEW SPLIT METHOD SOME OF BELOW IS OUTDATED WHERE IT DEALS WITH THE "LISTVIEW" + DATALIST A dataList is a raw source of data for returning to client All below is based on a datalist which is a predefined list of fields, rights and some query info for joins etc @@ -27,7 +29,7 @@ Users can select a datalistview for a picklist DataList which will in turn affec Users will get the default hard coded DataListView built into the DataList that is specified for that picklist unless it's changed to an alternative datalistview There is a default PickList format and a default DataTable format pre-defined and hard coded at the server with each dataList definition object -If the client isn't using a particular dataListView it MUST send the ListView json as empty string or omit it entirely. +If the client isn't using a particular dataListView it MUST send the Lis tView json as empty string or omit it entirely. This will instruct the server to use the pre-defined format instead JSON DataListView format: diff --git a/server/AyaNova/Controllers/DataListViewController.cs b/server/AyaNova/Controllers/DataListSavedFilterController.cs similarity index 73% rename from server/AyaNova/Controllers/DataListViewController.cs rename to server/AyaNova/Controllers/DataListSavedFilterController.cs index 7588275e..67008813 100644 --- a/server/AyaNova/Controllers/DataListViewController.cs +++ b/server/AyaNova/Controllers/DataListSavedFilterController.cs @@ -21,13 +21,13 @@ namespace AyaNova.Api.Controllers /// [ApiController] [ApiVersion("8.0")] - [Route("api/v{version:apiVersion}/data-list-view")] + [Route("api/v{version:apiVersion}/data-list-filter")] [Produces("application/json")] [Authorize] - public class DataListViewController : ControllerBase + public class DataListSavedFilterController : ControllerBase { private readonly AyContext ct; - private readonly ILogger log; + private readonly ILogger log; private readonly ApiServerState serverState; @@ -37,7 +37,7 @@ namespace AyaNova.Api.Controllers /// /// /// - public DataListViewController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) + public DataListSavedFilterController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) { ct = dbcontext; log = logger; @@ -46,18 +46,18 @@ namespace AyaNova.Api.Controllers /// - /// Get full DataListView object + /// Get full DataListSavedFilter object /// /// - /// A single DataListView + /// A single DataListSavedFilter [HttpGet("{id}")] - public async Task GetDataListView([FromRoute] long id) + public async Task GetDataListSavedFilter([FromRoute] long id) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType)) return StatusCode(403, new ApiNotAuthorizedResponse()); @@ -75,11 +75,11 @@ namespace AyaNova.Api.Controllers /// - /// Get DataListView list + /// Get DataListSavedFilter list /// /// List of public or owned data list views listKey provided - [HttpGet("viewlist", Name = nameof(DataListViewList))] - public async Task DataListViewList([FromQuery] string ListKey) + [HttpGet("list", Name = nameof(DataListSavedFilterList))] + public async Task DataListSavedFilterList([FromQuery] string ListKey) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -88,7 +88,7 @@ namespace AyaNova.Api.Controllers return BadRequest(new ApiErrorResponse(ModelState)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); var l = await biz.GetViewListAsync(ListKey); return Ok(ApiOkResponse.Response(l)); @@ -97,13 +97,13 @@ namespace AyaNova.Api.Controllers /// - /// Put (update) DataListView + /// Put (update) DataListSavedFilter /// /// /// /// [HttpPut("{id}")] - public async Task PutDataListView([FromRoute] long id, [FromBody] DataListView inObj) + public async Task PutDataListSavedFilter([FromRoute] long id, [FromBody] DataListSavedFilter inObj) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -112,7 +112,7 @@ namespace AyaNova.Api.Controllers return BadRequest(new ApiErrorResponse(ModelState)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); var o = await biz.GetAsync(id, false); if (o == null) @@ -138,19 +138,19 @@ namespace AyaNova.Api.Controllers /// - /// Create DataListView + /// Create DataListSavedFilter /// /// /// From route path /// [HttpPost] - public async Task PostDataListView([FromBody] DataListView inObj, ApiVersion apiVersion) + public async Task PostDataListSavedFilter([FromBody] DataListSavedFilter inObj, ApiVersion apiVersion) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); //check roles if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType)) @@ -160,16 +160,16 @@ namespace AyaNova.Api.Controllers return BadRequest(new ApiErrorResponse(ModelState)); //Create and validate - DataListView o = await biz.CreateAsync(inObj); + DataListSavedFilter o = await biz.CreateAsync(inObj); if (o == null) return BadRequest(new ApiErrorResponse(biz.Errors)); else - return CreatedAtAction(nameof(DataListViewController.GetDataListView), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + return CreatedAtAction(nameof(DataListSavedFilterController.GetDataListSavedFilter), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } /// - /// Duplicate DataListView + /// Duplicate DataListSavedFilter /// /// Create a duplicate of this items id /// From route path @@ -181,7 +181,7 @@ namespace AyaNova.Api.Controllers return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); //If a user has change roles if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType)) @@ -195,21 +195,21 @@ namespace AyaNova.Api.Controllers return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); //Create and validate - DataListView o = await biz.DuplicateAsync(oSrc); + DataListSavedFilter o = await biz.DuplicateAsync(oSrc); if (o == null) return BadRequest(new ApiErrorResponse(biz.Errors)); else - return CreatedAtAction(nameof(DataListViewController.GetDataListView), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + return CreatedAtAction(nameof(DataListSavedFilterController.GetDataListSavedFilter), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } /// - /// Delete DataListView + /// Delete DataListSavedFilter /// /// /// Ok [HttpDelete("{id}")] - public async Task DeleteDataListView([FromRoute] long id) + public async Task DeleteDataListSavedFilter([FromRoute] long id) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -218,7 +218,7 @@ namespace AyaNova.Api.Controllers return BadRequest(new ApiErrorResponse(ModelState)); //Instantiate the business object handler - DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); var o = await biz.GetAsync(id, false); if (o == null) @@ -237,16 +237,16 @@ namespace AyaNova.Api.Controllers /// Get default ListView for DataList /// /// Key of an existing DataList - /// A single DataListView + /// A single DataListSavedFilter [HttpGet("default/{dataListKey}")] - public ActionResult GetDefaultDataListView([FromRoute] string dataListKey) + public ActionResult GetDefaultDataListSavedFilter([FromRoute] string dataListKey) { throw new System.NotSupportedException("NEEDS REPLACEMENT WITH NEW SYSTEM"); // if (!serverState.IsOpen) // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); // //Instantiate the business object handler - // DataListViewBiz biz = DataListViewBiz.GetBiz(ct, HttpContext); + // DataListSavedFilterBiz biz = DataListSavedFilterBiz.GetBiz(ct, HttpContext); // if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType)) // return StatusCode(403, new ApiNotAuthorizedResponse()); diff --git a/server/AyaNova/DataList/AyaDataList.cs b/server/AyaNova/DataList/AyaDataList.cs index 97995799..dec5ba03 100644 --- a/server/AyaNova/DataList/AyaDataList.cs +++ b/server/AyaNova/DataList/AyaDataList.cs @@ -88,7 +88,7 @@ namespace AyaNova.DataList //Developers little helper if (o == null) { - throw new System.ArgumentNullException($"DEV ERROR in AyaDataList::GenerateListColumnsJSONFromListView - field {s} specified in ListView was NOT found in ObjectFields list"); + throw new System.ArgumentNullException($"DEV ERROR in AyaDataList::GenerateReturnListColumns - field {s} specified in columns was NOT found in ObjectFields list"); } #endif diff --git a/server/AyaNova/DataList/DataListSqlSelectBuilder.cs b/server/AyaNova/DataList/DataListSqlSelectBuilder.cs index 430561f6..99aa0c70 100644 --- a/server/AyaNova/DataList/DataListSqlSelectBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlSelectBuilder.cs @@ -12,8 +12,8 @@ namespace AyaNova.DataList internal static class DataListSqlSelectBuilder { - //Build the SELECT portion of a list query based on the ListView fields - internal static SqlSelectBuilderResult Build(List objectFieldsList, List listViewFieldList) + //Build the SELECT portion of a list query based on the columns + internal static SqlSelectBuilderResult Build(List objectFieldsList, List columns) { StringBuilder sb = new StringBuilder(); sb.Append("SELECT "); @@ -26,14 +26,14 @@ namespace AyaNova.DataList int nOrdinal = 0; var firstColumnAdded = false; - foreach (string ColumnName in listViewFieldList) + foreach (string ColumnName in columns) { AyaDataListFieldDefinition o = objectFieldsList.FirstOrDefault(z => z.FieldKey == ColumnName); #if (DEBUG) //Developers little helper if (o == null) { - throw new System.ArgumentNullException($"## DEV ERROR in DataListSqlSelectBuilder.cs:Build() field {ColumnName} specified in datalist view was NOT found in the data list's ObjectFields list, a defined fieldkey name differs from the ListView field key name"); + throw new System.ArgumentNullException($"## DEV ERROR in DataListSqlSelectBuilder.cs:Build() field {ColumnName} specified in columns was NOT found in the data list's ObjectFields list, a defined fieldkey name differs from the columns key name"); } #endif if (o != null) diff --git a/server/AyaNova/biz/AyaType.cs b/server/AyaNova/biz/AyaType.cs index 9a7ff527..6a426b30 100644 --- a/server/AyaNova/biz/AyaType.cs +++ b/server/AyaNova/biz/AyaType.cs @@ -45,7 +45,7 @@ namespace AyaNova.Biz [CoreBizObject] LoanUnit = 16, FileAttachment = 17, - DataListView = 18, + DataListSavedFilter = 18, FormCustom = 19, [CoreBizObject] Part = 20, diff --git a/server/AyaNova/biz/BizObjectExistsInDatabase.cs b/server/AyaNova/biz/BizObjectExistsInDatabase.cs index 4a193481..af535044 100644 --- a/server/AyaNova/biz/BizObjectExistsInDatabase.cs +++ b/server/AyaNova/biz/BizObjectExistsInDatabase.cs @@ -26,8 +26,8 @@ namespace AyaNova.Biz return true; case AyaType.FileAttachment: return await ct.FileAttachment.AnyAsync(z => z.Id == id); - case AyaType.DataListView: - return await ct.DataListView.AnyAsync(z => z.Id == id); + case AyaType.DataListSavedFilter: + return await ct.DataListSavedFilter.AnyAsync(z => z.Id == id); case AyaType.FormCustom: return await ct.FormCustom.AnyAsync(z => z.Id == id); case AyaType.User: diff --git a/server/AyaNova/biz/BizObjectFactory.cs b/server/AyaNova/biz/BizObjectFactory.cs index 922dd33c..74b37b4d 100644 --- a/server/AyaNova/biz/BizObjectFactory.cs +++ b/server/AyaNova/biz/BizObjectFactory.cs @@ -24,8 +24,8 @@ namespace AyaNova.Biz return new TrialBiz(ct, userId, roles); case AyaType.Translation: return new TranslationBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles); - case AyaType.DataListView: - return new DataListViewBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles); + case AyaType.DataListSavedFilter: + return new DataListSavedFilterBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles); case AyaType.FormCustom: return new FormCustomBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles); case AyaType.Widget: diff --git a/server/AyaNova/biz/BizRoles.cs b/server/AyaNova/biz/BizRoles.cs index 18113b86..f5749a96 100644 --- a/server/AyaNova/biz/BizRoles.cs +++ b/server/AyaNova/biz/BizRoles.cs @@ -694,7 +694,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////// //DATALISTFILTER // - roles.Add(AyaType.DataListView, new BizRoleSet() + roles.Add(AyaType.DataListSavedFilter, new BizRoleSet() { Change = AuthorizationRoles.BizAdminFull, ReadFullRecord = AuthorizationRoles.All diff --git a/server/AyaNova/biz/DataListViewBiz.cs b/server/AyaNova/biz/DataListViewBiz.cs index e49915aa..741a7a8f 100644 --- a/server/AyaNova/biz/DataListViewBiz.cs +++ b/server/AyaNova/biz/DataListViewBiz.cs @@ -13,24 +13,24 @@ namespace AyaNova.Biz { - internal class DataListViewBiz : BizObject + internal class DataListSavedFilterBiz : BizObject { - internal DataListViewBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) + internal DataListSavedFilterBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) { ct = dbcontext; UserId = currentUserId; UserTranslationId = userTranslationId; CurrentUserRoles = UserRoles; - BizType = AyaType.DataListView; + BizType = AyaType.DataListSavedFilter; } - internal static DataListViewBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null) + internal static DataListSavedFilterBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null) { if (httpContext != null) - return new DataListViewBiz(ct, UserIdFromContext.Id(httpContext.Items), UserTranslationIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items)); + return new DataListSavedFilterBiz(ct, UserIdFromContext.Id(httpContext.Items), UserTranslationIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items)); else - return new DataListViewBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull); + return new DataListSavedFilterBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull); } @@ -39,14 +39,14 @@ namespace AyaNova.Biz //EXISTS internal async Task ExistsAsync(long id) { - return await ct.DataListView.AnyAsync(z => z.Id == id); + return await ct.DataListSavedFilter.AnyAsync(z => z.Id == id); } //////////////////////////////////////////////////////////////////////////////////////////////// //CREATE - internal async Task CreateAsync(DataListView inObj) + internal async Task CreateAsync(DataListSavedFilter inObj) { await ValidateAsync(inObj, true); if (HasErrors) @@ -54,11 +54,11 @@ namespace AyaNova.Biz else { //do stuff with datafilter - DataListView outObj = inObj; + DataListSavedFilter outObj = inObj; outObj.UserId = UserId; - await ct.DataListView.AddAsync(outObj); + await ct.DataListSavedFilter.AddAsync(outObj); await ct.SaveChangesAsync(); //Handle child and associated items: @@ -80,10 +80,10 @@ namespace AyaNova.Biz //DUPLICATE // - internal async Task DuplicateAsync(DataListView dbObject) + internal async Task DuplicateAsync(DataListSavedFilter dbObject) { - DataListView outObj = new DataListView(); + DataListSavedFilter outObj = new DataListSavedFilter(); CopyObject.Copy(dbObject, outObj); //generate unique name string newUniqueName = string.Empty; @@ -92,7 +92,7 @@ namespace AyaNova.Biz do { newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255); - NotUnique = await ct.DataListView.AnyAsync(z => z.Name == newUniqueName); + NotUnique = await ct.DataListSavedFilter.AnyAsync(z => z.Name == newUniqueName); } while (NotUnique); outObj.Name = newUniqueName; outObj.Id = 0; @@ -100,7 +100,7 @@ namespace AyaNova.Biz - await ct.DataListView.AddAsync(outObj); + await ct.DataListSavedFilter.AddAsync(outObj); await ct.SaveChangesAsync(); //Handle child and associated items: @@ -114,10 +114,10 @@ namespace AyaNova.Biz /// GET //Get one - internal async Task GetAsync(long fetchId, bool logTheGetEvent = true) + internal async Task GetAsync(long fetchId, bool logTheGetEvent = true) { //This is simple so nothing more here, but often will be copying to a different output object or some other ops - var ret = await ct.DataListView.SingleOrDefaultAsync(z => z.Id == fetchId && (z.Public == true || z.UserId == UserId)); + var ret = await ct.DataListSavedFilter.SingleOrDefaultAsync(z => z.Id == fetchId && (z.Public == true || z.UserId == UserId)); if (logTheGetEvent && ret != null) { //Log @@ -135,7 +135,7 @@ namespace AyaNova.Biz List items = new List(); if (!string.IsNullOrWhiteSpace(listKey)) { - items = await ct.DataListView + items = await ct.DataListSavedFilter .AsNoTracking() .Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId)) .OrderBy(z => z.Name) @@ -157,7 +157,7 @@ namespace AyaNova.Biz // //put - internal async Task PutAsync(DataListView dbObject, DataListView inObj) + internal async Task PutAsync(DataListSavedFilter dbObject, DataListSavedFilter inObj) { //preserve the owner ID if none was specified if (inObj.UserId == 0) @@ -186,7 +186,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //DELETE // - internal async Task DeleteAsync(DataListView dbObject) + internal async Task DeleteAsync(DataListSavedFilter dbObject) { //Determine if the object can be deleted, do the deletion tentatively //Probably also in here deal with tags and associated search text etc @@ -196,7 +196,7 @@ namespace AyaNova.Biz if (HasErrors) return false; - ct.DataListView.Remove(dbObject); + ct.DataListSavedFilter.Remove(dbObject); await ct.SaveChangesAsync(); //Delete sibling objects @@ -217,7 +217,7 @@ namespace AyaNova.Biz // //Can save or update? - private async Task ValidateAsync(DataListView inObj, bool isNew) + private async Task ValidateAsync(DataListSavedFilter inObj, bool isNew) { //UserId required @@ -238,7 +238,7 @@ namespace AyaNova.Biz if (!PropertyHasErrors("Name")) { //Use Any command is efficient way to check existance, it doesn't return the record, just a true or false - if (await ct.DataListView.AnyAsync(z => z.Name == inObj.Name && z.Id != inObj.Id)) + if (await ct.DataListSavedFilter.AnyAsync(z => z.Name == inObj.Name && z.Id != inObj.Id)) { AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name"); } diff --git a/server/AyaNova/models/AyContext.cs b/server/AyaNova/models/AyContext.cs index 1aed71d4..a7bc90e6 100644 --- a/server/AyaNova/models/AyContext.cs +++ b/server/AyaNova/models/AyContext.cs @@ -22,7 +22,7 @@ namespace AyaNova.Models public virtual DbSet OpsJobLog { get; set; } public virtual DbSet Translation { get; set; } public virtual DbSet TranslationItem { get; set; } - public virtual DbSet DataListView { get; set; } + public virtual DbSet DataListSavedFilter { get; set; } public virtual DbSet Tag { get; set; } public virtual DbSet FormCustom { get; set; } public virtual DbSet PickListTemplate { get; set; } diff --git a/server/AyaNova/models/DataListView.cs b/server/AyaNova/models/DataListSavedFilter.cs similarity index 64% rename from server/AyaNova/models/DataListView.cs rename to server/AyaNova/models/DataListSavedFilter.cs index 37c7afc9..bbd7fc8c 100644 --- a/server/AyaNova/models/DataListView.cs +++ b/server/AyaNova/models/DataListSavedFilter.cs @@ -3,8 +3,9 @@ using System.ComponentModel.DataAnnotations; namespace AyaNova.Models { -//TODO: Need to split this into a personal column order set and a personal filter collection - public class DataListView + //this is a hiearchical object so saving as a JSON fragment still best option + + public class DataListSavedFilter { public long Id { get; set; } public uint Concurrency { get; set; } @@ -17,7 +18,8 @@ namespace AyaNova.Models public bool Public { get; set; } [Required, MaxLength(255)] public string ListKey { get; set; }//max 255 characters ascii set - public string ListView { get; set; }//JSON ListView object + public string Filter { get; set; }//JSON filter object representing DataListFilterOption + //filter:[{column:"PartPartNumber",any:true/false,items:[{op: "=",value: "400735"}]}] } diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index 3f7c95c5..e86b2d8c 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -1753,7 +1753,7 @@ "ReviewCustom15": "Angepasstes Feld 15", "ReviewCustom16": "Angepasstes Feld 16", "UserSettings": "Benutzereinstellungen", - "DataListView": "Datenlistenansicht", + "DataListSavedFilter": "Listenfilter", "Include": "Umfassen", "Sort": "Sortieren", "Filter": "Filter", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index 85746ebd..f0aec91a 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -1753,7 +1753,7 @@ "ReviewCustom15": "Custom15", "ReviewCustom16": "Custom16", "UserSettings": "User settings", - "DataListView": "List view", + "DataListSavedFilter": "List filter", "Include": "Include", "Sort": "Sort", "Filter": "Filter", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index 88ff3ca7..4d9fca93 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -1753,7 +1753,7 @@ "ReviewCustom15": "Campo personalizado 15", "ReviewCustom16": "Campo personalizado 16", "UserSettings": "Configuración de usuario", - "DataListView": "Vista de lista de datos", + "DataListSavedFilter": "Filtro de lista", "Include": "Incluir", "Sort": "Ordenar", "Filter": "Filtro", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 4b240ab3..848e6afc 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -1753,7 +1753,7 @@ "ReviewCustom15": "Champ personnalisé 15", "ReviewCustom16": "Champ personnalisé 16", "UserSettings": "Paramètres utilisateur", - "DataListView": "Affichage de la liste des données", + "DataListSavedFilter": "Filtre de liste", "Include": "Inclure", "Sort": "Trier", "Filter": "Filtre", diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index b4e3cbce..9094d360 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -346,7 +346,7 @@ BEGIN when 15 then aytable = 'aheadoffice'; when 16 then aytable = 'aloanunit'; when 17 then aytable = 'afileattachment'; aynamecolumn ='displayfilename'; - when 18 then aytable = 'adatalistview'; + when 18 then aytable = 'adatalistsavedfilter'; when 19 then aytable = 'aformcustom'; aynamecolumn = 'formkey'; when 20 then aytable = 'apart'; aynamecolumn ='partnumber'; when 21 then aytable = 'apm'; aynamecolumn ='serial'; @@ -509,8 +509,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); { LogUpdateMessage(log); - await ExecQueryAsync("CREATE TABLE adatalistview (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, userid BIGINT NOT NULL, name TEXT NOT NULL UNIQUE, public BOOL NOT NULL," + - "listkey VARCHAR(255) NOT NULL, listview TEXT)"); + await ExecQueryAsync("CREATE TABLE adatalistsavedfilter (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, userid BIGINT NOT NULL, name TEXT NOT NULL UNIQUE, public BOOL NOT NULL," + + "listkey VARCHAR(255) NOT NULL, filter TEXT)"); await SetSchemaLevelAsync(++currentSchema); } diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index e057550c..95f13945 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -166,34 +166,35 @@ namespace AyaNova.Util await FormCustomBiz.GetBiz(ct).CreateAsync(fc); } - //Create a couple of DataListView's for development and testing - { - var dlv = new DataListView() - { - Name = "Name starts with generic", - UserId = 1, - ListKey = "TestWidgetDataList", - Public = true, - ListView = @"[{""fld"": ""widgetname"",""filter"": {""any"":false,""items"": [{""op"": ""%-"",""value"": ""Generic""}]}}]" - }; + //TODO: Add this back in or...fuck it? + // //Create a couple of DataListView's for development and testing + // { + // var dlv = new DataListSavedFilter() + // { + // Name = "Name starts with generic", + // UserId = 1, + // ListKey = "TestWidgetDataList", + // Public = true, + // ListView = @"[{""fld"": ""widgetname"",""filter"": {""any"":false,""items"": [{""op"": ""%-"",""value"": ""Generic""}]}}]" + // }; - //Create and save to db - using (var ct = ServiceProviderProvider.DBContext) - await DataListViewBiz.GetBiz(ct).CreateAsync(dlv); + // //Create and save to db + // using (var ct = ServiceProviderProvider.DBContext) + // await DataListSavedFilterBiz.GetBiz(ct).CreateAsync(dlv); - dlv = new DataListView() - { - Name = "Awesome (lots of fields)", - UserId = 1, - ListKey = "TestWidgetDataList", - Public = true, - ListView = @"[{""fld"": ""widgetname"",""filter"": {""any"":false,""items"": [{""op"": ""%-"",""value"": ""Awesome""}]}},{""fld"":""widgetserial""},{""fld"":""widgetdollaramount""},{""fld"":""widgetusertype""},{""fld"":""widgetstartdate""},{""fld"":""widgetactive""},{""fld"":""username""},{""fld"":""widgettags""},{""fld"":""widgetcustom1""},{""fld"":""widgetcustom2""}]" - }; + // dlv = new DataListSavedFilter() + // { + // Name = "Awesome (lots of fields)", + // UserId = 1, + // ListKey = "TestWidgetDataList", + // Public = true, + // ListView = @"[{""fld"": ""widgetname"",""filter"": {""any"":false,""items"": [{""op"": ""%-"",""value"": ""Awesome""}]}},{""fld"":""widgetserial""},{""fld"":""widgetdollaramount""},{""fld"":""widgetusertype""},{""fld"":""widgetstartdate""},{""fld"":""widgetactive""},{""fld"":""username""},{""fld"":""widgettags""},{""fld"":""widgetcustom1""},{""fld"":""widgetcustom2""}]" + // }; - //Create and save to db - using (var ct = ServiceProviderProvider.DBContext) - await DataListViewBiz.GetBiz(ct).CreateAsync(dlv); - } + // //Create and save to db + // using (var ct = ServiceProviderProvider.DBContext) + // await DataListSavedFilterBiz.GetBiz(ct).CreateAsync(dlv); + // } //Seed special test data for integration testing @@ -1608,7 +1609,7 @@ namespace AyaNova.Util //Add inventory into multiple warehouses for testing for (int y = 0; y < 3; y++) { - int WarehouseNumber=y+1; + int WarehouseNumber = y + 1; //add opening inventory partInventory = await PartInventoryBizNess.CreateAsync(new dtPartInventory() { PartId = NewObject.Id, PartWarehouseId = WarehouseNumber, Quantity = OpeningInventoryLevel, Description = "New part opening inventory" });