/**
  * Create Case Tracker Object for a Process
  *
  * @param string $processUid Unique id of Process
  * @param array  $arrayData  Data
  *
  * return array Return data of the new Case Tracker Object created
  */
 public function create($processUid, $arrayData)
 {
     try {
         $arrayData = array_change_key_case($arrayData, CASE_UPPER);
         unset($arrayData["CTO_UID"]);
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfNotExistsProcess($processUid, "prj_uid");
         if (!isset($arrayData["CTO_TYPE_OBJ"])) {
             throw new \Exception(\G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", array(strtolower("CTO_TYPE_OBJ"))));
         }
         if (!isset($arrayData["CTO_UID_OBJ"])) {
             throw new \Exception(\G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", array(strtolower("CTO_UID_OBJ"))));
         }
         $step = new \ProcessMaker\BusinessModel\Step();
         $msg = $step->existsObjectUid($arrayData["CTO_TYPE_OBJ"], $arrayData["CTO_UID_OBJ"], strtolower("CTO_UID_OBJ"));
         if ($msg != "") {
             throw new \Exception($msg);
         }
         if ($this->existsRecord($processUid, $arrayData["CTO_TYPE_OBJ"], $arrayData["CTO_UID_OBJ"])) {
             throw new \Exception(\G::LoadTranslation("ID_RECORD_EXISTS_IN_TABLE", array($processUid . ", " . $arrayData["CTO_TYPE_OBJ"] . ", " . $arrayData["CTO_UID_OBJ"], "CASE_TRACKER_OBJECT")));
         }
         $ctoPosition = $arrayData["CTO_POSITION"];
         $criteria = new \Criteria("workflow");
         $criteria->add(\CaseTrackerObjectPeer::PRO_UID, $processUid);
         $arrayData["CTO_POSITION"] = \CaseTrackerObjectPeer::doCount($criteria) + 1;
         //Create
         $caseTrackerObject = new \CaseTrackerObject();
         $arrayData["PRO_UID"] = $processUid;
         $caseTrackerObjectUid = $caseTrackerObject->create($arrayData);
         $arrayData["CTO_POSITION"] = $ctoPosition;
         $arrayData["CTO_UID"] = $caseTrackerObjectUid;
         $arrayDataUpdate = array_change_key_case($arrayData, CASE_LOWER);
         $this->update($caseTrackerObjectUid, $arrayDataUpdate);
         //Return
         unset($arrayData["PRO_UID"]);
         $arrayData = array_change_key_case($arrayData, CASE_LOWER);
         unset($arrayData["cto_uid"]);
         return array_merge(array("cto_uid" => $caseTrackerObjectUid), $arrayData);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Beispiel #2
0
    /**

     * Create Case Tracker Objects rows from an array, removing those Objects

     * with the same UID, and recreaiting those from the array data.

     *

     * @param $CaseTrackerObject array.

     * @return void

     */

    public function createCaseTrackerObjectRows ($CaseTrackerObject)

    {

        foreach ($CaseTrackerObject as $key => $row) {

            $oCaseTrackerObject = new CaseTrackerObject();

            if ($oCaseTrackerObject->caseTrackerObjectExists( $row['CTO_UID'] )) {

                $oCaseTrackerObject->remove( $row['CTO_UID'] );

            }

            $res = $oCaseTrackerObject->create( $row );

        }

        return;

    }
 /**
  * assignCaseTrackerObject
  *
  * @param string $sProcessUID
  * @param string $sObjType
  * @param string $sObjUID
  * @return void
  */
 public function assignCaseTrackerObject($sProcessUID, $sObjType, $sObjUID)
 {
     $oCriteria = new Criteria('workflow');
     $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
     $iPosition = CaseTrackerObjectPeer::doCount($oCriteria) + 1;
     $oCaseTrackerObject = new CaseTrackerObject();
     $ctoUID = $oCaseTrackerObject->create(array('PRO_UID' => $sProcessUID, 'CTO_TYPE_OBJ' => $sObjType, 'CTO_UID_OBJ' => $sObjUID, 'CTO_POSITION' => $iPosition, 'CTO_CONDITION' => ''));
     return $ctoUID;
 }