/** * Create Message-Application for the Case * * @param string $applicationUid Unique id of Case * @param string $projectUid Unique id of Project * @param string $eventUidThrow Unique id of Event (throw) * @param array $arrayApplicationData Case data * * return bool Return true if been created, false otherwise */ public function create($applicationUid, $projectUid, $eventUidThrow, array $arrayApplicationData) { try { $flagCreate = true; //Set data //Message-Event-Relation - Get unique id of Event (catch) $messageEventRelation = new \ProcessMaker\BusinessModel\MessageEventRelation(); $arrayMessageEventRelationData = $messageEventRelation->getMessageEventRelationWhere( array( \MessageEventRelationPeer::PRJ_UID => $projectUid, \MessageEventRelationPeer::EVN_UID_THROW => $eventUidThrow ), true ); if (!is_null($arrayMessageEventRelationData)) { $eventUidCatch = $arrayMessageEventRelationData["EVN_UID_CATCH"]; } else { $flagCreate = false; } //Message-Application - Get data ($eventUidThrow) $messageEventDefinition = new \ProcessMaker\BusinessModel\MessageEventDefinition(); if ($messageEventDefinition->existsEvent($projectUid, $eventUidThrow)) { $arrayMessageEventDefinitionData = $messageEventDefinition->getMessageEventDefinitionByEvent($projectUid, $eventUidThrow, true); $arrayMessageApplicationVariables = $arrayMessageEventDefinitionData["MSGED_VARIABLES"]; $messageApplicationCorrelation = \G::replaceDataField($arrayMessageEventDefinitionData["MSGED_CORRELATION"], $arrayApplicationData["APP_DATA"]); foreach ($arrayMessageApplicationVariables as $key => $value) { $arrayMessageApplicationVariables[$key] = \G::replaceDataField($value, $arrayApplicationData["APP_DATA"]); } } else { $flagCreate = false; } if (!$flagCreate) { //Return return false; } //Create $cnn = \Propel::getConnection("workflow"); try { $messageApplication = new \MessageApplication(); $messageApplicationUid = \ProcessMaker\Util\Common::generateUID(); $messageApplication->setMsgappUid($messageApplicationUid); $messageApplication->setAppUid($applicationUid); $messageApplication->setPrjUid($projectUid); $messageApplication->setEvnUidThrow($eventUidThrow); $messageApplication->setEvnUidCatch($eventUidCatch); $messageApplication->setMsgappVariables(serialize($arrayMessageApplicationVariables)); $messageApplication->setMsgappCorrelation($messageApplicationCorrelation); $messageApplication->setMsgappThrowDate("now"); if ($messageApplication->validate()) { $cnn->begin(); $result = $messageApplication->save(); $cnn->commit(); //Return return true; } else { $msg = ""; foreach ($messageApplication->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; } }