Merged in cochalo/processmaker (pull request #220)

Actualizacion de steps y reordenamiento
This commit is contained in:
erik ao
2014-02-21 10:44:50 -04:00
2 changed files with 118 additions and 1 deletions

View File

@@ -1854,6 +1854,99 @@ class Task
}
}
/**
* 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_uid_rel. Uid Step for relation
* @var string $type. Type relation
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @return void
*/
public function moveSteps($pro_uid, $tas_uid, $step_uid, $step_uid_rel, $type) {
$pro_uid = $this->validateProUid($pro_uid);
$tas_uid = $this->validateActUid($tas_uid);
$this->setFormatFieldNameInUppercase(false);
$this->setArrayParamException(array("taskUid" => "act_uid"));
$aSteps = $this->getSteps($tas_uid);
foreach ($aSteps as $dataStep) {
if ($dataStep['step_uid'] == $step_uid) {
$prStepPos = (int)$dataStep['step_position'];
} elseif ($dataStep['step_uid'] == $step_uid_rel) {
$seStepPos = (int)$dataStep['step_position'];
}
}
//Principal Step is up
if ($prStepPos < $seStepPos) {
$modPos = 'UP';
if ($type == 'DOWN') {
$newPos = $seStepPos;
$iniPos = $prStepPos+1;
$finPos = $seStepPos;
} else {
$newPos = $seStepPos-1;
$iniPos = $prStepPos+1;
$finPos = $seStepPos-1;
}
} else {
$modPos = 'DOWN';
if ($type == 'UP') {
$newPos = $seStepPos;
$iniPos = $seStepPos;
$finPos = $prStepPos-1;
} else {
$newPos = $seStepPos-1;
$iniPos = $seStepPos-1;
$finPos = $prStepPos-1;
}
}
$range = range($iniPos, $finPos);
foreach ($aSteps as $dataStep) {
if ((in_array($dataStep['step_position'], $range)) && ($dataStep['step_uid'] != $step_uid)) {
$stepChangeIds[] = $dataStep['step_uid'];
$stepChangePos[] = $dataStep['step_position'];
}
}
foreach ($stepChangeIds as $key => $value) {
if ($modPos == 'UP') {
$tempPos = ((int)$stepChangePos[$key])-1;
$this->changePosStep($value, $tempPos);
} else {
$tempPos = ((int)$stepChangePos[$key])+1;
$this->changePosStep($value, $tempPos);
}
}
$this->changePosStep($step_uid, $newPos);
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for process
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @return string
*/
public function changePosStep ($step_uid, $pos)
{
$data = array(
'STEP_UID' => $step_uid,
'STEP_POSITION' => $pos
);
$oStep = new \Step();
$oStep->update($data);
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for process

View File

@@ -120,7 +120,6 @@ class Activity extends Api
$task->setArrayParamException(array("taskUid" => "act_uid", "stepUid" => "step_uid"));
$response = $task->getSteps($act_uid);
return $response;
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
@@ -147,6 +146,31 @@ class Activity extends Api
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
/**
* @param string $prj_uid {@min 1} {@max 32}
* @param string $act_uid {@min 1} {@max 32}
* @param string $step_uid {@min 1} {@max 32}
* @param string $step_uid_rel {@min 1} {@max 32}
* @param string $type_change {@choice UP,DOWN}
*
* @access public
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*
* @return void
*
* @url PUT /:prj_uid/activity/:act_uid/step-move/:step_uid/:step_uid_rel/:type_change
*/
public function doPutStepsMoves ($prj_uid, $act_uid, $step_uid, $step_uid_rel, $type_change)
{
try {
$task = new \BusinessModel\Task();
$task->moveSteps($prj_uid, $act_uid, $step_uid, $step_uid_rel, $type_change);
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
}
}