// Returns quick task templates for a business // Input: BusinessID (required) // Output: { OK: true, TEMPLATES: [...] } function apiAbort(required struct payload) { writeOutput(serializeJSON(payload)); abort; } function readJsonBody() { var raw = getHttpRequestData().content; if (isNull(raw)) raw = ""; if (!len(trim(raw))) return {}; try { var data = deserializeJSON(raw); if (isStruct(data)) return data; } catch (any e) {} return {}; } try { data = readJsonBody(); // Get BusinessID from body, header, or URL businessID = 0; httpHeaders = getHttpRequestData().headers; if (structKeyExists(data, "BusinessID") && isNumeric(data.BusinessID)) { businessID = int(data.BusinessID); } else if (structKeyExists(httpHeaders, "X-Business-ID") && isNumeric(httpHeaders["X-Business-ID"])) { businessID = int(httpHeaders["X-Business-ID"]); } else if (structKeyExists(url, "BusinessID") && isNumeric(url.BusinessID)) { businessID = int(url.BusinessID); } if (businessID == 0) { apiAbort({ "OK": false, "ERROR": "missing_params", "MESSAGE": "BusinessID is required" }); } // Get quick task templates for this business q = queryExecute(" SELECT qt.QuickTaskTemplateID, qt.QuickTaskTemplateName as Name, qt.QuickTaskTemplateCategoryID as CategoryID, qt.QuickTaskTemplateTypeID as TypeID, qt.QuickTaskTemplateTitle as Title, qt.QuickTaskTemplateDetails as Details, qt.QuickTaskTemplateIcon as Icon, qt.QuickTaskTemplateColor as Color, qt.QuickTaskTemplateSortOrder as SortOrder, qt.QuickTaskTemplateIsActive as IsActive, tc.TaskCategoryName as CategoryName, tc.TaskCategoryColor as CategoryColor FROM QuickTaskTemplates qt LEFT JOIN TaskCategories tc ON qt.QuickTaskTemplateCategoryID = tc.TaskCategoryID WHERE qt.QuickTaskTemplateBusinessID = :businessID AND qt.QuickTaskTemplateIsActive = 1 ORDER BY qt.QuickTaskTemplateSortOrder, qt.QuickTaskTemplateID ", { businessID: { value: businessID, cfsqltype: "cf_sql_integer" } }, { datasource: "payfrit" }); templates = []; for (row in q) { arrayAppend(templates, { "QuickTaskTemplateID": row.QuickTaskTemplateID, "Name": row.Name, "CategoryID": isNull(row.CategoryID) ? "" : row.CategoryID, "TypeID": isNull(row.TypeID) ? "" : row.TypeID, "Title": row.Title, "Details": isNull(row.Details) ? "" : row.Details, "Icon": isNull(row.Icon) ? "add_box" : row.Icon, "Color": isNull(row.Color) ? "##6366f1" : row.Color, "SortOrder": row.SortOrder, "IsActive": row.IsActive, "CategoryName": isNull(row.CategoryName) ? "" : row.CategoryName, "CategoryColor": isNull(row.CategoryColor) ? "" : row.CategoryColor }); } apiAbort({ "OK": true, "TEMPLATES": templates, "COUNT": arrayLen(templates) }); } catch (any e) { apiAbort({ "OK": false, "ERROR": "server_error", "MESSAGE": e.message }); }