This commit is contained in:
Paula Quispe
2018-09-07 12:01:42 -04:00
parent 4b632795cd
commit 4382bbc7bb
3 changed files with 96 additions and 50 deletions

View File

@@ -380,44 +380,56 @@ class Cases
return $rows;
}
public function isSelfService($USR_UID, $TAS_UID, $APP_UID = '')
/**
* Checks if at least one of the users tasks is self-service
*
* @param string $usrUid
* @param string $tasUid
* @param string $appUid
*
* @return boolean
*/
public function isSelfService($usrUid, $tasUid, $appUid = '')
{
$tasks = $this->getSelfServiceTasks($USR_UID);
foreach ($tasks as $key => $val) {
if ($TAS_UID === $val['uid']) {
return true;
}
}
if (!empty($APP_UID)) {
$task = new Task();
$arrayTaskData = $task->load($TAS_UID);
$taskGroupVariable = trim($arrayTaskData['TAS_GROUP_VARIABLE'], ' @#');
$caseData = $this->loadCase($APP_UID);
if (isset($caseData['APP_DATA'][$taskGroupVariable])) {
$dataVariable = $caseData['APP_DATA'][$taskGroupVariable];
if (empty($dataVariable)) {
return false;
}
$dataVariable = is_array($dataVariable)? $dataVariable : (array)trim($dataVariable);
if (in_array($USR_UID, $dataVariable, true)) {
return true;
}
$groups = new Groups();
foreach ($groups->getActiveGroupsForAnUser($USR_UID) as $key => $group) {
if (in_array($group, $dataVariable, true)) {
$selfServiceVariable = Task::getVariableUsedInSelfService($tasUid);
switch ($selfServiceVariable){
case Task::TASK_ASSIGN_TYPE_NO_SELF_SERVICE:
return false;
break;
case Task::SELF_SERVICE_WITHOUT_VARIABLE:
$tasks = $this->getSelfServiceTasks($usrUid);
foreach ($tasks as $key => $val) {
if ($tasUid === $val['uid']) {
return true;
}
}
}
return false;
break;
default://When is "Self Service Value Based Assignment"
if (!empty($appUid)) {
//If is Self service Value Based we will be get the value of variable defined in $selfServiceType
$selfServiceType = trim($selfServiceVariable, ' @#');
$caseData = $this->loadCase($appUid);
if (isset($caseData['APP_DATA'][$selfServiceType])) {
$dataVariable = $caseData['APP_DATA'][$selfServiceType];
if (empty($dataVariable)) {
return false;
}
$dataVariable = is_array($dataVariable) ? $dataVariable : (array)trim($dataVariable);
if (in_array($usrUid, $dataVariable, true)) {
return true;
}
$groups = new Groups();
foreach ($groups->getActiveGroupsForAnUser($usrUid) as $key => $group) {
if (in_array($group, $dataVariable, true)) {
return true;
}
}
}
}
}
return false;

View File

@@ -16,6 +16,10 @@
*/
class Task extends BaseTask
{
const TASK_ASSIGN_TYPE_NO_SELF_SERVICE = null;
const TASK_ASSIGN_TYPE_SELF_SERVICE = 'SELF_SERVICE';
const SELF_SERVICE_WITHOUT_VARIABLE = 'YES';
const tas_type_events = [
'INTERMEDIATE-THROW-MESSAGE-EVENT',
'INTERMEDIATE-THROW-EMAIL-EVENT',
@@ -845,6 +849,38 @@ class Task extends BaseTask
throw $e;
}
}
/**
* Review if the task is "Self Service"
* If the task is not self service, the function returns null
* If the task is self service, the function returns the self service variable
*
* @param string $tasUid
*
* @return string|null
*/
public static function getVariableUsedInSelfService($tasUid)
{
$criteria = new Criteria();
$criteria->add(TaskPeer::TAS_UID, $tasUid);
$task = TaskPeer::doSelectOne($criteria);
if (!is_null($task)) {
//Review if is "Self Service"
if ($task->getTasAssignType() === self::TASK_ASSIGN_TYPE_SELF_SERVICE) {
$variableInSelfService = $task->getTasGroupVariable();
//Review if is "Self Service Value Based Assignment"
if (empty($variableInSelfService)) {
return self::SELF_SERVICE_WITHOUT_VARIABLE;
} else {
return $variableInSelfService;
}
} else {
self::TASK_ASSIGN_TYPE_NO_SELF_SERVICE;
}
} else {
self::TASK_ASSIGN_TYPE_NO_SELF_SERVICE;
}
}
}