From 820c27297666c8a5197fe60eeed6fe0d6d328f7a Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 1 Mar 2022 18:02:53 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/kpi/CSROpenList.cs | 61 +++++++++++++++++++++++++++++++ server/AyaNova/kpi/KPIFactory.cs | 2 + 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 server/AyaNova/kpi/CSROpenList.cs diff --git a/.vscode/launch.json b/.vscode/launch.json index f18b4927..d0cceaa8 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": "true", + "AYANOVA_SERVER_TEST_MODE": "false", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-8", //"AYANOVA_REPORT_RENDERING_TIMEOUT":"1", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", diff --git a/server/AyaNova/kpi/CSROpenList.cs b/server/AyaNova/kpi/CSROpenList.cs new file mode 100644 index 00000000..6bf6d474 --- /dev/null +++ b/server/AyaNova/kpi/CSROpenList.cs @@ -0,0 +1,61 @@ +using AyaNova.Biz; +using AyaNova.DataList; +using System.Collections.Generic; + +namespace AyaNova.KPI +{ + internal class CSROpenList : IAyaKPI + { + private string _metaQuery = null; + private string _dataQuery = null; + private string _errorMessage = null; + + public AuthorizationRoles AllowedRoles + { + get => +AuthorizationRoles.BizAdmin | +AuthorizationRoles.BizAdminRestricted | +AuthorizationRoles.ServiceRestricted | +AuthorizationRoles.Service | +AuthorizationRoles.Tech | +AuthorizationRoles.TechRestricted; + } + + public string MetaQuery => _metaQuery; + public string DataQuery => _dataQuery; + public string ErrorMessage => _errorMessage; + + public void BuildQuery(KPIRequestOptions options, long userId) + { + //build data and meta queries + var custtags = options.Criteria["custtags"].ToObject>(); + + //optional tags + string custTagsWhere = null; + if (custtags.Count > 0) + custTagsWhere = " AND " + DataListSqlFilterCriteriaBuilder.TagDataFilterToColumnCriteria("acustomer.tags", DataListFilterComparisonOperator.Contains, string.Join(",", custtags)); + + + + + _dataQuery = @$"SELECT row_to_json(t) as res from ( +SELECT ACUSTOMERSERVICEREQUEST.DATEREQUESTED, + ACUSTOMER.NAME AS CUSTOMERNAME, + ACUSTOMERSERVICEREQUEST.NAME AS CSRNAME, + ACUSTOMERSERVICEREQUEST.ID, + ACUSTOMERSERVICEREQUEST.PRIORITY, + ACUSTOMERSERVICEREQUEST.STATUS +FROM ACUSTOMERSERVICEREQUEST +LEFT JOIN ACUSTOMER ON (ACUSTOMERSERVICEREQUEST.CUSTOMERID = ACUSTOMER.ID) +WHERE (ACUSTOMERSERVICEREQUEST.STATUS = 0) {custTagsWhere} +ORDER BY ACUSTOMERSERVICEREQUEST.DATEREQUESTED DESC +) 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/kpi/KPIFactory.cs b/server/AyaNova/kpi/KPIFactory.cs index 00ea5f7e..591848b0 100644 --- a/server/AyaNova/kpi/KPIFactory.cs +++ b/server/AyaNova/kpi/KPIFactory.cs @@ -18,6 +18,8 @@ namespace AyaNova.KPI return new WorkOrderItemLaborQuantitySummary() as IAyaKPI; case "WorkOrderUnscheduledOpenList": return new WorkOrderUnscheduledOpenList() as IAyaKPI; + case "CSROpenList": + return new CSROpenList() as IAyaKPI; default: throw new System.NotImplementedException($"KPI {name} NOT IMPLEMENTED");