diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index dd6efe31..88f580c9 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -957,7 +957,7 @@ namespace AyaNova.DataList /// /// Translate TAG DataFilter to PostgreSQL friendly SQL criteria /// - private static string TagDataFilterToColumnCriteria(string SqlColumnNameToFilter, string sOperator, string sValue) + public static string TagDataFilterToColumnCriteria(string SqlColumnNameToFilter, string sOperator, string sValue) { /* diff --git a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs index bf5f06da..6d182c48 100644 --- a/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs +++ b/server/AyaNova/kpi/WorkOrderItemLaborQuantitySummary.cs @@ -42,11 +42,15 @@ namespace AyaNova.KPI var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp); //optional tags - string tagsWhere = string.Empty; + string woTagsWhere = null; if (wotags.Count > 0) - { - var q = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorder.tags", UiFieldDataType.Tags, DataListFilterComparisonOperator.Contains, string.Join(",", wotags), options.ClientTimeStamp); - } + 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 ( @@ -54,7 +58,7 @@ namespace AyaNova.KPI FROM AWORKORDER LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID LEFT JOIN AWORKORDERITEMLABOR ON AWORKORDERITEM.ID = AWORKORDERITEMLABOR.WORKORDERITEMID - WHERE AWORKORDERITEMLABOR.userid = {userId} AND {dateWhere} + WHERE AWORKORDERITEMLABOR.userid = {userId} AND {dateWhere} {woTagsWhere} {woItemTagsWhere} GROUP BY x ORDER BY x ASC ) t";