// Delete a task type for a business // Input: TaskTypeID (required), BusinessID (required) // Output: { OK: true } 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 TaskTypeID taskTypeID = 0; if (structKeyExists(data, "TaskTypeID") && isNumeric(data.TaskTypeID)) { taskTypeID = int(data.TaskTypeID); } if (taskTypeID == 0) { apiAbort({ "OK": false, "ERROR": "missing_params", "MESSAGE": "TaskTypeID is required" }); } // Get BusinessID businessID = 0; if (structKeyExists(data, "BusinessID") && isNumeric(data.BusinessID)) { businessID = int(data.BusinessID); } if (businessID == 0) { apiAbort({ "OK": false, "ERROR": "missing_params", "MESSAGE": "BusinessID is required" }); } // Verify task type exists and belongs to this business qCheck = queryTimed(" SELECT ID, BusinessID FROM tt_TaskTypes WHERE ID = :taskTypeID ", { taskTypeID: { value: taskTypeID, cfsqltype: "cf_sql_integer" } }, { datasource: "payfrit" }); if (qCheck.recordCount == 0) { apiAbort({ "OK": false, "ERROR": "not_found", "MESSAGE": "Task type not found" }); } if (isNull(qCheck.BusinessID) || qCheck.BusinessID != businessID) { apiAbort({ "OK": false, "ERROR": "not_authorized", "MESSAGE": "Task type does not belong to this business" }); } // Delete the task type queryTimed(" DELETE FROM tt_TaskTypes WHERE ID = :taskTypeID AND BusinessID = :businessID ", { taskTypeID: { value: taskTypeID, cfsqltype: "cf_sql_integer" }, businessID: { value: businessID, cfsqltype: "cf_sql_integer" } }, { datasource: "payfrit" }); apiAbort({ "OK": true, "MESSAGE": "Task type deleted" }); } catch (any e) { apiAbort({ "OK": false, "ERROR": "server_error", "MESSAGE": e.message }); }