PCR-360 Wiki

MS Teams - Remove Service

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']}";
    }
}