PMCORE-985

This commit is contained in:
Paula Quispe
2021-02-02 15:08:52 -04:00
parent 25447d0669
commit 9849c4b01b

View File

@@ -2,6 +2,7 @@
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use ProcessMaker\BusinessModel\Cases as BusinessModelCases; use ProcessMaker\BusinessModel\Cases as BusinessModelCases;
use ProcessMaker\BusinessModel\Light\NotificationDevice;
use ProcessMaker\BusinessModel\Task as BusinessModelTask; use ProcessMaker\BusinessModel\Task as BusinessModelTask;
use ProcessMaker\BusinessModel\User as BusinessModelUser; use ProcessMaker\BusinessModel\User as BusinessModelUser;
use ProcessMaker\BusinessModel\WebEntryEvent; use ProcessMaker\BusinessModel\WebEntryEvent;
@@ -5720,159 +5721,52 @@ class Cases
} }
} }
public function getTo($taskUid, $userUid, $arrayData) /**
* Get the to email
*
* @param string $taskUid
* @param string $userUid
* @param array $caseData
*
* @return array
*/
public function getTo($taskUid, $userUid, $caseData)
{ {
$to = null; $response = [];
$cc = null; $to = '';
$arrayResp = array(); $cc = '';
$tasks = new Tasks();
$group = new Groups();
$oUser = new Users();
$task = TaskPeer::retrieveByPK($taskUid); $task = TaskPeer::retrieveByPK($taskUid);
switch ($task->getTasAssignType()) { switch ($task->getTasAssignType()) {
case 'SELF_SERVICE': case 'SELF_SERVICE':
$to = ''; // Load the user that can claim the case
$cc = ''; $light = new NotificationDevice();
$userUids = $light->getTaskUserSelfService($taskUid, $caseData);
//Query // Get the user information for send the email
$criteria = new Criteria('workflow'); foreach ($userUids as $userUid) {
$u = new Users();
$criteria->addSelectColumn(UsersPeer::USR_UID); $user = $u->load($userUid);
$criteria->addSelectColumn(UsersPeer::USR_USERNAME); $toAux = ((!empty($user['USR_FIRSTNAME']) || !empty($user['USR_LASTNAME'])) ? $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME'] . ' ' : '') . '<' . $user['USR_EMAIL'] . '>';
$criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); if (empty($to)) {
$criteria->addSelectColumn(UsersPeer::USR_LASTNAME); $to = $toAux;
$criteria->addSelectColumn(UsersPeer::USR_EMAIL); } else {
$to .= ',' . $toAux;
$criteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL);
$rsCriteria = null;
if (trim($task->getTasGroupVariable()) != '') {
//SELF_SERVICE_VALUE
$variable = trim($task->getTasGroupVariable(), ' @#%?$=');
//Query
if (isset($arrayData[$variable])) {
$data = $arrayData[$variable];
switch (gettype($data)) {
case 'string':
$criteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
$criteria->add(GroupUserPeer::GRP_UID, $data, Criteria::EQUAL);
$rsCriteria = GroupUserPeer::doSelectRS($criteria);
break;
case 'array':
$criteria->add(UsersPeer::USR_UID, $data, Criteria::IN);
$rsCriteria = UsersPeer::doSelectRS($criteria);
break;
}
}
} else {
//SELF_SERVICE
$arrayTaskUser = [];
$arrayAux1 = $tasks->getGroupsOfTask($taskUid, 1);
foreach ($arrayAux1 as $arrayGroup) {
$arrayAux2 = $group->getUsersOfGroup($arrayGroup['GRP_UID']);
foreach ($arrayAux2 as $arrayUser) {
$arrayTaskUser [] = $arrayUser ['USR_UID'];
}
}
$arrayAux1 = $tasks->getUsersOfTask($taskUid, 1);
foreach ($arrayAux1 as $arrayUser) {
$arrayTaskUser[] = $arrayUser['USR_UID'];
}
//Query
$criteria->add(UsersPeer::USR_UID, $arrayTaskUser, Criteria::IN);
$rsCriteria = UsersPeer::doSelectRS($criteria);
}
if (!is_null($rsCriteria)) {
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$record = $rsCriteria->getRow();
$toAux = (($record['USR_FIRSTNAME'] != '' || $record['USR_LASTNAME'] != '') ? $record['USR_FIRSTNAME'] . ' ' . $record['USR_LASTNAME'] . ' ' : '') . '<' . $record['USR_EMAIL'] . '>';
if ($to == '') {
$to = $toAux;
} else {
$to .= ',' . $toAux;
}
} }
} }
$response ['to'] = $to;
$arrayResp['to'] = $to; $response ['cc'] = '';
$arrayResp['cc'] = $cc;
break;
case "MULTIPLE_INSTANCE":
$to = null;
$cc = null;
$sw = 1;
$oDerivation = new Derivation();
$userFields = $oDerivation->getUsersFullNameFromArray($oDerivation->getAllUsersFromAnyTask($taskUid));
if (isset($userFields)) {
foreach ($userFields as $row) {
$toAux = ((($row ["USR_FIRSTNAME"] != "") || ($row ["USR_LASTNAME"] != "")) ? $row ["USR_FIRSTNAME"] . " " . $row ["USR_LASTNAME"] . " " : "") . "<" . $row ["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$to .= ',' . $toAux;
}
}
$arrayResp ['to'] = $to;
$arrayResp ['cc'] = $cc;
}
break;
case "MULTIPLE_INSTANCE_VALUE_BASED":
$oTask = new Task();
$aTaskNext = $oTask->load($taskUid);
if (isset($aTaskNext ["TAS_ASSIGN_VARIABLE"]) && !empty($aTaskNext ["TAS_ASSIGN_VARIABLE"])) {
$to = null;
$cc = null;
$sw = 1;
$nextTaskAssignVariable = trim($aTaskNext ["TAS_ASSIGN_VARIABLE"], " @#");
$arrayUsers = $arrayData [$nextTaskAssignVariable];
$oDerivation = new Derivation();
$userFields = $oDerivation->getUsersFullNameFromArray($arrayUsers);
foreach ($userFields as $row) {
$toAux = ((($row ["USR_FIRSTNAME"] != "") || ($row ["USR_LASTNAME"] != "")) ? $row ["USR_FIRSTNAME"] . " " . $row ["USR_LASTNAME"] . " " : "") . "<" . $row ["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$to .= ',' . $toAux;
}
}
$arrayResp ['to'] = $to;
$arrayResp ['cc'] = $cc;
}
break; break;
default: default:
if (isset($userUid) && !empty($userUid)) { // Load the user assigned for send the email
$aUser = $oUser->load($userUid); if (!empty($userUid)) {
$u = new Users();
$to = ((($aUser ["USR_FIRSTNAME"] != "") || ($aUser ["USR_LASTNAME"] != "")) ? $aUser ["USR_FIRSTNAME"] . " " . $aUser ["USR_LASTNAME"] . " " : "") . "<" . $aUser ["USR_EMAIL"] . ">"; $user = $u->load($userUid);
$to = ((!empty($user['USR_FIRSTNAME']) || !empty($user['USR_LASTNAME'])) ? $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME'] . ' ' : '') . '<' . $user['USR_EMAIL'] . '>';
} }
$arrayResp ['to'] = $to; $response ['to'] = $to;
$arrayResp ['cc'] = ''; $response ['cc'] = '';
break; break;
} }
return $arrayResp; return $response;
} }
/** /**