<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">

<cfscript>
/**
 * Link a child business to a parent
 * POST: { "ChildBusinessID": 49, "ParentBusinessID": 51 }
 */

function readJsonBody() {
    var raw = getHttpRequestData().content;
    if (isNull(raw) || len(trim(raw)) == 0) return {};
    try {
        return deserializeJSON(raw);
    } catch (any e) {
        return {};
    }
}

response = { "OK": false };

try {
    data = readJsonBody();
    childID = val(data.ChildBusinessID ?: 0);
    parentID = val(data.ParentBusinessID ?: 0);

    if (childID <= 0) {
        response["ERROR"] = "ChildBusinessID required";
    } else {
        queryExecute("
            UPDATE Businesses SET ParentBusinessID = :parentId WHERE ID = :childId
        ", {
            parentId: { value = parentID > 0 ? parentID : javaCast("null", ""), cfsqltype = "cf_sql_integer", null = parentID == 0 },
            childId: childID
        }, { datasource = "payfrit" });

        response["OK"] = true;
        response["MESSAGE"] = "Updated BusinessID " & childID & " parent to " & (parentID > 0 ? parentID : "NULL");
    }
} catch (any e) {
    response["ERROR"] = e.message;
}

writeOutput(serializeJSON(response));
</cfscript>
