/** * Create Message-Type * * @param string $projectUid Unique id of Project * @param array $arrayData Data * * return array Return data of the new Message-Type created */ public function create($projectUid, array $arrayData) { try { //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $validator = new \ProcessMaker\BusinessModel\Validator(); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); //Set data $arrayData = array_change_key_case($arrayData, CASE_UPPER); if (isset($arrayData["MSGT_VARIABLES"]) && is_array($arrayData["MSGT_VARIABLES"])) { foreach ($arrayData["MSGT_VARIABLES"] as $key => $value) { $arrayData["MSGT_VARIABLES"][$key] = array_change_key_case($value, CASE_UPPER); } } unset($arrayData["MSGT_UID"]); unset($arrayData["PRJ_UID"]); $process->throwExceptionIfNotExistsProcess($projectUid, $this->arrayFieldNameForException["projectUid"]); $this->throwExceptionIfDataIsInvalid("", $projectUid, $arrayData); //Create $cnn = \Propel::getConnection("workflow"); try { $messageType = new \MessageType(); $messageType->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME); $messageTypeUid = \ProcessMaker\Util\Common::generateUID(); $messageType->setMsgtUid($messageTypeUid); $messageType->setPrjUid($projectUid); if ($messageType->validate()) { $cnn->begin(); $result = $messageType->save(); $cnn->commit(); if (isset($arrayData["MSGT_VARIABLES"]) && count($arrayData["MSGT_VARIABLES"]) > 0) { $variable = new \ProcessMaker\BusinessModel\MessageType\Variable(); $variable->setFormatFieldNameInUppercase($this->formatFieldNameInUppercase); foreach ($arrayData["MSGT_VARIABLES"] as $key => $value) { $arrayVariable = $value; $arrayResult = $variable->create($messageTypeUid, $arrayVariable); } } //Return return $this->getMessageType($messageTypeUid); } else { $msg = ""; foreach ($messageType->getValidationFailures() as $validationFailure) { $msg = $msg . ($msg != "" ? "\n" : "") . $validationFailure->getMessage(); } throw new \Exception(\G::LoadTranslation("ID_RECORD_CANNOT_BE_CREATED") . ($msg != "" ? "\n" . $msg : "")); } } catch (\Exception $e) { $cnn->rollback(); throw $e; } } catch (\Exception $e) { throw $e; } }