From d1f46b6e09737caedd345ccce61fef6dfca6f311 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 2 Mar 2022 20:07:36 +0000 Subject: [PATCH] --- ...rkOrderItemLaborQuantityEveryoneSummary.cs | 38 +++++++------------ 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/server/AyaNova/kpi/WorkOrderItemLaborQuantityEveryoneSummary.cs b/server/AyaNova/kpi/WorkOrderItemLaborQuantityEveryoneSummary.cs index 68d0aa2d..c0aa5b7f 100644 --- a/server/AyaNova/kpi/WorkOrderItemLaborQuantityEveryoneSummary.cs +++ b/server/AyaNova/kpi/WorkOrderItemLaborQuantityEveryoneSummary.cs @@ -25,47 +25,35 @@ AuthorizationRoles.Accounting; public void BuildQuery(KPIRequestOptions options, long userId) { - //build data and meta queries - - //validate criteria exists if (!options.Criteria.ContainsKey("timeSpan")) { _errorMessage = "Missing 'timeSpan' criteria"; return; } - if (!options.Criteria.ContainsKey("interval")) { _errorMessage = "Missing 'interval' criteria"; return; } - var userid = (int?)options.Criteria["userid"]; - var timeSpan = (string)options.Criteria["timeSpan"]; - var interval = (string)options.Criteria["interval"]; - var techtags = options.Criteria["techtags"].ToObject>(); - var wotags = options.Criteria["wotags"].ToObject>(); - var woitemtags = options.Criteria["woitemtags"].ToObject>(); - - var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp); - - string techTagsWhere = null; - if (techtags.Count > 0) - techTagsWhere = " AND " + DataListSqlFilterCriteriaBuilder.TagDataFilterToColumnCriteria("auser.tags", DataListFilterComparisonOperator.Contains, string.Join(",", techtags)); - - 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)); - string userWhere = string.Empty; if (userid != null) { userWhere = $"AND aworkorderitemlabor.userid = {userid}"; } + var timeSpan = (string)options.Criteria["timeSpan"]; + var interval = (string)options.Criteria["interval"]; + var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp); + var techtags = options.Criteria["techtags"].ToObject>(); + bool techtagsany = options.Criteria["techtagsany"].ToObject(); + var wotags = options.Criteria["wotags"].ToObject>(); + bool wotagsany = options.Criteria["wotagsany"].ToObject(); + var woitemtags = options.Criteria["woitemtags"].ToObject>(); + bool woitemtagsany = options.Criteria["woitemtagsany"].ToObject(); + string techTagsWhere = DataListSqlFilterCriteriaBuilder.KPITagFilterToSqlCriteria("auser.tags", techtags, techtagsany); + string woTagsWhere = DataListSqlFilterCriteriaBuilder.KPITagFilterToSqlCriteria("aworkorder.tags", wotags, wotagsany); + string woItemTagsWhere = DataListSqlFilterCriteriaBuilder.KPITagFilterToSqlCriteria("aworkorderitem.tags", woitemtags, woitemtagsany); ; + _dataQuery = @$"SELECT row_to_json(t) as res from (