Ejemplo n.º 1
0
 /**
  * Validate Process Uid
  * @var string $pro_uid. Uid for Process
  * @var string $tas_uid. Uid for Task
  * @var string $step_uid. Uid for Step
  * @var string $step_pos. Position for Step
  *
  * @author Brayan Pereyra (Cochalo) <*****@*****.**>
  * @copyright Colosa - Bolivia
  *
  * @return void
  */
 public function moveStepTriggers($tasUid, $stepUid, $triUid, $type, $newPos)
 {
     $stepTrigger = new \ProcessMaker\BusinessModel\Step();
     $tempStep = $stepUid;
     $typeCompare = $type;
     if ($tempStep == '-1' || $tempStep == '-2') {
         $tempStep = '';
         if ($stepUid == '-1' && $type == 'BEFORE') {
             $typeCompare = "BEFORE_ASSIGNMENT";
         } elseif ($stepUid == '-2' && $type == 'BEFORE') {
             $typeCompare = "BEFORE_ROUTING";
         } elseif ($stepUid == '-2' && $type == 'AFTER') {
             $typeCompare = "AFTER_ROUTING";
         }
     }
     $aStepTriggers = $stepTrigger->getTriggers($tempStep, $tasUid);
     foreach ($aStepTriggers as $dataStep) {
         if ($dataStep['st_type'] == $typeCompare && $dataStep['tri_uid'] == $triUid) {
             $prStepPos = (int) $dataStep['st_position'];
         }
     }
     $seStepPos = $newPos;
     //Principal Step is up
     if ($prStepPos == $seStepPos) {
         return true;
     } elseif ($prStepPos < $seStepPos) {
         $modPos = 'UP';
         $newPos = $seStepPos;
         $iniPos = $prStepPos + 1;
         $finPos = $seStepPos;
     } else {
         $modPos = 'DOWN';
         $newPos = $seStepPos;
         $iniPos = $seStepPos;
         $finPos = $prStepPos - 1;
     }
     $range = range($iniPos, $finPos);
     $stepChangeIds = array();
     $stepChangePos = array();
     foreach ($aStepTriggers as $dataStep) {
         if ($dataStep['st_type'] == $typeCompare && in_array($dataStep['st_position'], $range) && $dataStep['tri_uid'] != $triUid) {
             $stepChangeIds[] = $dataStep['tri_uid'];
             $stepChangePos[] = $dataStep['st_position'];
         }
     }
     foreach ($stepChangeIds as $key => $value) {
         if ($modPos == 'UP') {
             $tempPos = (int) $stepChangePos[$key] - 1;
             $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos);
         } else {
             $tempPos = (int) $stepChangePos[$key] + 1;
             $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos);
         }
     }
     $this->changePosStep($stepUid, $tasUid, $triUid, $type, $newPos);
 }