This commit is contained in:
@@ -11,7 +11,17 @@ namespace AyaNova.KPI
|
||||
private string _dataQuery = null;
|
||||
private string _errorMessage = null;
|
||||
|
||||
public AuthorizationRoles AllowedRoles { get => AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; }
|
||||
public AuthorizationRoles AllowedRoles
|
||||
{
|
||||
get =>
|
||||
AuthorizationRoles.BizAdmin |
|
||||
AuthorizationRoles.BizAdminRestricted |
|
||||
AuthorizationRoles.ServiceRestricted |
|
||||
AuthorizationRoles.Service |
|
||||
AuthorizationRoles.Accounting |
|
||||
AuthorizationRoles.Tech |
|
||||
AuthorizationRoles.TechRestricted;
|
||||
}
|
||||
|
||||
public string MetaQuery => _metaQuery;
|
||||
public string DataQuery => _dataQuery;
|
||||
@@ -22,25 +32,25 @@ namespace AyaNova.KPI
|
||||
//build data and meta queries
|
||||
|
||||
//validate criteria exists
|
||||
if (!options.Criteria.ContainsKey("timeSpan"))
|
||||
if (!options.Criteria.ContainsKey("wostatus"))
|
||||
{
|
||||
_errorMessage = "Missing 'timeSpan' criteria";
|
||||
_errorMessage = "Missing 'wostatus' criteria";
|
||||
return;
|
||||
}
|
||||
|
||||
if (!options.Criteria.ContainsKey("interval"))
|
||||
{
|
||||
_errorMessage = "Missing 'interval' criteria";
|
||||
return;
|
||||
}
|
||||
|
||||
var timeSpan = (string)options.Criteria["timeSpan"];
|
||||
var interval = (string)options.Criteria["interval"];
|
||||
|
||||
var wostatus = (int?)options.Criteria["wostatus"];
|
||||
|
||||
var wotags = options.Criteria["wotags"].ToObject<List<string>>();
|
||||
var woitemtags = options.Criteria["woitemtags"].ToObject<List<string>>();
|
||||
|
||||
var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp);
|
||||
// var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp);
|
||||
|
||||
string statusWhere = string.Empty;
|
||||
if (wostatus != null)
|
||||
{
|
||||
statusWhere = $"AND LASTSTATUSID = {wostatus}";
|
||||
}
|
||||
|
||||
//optional tags
|
||||
string woTagsWhere = null;
|
||||
@@ -55,13 +65,20 @@ namespace AyaNova.KPI
|
||||
|
||||
|
||||
_dataQuery = @$"SELECT row_to_json(t) as res from (
|
||||
select SUM(AWORKORDERITEMLABOR.serviceratequantity) y, date_trunc('{interval}',AWORKORDERITEMLABOR.servicestopdate) x
|
||||
SELECT AWORKORDER.SERIAL,
|
||||
AWORKORDER.SERVICEDATE,
|
||||
ACUSTOMER.NAME,
|
||||
AWORKORDER.NOTES
|
||||
FROM AWORKORDER
|
||||
LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID
|
||||
LEFT JOIN AWORKORDERITEMLABOR ON AWORKORDERITEM.ID = AWORKORDERITEMLABOR.WORKORDERITEMID
|
||||
WHERE AWORKORDERITEMLABOR.userid = {userId} AND {dateWhere} {woTagsWhere} {woItemTagsWhere}
|
||||
GROUP BY x
|
||||
ORDER BY x ASC
|
||||
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 AWORKORDERITEMSCHEDULEDUSER.ID IS NULL
|
||||
{woTagsWhere} {woItemTagsWhere}
|
||||
{statusWhere}
|
||||
ORDER BY AWORKORDER.ID ASC
|
||||
) t";
|
||||
_metaQuery = string.Empty;
|
||||
// @"SELECT row_to_json(t) as res from (
|
||||
|
||||
Reference in New Issue
Block a user