コード例 #1
0
 /**
  * Validate Process Uid
  * @var string $cto_uid. Uid for Process
  * @var string $pro_uid. Uid for Task
  * @var string $cto_pos. Position for Step
  *
  * @author Brayan Pereyra (Cochalo) <*****@*****.**>
  * @copyright Colosa - Bolivia
  *
  * @return void
  */
 public function moveCaseTrackerObject($cto_uid, $pro_uid, $cto_pos)
 {
     $aCaseTrackerObject = CaseTracker::getCaseTrackerObjects($pro_uid);
     foreach ($aCaseTrackerObject as $dataCaseTracker) {
         if ($dataCaseTracker['cto_uid'] == $cto_uid) {
             $prStepPos = (int) $dataCaseTracker['cto_position'];
         }
     }
     $seStepPos = $cto_pos;
     //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);
     foreach ($aCaseTrackerObject as $dataCaseTracker) {
         if (in_array($dataCaseTracker['cto_position'], $range) && $dataCaseTracker['cto_uid'] != $cto_uid) {
             $caseTrackerObjectIds[] = $dataCaseTracker['cto_uid'];
             $caseTrackerObjectPos[] = $dataCaseTracker['cto_position'];
         }
     }
     foreach ($caseTrackerObjectIds as $key => $value) {
         if ($modPos == 'UP') {
             $tempPos = (int) $caseTrackerObjectPos[$key] - 1;
             $this->changePosCaseTrackerObject($value, $tempPos);
         } else {
             $tempPos = (int) $caseTrackerObjectPos[$key] + 1;
             $this->changePosCaseTrackerObject($value, $tempPos);
         }
     }
     $this->changePosCaseTrackerObject($cto_uid, $newPos);
 }