From e1a4e047ed8d31b4682c11edcb38292444845343 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 2 Mar 2022 15:49:01 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/kpi/KPIFactory.cs | 2 + .../kpi/WorkOrderItemLaborQuantitySummary.cs | 1 - .../kpi/WorkOrderOverduePersonalList.cs | 58 +++++++++++++++++++ server/AyaNova/resource/de.json | 3 +- server/AyaNova/resource/en.json | 1 + server/AyaNova/resource/es.json | 3 +- server/AyaNova/resource/fr.json | 3 +- server/AyaNova/util/Seeder.cs | 1 + 9 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 server/AyaNova/kpi/WorkOrderOverduePersonalList.cs diff --git a/.vscode/launch.json b/.vscode/launch.json index d0cceaa8..f18b4927 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -48,7 +48,7 @@ "AYANOVA_DATA_PATH": "c:\\temp\\ravendata", "AYANOVA_USE_URLS": "http://*:7575;", //"AYANOVA_PERMANENTLY_ERASE_DATABASE":"true", - "AYANOVA_SERVER_TEST_MODE": "false", + "AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-8", //"AYANOVA_REPORT_RENDERING_TIMEOUT":"1", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", diff --git a/server/AyaNova/kpi/KPIFactory.cs b/server/AyaNova/kpi/KPIFactory.cs index 8775e6eb..c81e64bd 100644 --- a/server/AyaNova/kpi/KPIFactory.cs +++ b/server/AyaNova/kpi/KPIFactory.cs @@ -20,6 +20,8 @@ namespace AyaNova.KPI return new WorkOrderItemLaborQuantityEveryoneSummary() as IAyaKPI; case "CSROpenList": return new CSROpenList() as IAyaKPI; + case "WorkOrderOverduePersonalList": + return new WorkOrderOverduePersonalList() as IAyaKPI; default: throw new System.NotImplementedException($"KPI {name} NOT IMPLEMENTED"); diff --git a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs index 6d182c48..793f66e1 100644 --- a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs +++ b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs @@ -1,5 +1,4 @@ using AyaNova.Biz; -using Newtonsoft.Json.Linq; using AyaNova.DataList; using System.Collections.Generic; diff --git a/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs b/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs new file mode 100644 index 00000000..46d73c78 --- /dev/null +++ b/server/AyaNova/kpi/WorkOrderOverduePersonalList.cs @@ -0,0 +1,58 @@ +using AyaNova.Biz; +using AyaNova.DataList; +using System.Collections.Generic; + +namespace AyaNova.KPI +{ + internal class WorkOrderOverduePersonalList : IAyaKPI + { + private string _metaQuery = null; + private string _dataQuery = null; + private string _errorMessage = null; + + public AuthorizationRoles AllowedRoles + { + get => AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; + } + + public string MetaQuery => _metaQuery; + public string DataQuery => _dataQuery; + public string ErrorMessage => _errorMessage; + + public void BuildQuery(KPIRequestOptions options, long userId) + { + var wotags = options.Criteria["wotags"].ToObject>(); + var woitemtags = options.Criteria["woitemtags"].ToObject>(); + + string woTagsWhere = null; + if (wotags.Count > 0) + woTagsWhere = " AND " + DataListSqlFilterCriteriaBuilder.TagDataFilterToColumnCriteria("aworkorder.tags", DataListFilterComparisonOperator.Contains, string.Join(",", wotags)); + + string woItemTagsWhere = null; + if (woitemtags.Count > 0) + woItemTagsWhere = " AND " + DataListSqlFilterCriteriaBuilder.TagDataFilterToColumnCriteria("aworkorderitem.tags", DataListFilterComparisonOperator.Contains, string.Join(",", woitemtags)); + + _dataQuery = @$"SELECT row_to_json(t) as res from ( + SELECT distinct(AWORKORDER.ID), + AWORKORDER.SERIAL, + AWORKORDER.completebydate, + ACUSTOMER.NAME, + AWORKORDER.NOTES + FROM AWORKORDER + LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID + LEFT JOIN AWORKORDERITEMSCHEDULEDUSER ON AWORKORDERITEM.ID = AWORKORDERITEMSCHEDULEDUSER.WORKORDERITEMID + LEFT JOIN AWORKORDERSTATUS ON (AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID) + LEFT JOIN ACUSTOMER ON (AWORKORDER.CUSTOMERID = ACUSTOMER.ID) + WHERE (LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) and aworkorder.completebydate < now() + AND AWORKORDERITEMSCHEDULEDUSER.userID = {userId} {woTagsWhere} {woItemTagsWhere} + ORDER BY AWORKORDER.ID ASC + ) t"; + _metaQuery = string.Empty; + // @"SELECT row_to_json(t) as res from ( + // select name from auser where id = 10 + // ) t"; + } + + + }//eoc +}//eons \ No newline at end of file diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index 40b61cb2..8ac77a75 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -227,7 +227,8 @@ "Dashboard": "Dashboard", "DashboardNotAssigned": "Not assigned", "DashboardNotScheduled": "Außerplanmäßig", - "DashboardOverdue": "Overdue", + "DashboardOverdue": "Überfällig", + "DashboardOverdueAll": "Überfällig - alle", "DashboardReminders": "Reminders", "DashboardScheduled": "Scheduled", "DashboardServiceRateQuantityAllUsers":"Servicemenge - alle", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index eff7a1d4..d3e55055 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -228,6 +228,7 @@ "DashboardNotAssigned": "Not assigned", "DashboardNotScheduled": "Not scheduled", "DashboardOverdue": "Overdue", + "DashboardOverdueAll": "Overdue - all", "DashboardReminders": "Reminders", "DashboardScheduled": "Scheduled", "DashboardServiceRateQuantityAllUsers":"Service quantity - all", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index 1ad5cf2a..591aa444 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -227,7 +227,8 @@ "Dashboard": "Panel", "DashboardNotAssigned": "Not assigned", "DashboardNotScheduled": "No programado", - "DashboardOverdue": "Overdue", + "DashboardOverdue": "Atrasado", + "DashboardOverdueAll": "Atrasado - todo", "DashboardReminders": "Reminders", "DashboardScheduled": "Scheduled", "DashboardServiceRateQuantityAllUsers":"Cantidad de servicio - todo", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 05360821..92dbd2c0 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -227,7 +227,8 @@ "Dashboard": "Tableau de bord", "DashboardNotAssigned": "Not assigned", "DashboardNotScheduled": "Non planifié", - "DashboardOverdue": "Overdue", + "DashboardOverdue": "En retard", + "DashboardOverdueAll": "En retard - tout", "DashboardReminders": "Reminders", "DashboardScheduled": "Scheduled", "DashboardServiceRateQuantityAllUsers":"Quantité de service - tout", diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index cd7b01cc..3057138b 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -3249,6 +3249,7 @@ namespace AyaNova.Util //if it's in the past tag it with a completed type status if (olderThanOneWeekAgo) { + if (Fake.Random.Int(1, 10) != 3) //10% overdue for showing off widget overdue { var WoState = new WorkOrderState() {