From 742f62f806b0fb75961ad9489ddf8a0288e0e72b Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 25 Feb 2022 18:07:55 +0000 Subject: [PATCH] --- .../DataListSqlFilterCriteriaBuilder.cs | 6 +- .../kpi/WorkOrderItemLaborQuantitySummary.cs | 83 ++++++------------- 2 files changed, 32 insertions(+), 57 deletions(-) diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index b62d2ce0..dd6efe31 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -104,7 +104,11 @@ namespace AyaNova.DataList /// /// Translate DataFilter to PostgreSQL friendly SQL criteria /// - private static string DataFilterToColumnCriteria(string SqlColumnNameToFilter, UiFieldDataType DataType, string sOperator, string sValue, DateTimeOffset clientTimeStamp) + public static string DataFilterToColumnCriteria(string SqlColumnNameToFilter, + UiFieldDataType DataType, + string sOperator, + string sValue, + DateTimeOffset clientTimeStamp) { StringBuilder sb = new StringBuilder(); diff --git a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs index 4f2076fb..bb17b6c3 100644 --- a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs +++ b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs @@ -1,5 +1,6 @@ using AyaNova.Biz; using Newtonsoft.Json.Linq; +using AyaNova.DataList; namespace AyaNova.KPI { @@ -20,68 +21,38 @@ namespace AyaNova.KPI //build data and meta queries //validate criteria exists - if(!options.Criteria.ContainsKey("dateRange")) - { - _errorMessage="Missing 'dateRange' criteria"; - return; - } + if (!options.Criteria.ContainsKey("dateRange")) + { + _errorMessage = "Missing 'dateRange' criteria"; + return; + } + + if (!options.Criteria.ContainsKey("unit")) + { + _errorMessage = "Missing 'unit' criteria"; + return; + } + + var dateRange = (string)options.Criteria["dateRange"]; + var unit = (string)options.Criteria["unit"]; + + var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", dateRange, options.ClientTimeStamp); - if(!options.Criteria.ContainsKey("unit")) - { - _errorMessage="Missing 'unit' criteria"; - return; - } - - var crit=(string)options.Criteria["dateRange"]; - var unit=(string)options.Criteria["unit"]; - - - // jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null _dataQuery = @$"SELECT row_to_json(t) as res from ( -select SUM(AWORKORDERITEMLABOR.serviceratequantity) SERVICERATESUM, date_trunc('{unit}',AWORKORDERITEMLABOR.servicestopdate) timeframe -FROM AWORKORDER -LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID -LEFT JOIN AWORKORDERITEMLABOR ON AWORKORDERITEM.ID = AWORKORDERITEMLABOR.WORKORDERITEMID -WHERE AWORKORDERITEMLABOR.userid = {userId} -GROUP BY timeframe -ORDER BY timeframe ASC -) t"; - + select SUM(AWORKORDERITEMLABOR.serviceratequantity) SERVICERATESUM, date_trunc('{unit}',AWORKORDERITEMLABOR.servicestopdate) timeframe + FROM AWORKORDER + LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID + LEFT JOIN AWORKORDERITEMLABOR ON AWORKORDERITEM.ID = AWORKORDERITEMLABOR.WORKORDERITEMID + WHERE AWORKORDERITEMLABOR.userid = {userId} AND {dateWhere} + GROUP BY timeframe + ORDER BY timeframe ASC + ) t"; _metaQuery = @"SELECT row_to_json(t) as res from ( - select name from auser where id = 10 -) t"; + select name from auser where id = 10 + ) t"; } - // public string GetVariantCriteria(string variant) - // { - // //Currently the only variant is a object type and id to indicate headoffice - - // //ClientCriteria format for this list is "OBJECTID,AYATYPE" - // var crit = (variant ?? "").Split(',').Select(z => z.Trim()).ToArray(); - // if (crit.Length > 1) - // { - // int nType = 0; - // if (!int.TryParse(crit[1], out nType)) return string.Empty; - // AyaType forType = (AyaType)nType; - // if (forType != AyaType.HeadOffice) return string.Empty; - - // long lId = 0; - // if (!long.TryParse(crit[0], out lId)) return string.Empty; - // if (lId == 0) return string.Empty; - - // //Have valid type, have an id, so filter away - // switch (forType) - // { - // case AyaType.HeadOffice: - // { - // return $"acustomer.headofficeid = {lId}"; - // } - // } - // } - // return string.Empty; - // } - }//eoc }//eons \ No newline at end of file