if (!isset($contactTemplateInfo['use']) || empty($contactTemplateInfo['use'])) {
        // Lets make sure we have the minimum required keys for defining a contact template
        foreach ($required_keys as $rkey) {
            if (!isset($contactTemplateInfo[$rkey]) || empty($contactTemplateInfo[$rkey])) {
                $apiResponse = new APIViewData(1, $deployment, "Unable to detect required parameter {$rkey} " . contacttemplate_rkeyMessage($rkey));
                $app->halt(404, $apiResponse->returnJson());
            }
        }
    }
    $contactTemplateInfo = contacttemplate_validate($app, $deployment, $contactTemplateInfo);
    $deployRev = RevDeploy::getDeploymentNextRev($deployment);
    if (RevDeploy::existsDeploymentContactTemplate($deployment, $contactTemplateInfo['name'], $deployRev) === true) {
        RevDeploy::modifyDeploymentContactTemplate($deployment, $contactTemplateInfo['name'], $contactTemplateInfo, $deployRev);
        $apiResponse = new APIViewData(0, $deployment, "Successfully Modified Contact Template " . $contactTemplateInfo['name']);
    } else {
        RevDeploy::createDeploymentContactTemplate($deployment, $contactTemplateInfo['name'], $contactTemplateInfo, $deployRev);
        $apiResponse = new APIViewData(0, $deployment, "Successfully Created Contact Template " . $contactTemplateInfo['name']);
    }
    $apiResponse->printJson();
})->name('saigon-api-create-contact-template');
$app->delete('/sapi/contacttemplate/:deployment/:contacttemplate', function ($deployment, $contacttemplate) use($app) {
    check_deployment_exists($app, $deployment);
    check_auth($app, $deployment);
    check_revision_status($deployment);
    $deployRev = RevDeploy::getDeploymentNextRev($deployment);
    if (preg_match('/,/', $contacttemplate)) {
        $contacttemplates = preg_split('/\\s?,\\s?/', $contacttemplate);
        foreach ($contacttemplates as $cttemp) {
            RevDeploy::deleteDeploymentContactTemplate($deployment, $cttemp, $deployRev);
        }
    } else {
 private static function copyContactTemplates($deployment, $revision, array $ctInfo)
 {
     if (self::$init === false) {
         self::init();
     }
     foreach ($ctInfo as $ct => $ctArray) {
         if ($ctArray['deployment'] == self::$m_commonrepo && $ctArray['deployment'] == 'common') {
             continue;
         }
         if ($ctArray['deployment'] == self::$m_commonrepo) {
             continue;
         }
         unset($ctArray['deployment']);
         foreach ($ctArray as $key => $value) {
             if (is_array($ctArray[$key])) {
                 $ctArray[$key] = implode(',', $ctArray[$key]);
             }
         }
         RevDeploy::createDeploymentContactTemplate($deployment, $ct, $ctArray, $revision);
     }
 }
 public function copy_write()
 {
     $viewData = new ViewData();
     $deployment = $this->getDeployment('contact_template_error');
     $this->checkGroupAuth($deployment);
     $this->checkDeploymentRevStatus($deployment);
     $modrevision = RevDeploy::getDeploymentNextRev($deployment);
     $contactName = $this->getParam('contactName');
     $contactInfo = $this->fetchContactTemplateInfo($deployment, 'copy_write', $modrevision);
     if (RevDeploy::existsDeploymentContactTemplate($deployment, $contactName, $modrevision) === true) {
         $viewData->error = 'Contact template information exists for ' . $contactName . ' into ' . $deployment . ' Deployment';
         $viewData->action = 'copy_write';
         $viewData->contacttemplate = $contactName;
         $viewData->deployment = $deployment;
         $viewData->contacttemplates = RevDeploy::getCommonMergedDeploymentContactTemplates($deployment, $modrevision);
         $viewData->notifycmds = RevDeploy::getCommonMergedDeploymentNotifyCommands($deployment, $modrevision);
         $viewData->timeperiods = RevDeploy::getCommonMergedDeploymentTimeperiods($deployment, $modrevision);
         $viewData->contactInfo = $contactInfo;
         $this->sendResponse('contact_template_action_stage', $viewData);
     }
     if (RevDeploy::createDeploymentContactTemplate($deployment, $contactName, $contactInfo, $modrevision) === false) {
         $viewData->header = $this->getErrorHeader('contact_template_error');
         $viewData->error = 'Unable to write contact tempalte information for ' . $contactName . ' into ' . $deployment . ' Deployment';
         $this->sendError('generic_error', $viewData);
     }
     $viewData->deployment = $deployment;
     $viewData->contact = $contactName;
     $this->sendResponse('contact_template_write', $viewData);
 }