PHP
/**
* Identifier: msTeamsRemoveService
* Verify Active Service matching service_id and user_id
* - Deactivate the found service
* - Create a Service Remark
*/
/** @var array $request; */
$userId = $request['user_id'] ?? null;
$serviceId = $request['service_id'] ?? null;
$servStatus = 374; // Inactive
$verifySQL = <<<SQL
SELECT OWNER_CONTACTS_RECID as CONTACTS_RECID,
C.CUSTOMER_NUMBER as OWNER,
S.RECID as SERVICES_RECID,
SERVICE_ID,
SERVICE_STATUS.CODE AS SERVICE_STATUS
FROM SERVICES S
LEFT JOIN CONTACTS C ON S.OWNER_CONTACTS_RECID = C.RECID
INNER JOIN LISTS SERVICE_STATUS ON SERVICE_STATUS.RECID = S.SERVICE_STATUS_LISTS_RECID
WHERE S.SERVICE_ID = :serviceId
SQL;
$verification = $this->query(
$verifySQL,
[':serviceId' => $serviceId]
)[0] ?? null;
$response['status'] = 'invalid';
if ($verification === null) {
$response['message'] = "Specified Service {$serviceId} was not found";
} elseif ($verification['OWNER'] !== $userId) {
$response['message'] = "Specified User {$userId} does not own specified Service {$serviceId}";
} elseif ($verification['SERVICE_STATUS'] !== 'ACTIVE') {
$response['message'] = "Specified Service {$serviceId} is not Active";
} else {
$result = $this->call(
'saveService',
[
'recid' => $verification['SERVICES_RECID'],
'status' => $servStatus,
'remarks' => 'Deactivated by MS Teams API',
'directory' => 0,
'report_911' => 1,
]
);
if ($result['status'] === 'success') {
$response['status'] = 'valid';
} else {
$response['message'] = "Failed to Update Service [{$serviceId}]: {$result['message']}";
}
}