diff --git a/app/ayanova/src/components/inventorywidgetlist.vue b/app/ayanova/src/components/inventorywidgetlist.vue index c7a1b95d..a16e0e1d 100644 --- a/app/ayanova/src/components/inventorywidgetlist.vue +++ b/app/ayanova/src/components/inventorywidgetlist.vue @@ -60,10 +60,10 @@ export default { ltKeysRequired: [ "Widget", "WidgetList", - "WidgetName", + "CommonName", "WidgetSerial", "WidgetDollarAmount", - "WidgetActive", + "CommonActive", "WidgetRoles", "WidgetStartDate", "WidgetEndDate", @@ -88,12 +88,12 @@ export default { rowsPerPageText: "blah per blah", headers: [ { - text: this.lt("Widget"), + text: this.lt("CommonName"), value: "name" }, { text: this.lt("WidgetSerial"), value: "serial" }, { text: this.lt("WidgetDollarAmount"), value: "dollarAmount" }, - { text: this.lt("WidgetActive"), value: "active" }, + { text: this.lt("CommonActive"), value: "active" }, { text: this.lt("WidgetRoles"), value: "roles" }, { text: this.lt("WidgetStartDate"), value: "startDate" }, { text: this.lt("WidgetEndDate"), value: "endDate" } diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 70d9da58..829f41a3 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -6,10 +6,6 @@ Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTQ0NTU5NzAwIiwiZXhwIjoi ## IMMEDIATE ITEMS - WIDGET LIST - - ORDER BY??? - - Create test for it and ensure it's working and coded fully - User and any other getmany LISTS - replicate from widget list when above is done diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index aa97b4d1..6e231cde 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -143,6 +143,26 @@ namespace AyaNova.Biz return ret; } + + + public static FilterOptions FilterOptions(long localizeToLocaleId = 0) + { + //NOTE: All column names are lowercase to conform with Postgres AyaNova DB which uses lowercase for all identifiers + //Also all list keys are lower case for consistency + FilterOptions f = new FilterOptions("user"); + f. + AddField("name", "CommonName", AyDataType.Text). + AddField("active", "CommonActive", AyDataType.Bool). + AddField("tags", "Tags", AyDataType.Tags). + AddField("EmployeeNumber", "UserEmployeeNumber", AyDataType.Text). + AddField("notes", "WidgetNotes", AyDataType.Text); + + if (localizeToLocaleId != 0) + f.Localize(localizeToLocaleId); + return f; + } + + //get many (paged) internal async Task> GetManyAsync(IUrlHelper Url, string routeName, PagingOptions pagingOptions) { @@ -150,23 +170,62 @@ namespace AyaNova.Biz pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; - var items = await ct.User - .AsNoTracking() - .OrderBy(m => m.Id) - .Skip(pagingOptions.Offset.Value) - .Take(pagingOptions.Limit.Value) - .ToArrayAsync(); + // var items = await ct.User + // .AsNoTracking() + // .OrderBy(m => m.Id) + // .Skip(pagingOptions.Offset.Value) + // .Take(pagingOptions.Limit.Value) + // .ToArrayAsync(); + + // var totalRecordCount = await ct.User.CountAsync(); + // var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); + + //BUILD THE QUERY + //base query + var q = "SELECT *, xmin FROM AUSER "; + + //GET THE FILTER / SORT + if (pagingOptions.DataFilterId > 0) + { + var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == pagingOptions.DataFilterId); + + //BUILD WHERE AND APPEND IT + q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, UserBiz.FilterOptions(), UserId); + + //BUILD ORDER BY AND APPEND IT + q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); + } + else + { + //GET DEFAULT ORDER BY + q = q + FilterSqlOrderByBuilder.DefaultOrderBy(); + } + + +#pragma warning disable EF1000 + + var items = await ct.User + .AsNoTracking() + .FromSql(q) + .Skip(pagingOptions.Offset.Value) + .Take(pagingOptions.Limit.Value) + .ToArrayAsync(); + + + var totalRecordCount = await ct.User + .AsNoTracking() + .FromSql(q) + .CountAsync(); +#pragma warning restore EF1000 - var totalRecordCount = await ct.User.CountAsync(); - var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); var cleanedItems = new System.Object[] { }; foreach (User item in items) { cleanedItems.Append(CleanUserForReturn(item)); } - - + + var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); ApiPagedResponse pr = new ApiPagedResponse(cleanedItems, pageLinks); return pr; } @@ -735,9 +794,9 @@ namespace AyaNova.Biz //Copy values User i = new User(); - + //default owner id is manager account in RAVEN - i.OwnerId=1; + i.OwnerId = 1; i.Name = j["FirstName"].Value() + " " + j["LastName"].Value(); var Temp = j["UserType"].Value(); @@ -786,11 +845,11 @@ namespace AyaNova.Biz } //User options - i.UserOptions=new UserOptions(i.OwnerId); + i.UserOptions = new UserOptions(i.OwnerId); //TimeZone Offset //Note: can be null value if not set so need to check for that here specially - var tzo = j["TimeZoneOffset"].Value() ?? 0; + var tzo = j["TimeZoneOffset"].Value() ?? 0; i.UserOptions.TimeZoneOffset = tzo; diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index c2207f95..43040e1e 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -27,7 +27,7 @@ namespace AyaNova.Biz AddField("serial", "WidgetSerial", AyDataType.Integer). AddField("notes", "WidgetNotes", AyDataType.Text). AddField("dollaramount", "WidgetDollarAmount", AyDataType.Decimal). - AddField("active", "WidgetActive", AyDataType.Bool). + AddField("active", "CommonActive", AyDataType.Bool). AddField("startdate", "WidgetStartDate", AyDataType.Date). AddField("count", "WidgetCount", AyDataType.Integer). AddField("tags", "Tags", AyDataType.Tags). @@ -168,14 +168,7 @@ namespace AyaNova.Biz { pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; - - // var items = await ct.Widget - // .OrderBy(m => m.Id) - // .Skip(pagingOptions.Offset.Value) - // .Take(pagingOptions.Limit.Value) - // .ToArrayAsync(); - - + //BUILD THE QUERY //base query var q = "SELECT *, xmin FROM AWIDGET "; @@ -189,16 +182,7 @@ namespace AyaNova.Biz q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions(), UserId); //BUILD ORDER BY AND APPEND IT - q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); - - //TESTING: - // //TODO: remove this from production build - // //LOG THE CRIT AND QUERY - // ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("WidgetBiz::GetManyAsync"); - // log.LogInformation("Filter criteria:"); - // log.LogInformation(TheFilter.Filter); - // log.LogInformation("Generated SQL:"); - // log.LogInformation(q); + q = q + FilterSqlOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); } else { @@ -207,10 +191,6 @@ namespace AyaNova.Biz } - - - - #pragma warning disable EF1000 var items = await ct.Widget diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index c6ad71e1..54bae3cf 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -1436,7 +1436,6 @@ "WidgetSerial":"Seriennummer", "WidgetDollarAmount":"Betrag", "WidgetCount":"Anzahl", - "WidgetActive":"Aktiv", "WidgetRoles":"Rollen", "WidgetStartDate":"Startdatum", "WidgetEndDate":"Enddatum", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index 8703cba2..b24845f8 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -1435,7 +1435,6 @@ "WidgetSerial":"Serial #", "WidgetDollarAmount":"Price", "WidgetCount":"Count", - "WidgetActive":"Active", "WidgetRoles":"Roles", "WidgetStartDate":"Start", "WidgetEndDate":"End", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index a6434059..256934c7 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -1436,7 +1436,6 @@ "WidgetSerial":"Número de serie", "WidgetDollarAmount":"Importe", "WidgetCount":"Recuento", - "WidgetActive":"Activa", "WidgetRoles":"Funciones", "WidgetStartDate":"Fecha de comienzo", "WidgetEndDate":"Fecha de fin", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 022e8046..efe0593b 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -1435,7 +1435,6 @@ "WidgetSerial":"Numéro de série", "WidgetDollarAmount":"Montant", "WidgetCount":"Nombre", - "WidgetActive":"Actif", "WidgetRoles":"Rôles", "WidgetStartDate":"Date de début", "WidgetEndDate":"Date de fin",