Esempio n. 1
0
 /**
  * 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;
     }
 }