Se agregan dos metodos para PROJECT USER
This commit is contained in:
@@ -189,7 +189,7 @@ class CaseScheduler
|
|||||||
* @param string $userPass Password
|
* @param string $userPass Password
|
||||||
* @param string $sProcessUID Process
|
* @param string $sProcessUID Process
|
||||||
*
|
*
|
||||||
* return bool Return true if the user exists, false otherwise
|
* return message if the authentication fail
|
||||||
*/
|
*/
|
||||||
public function getUser($userName, $userPass, $sProcessUID)
|
public function getUser($userName, $userPass, $sProcessUID)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -67,14 +67,10 @@ class ProjectUser
|
|||||||
$sDelimiter = \DBAdapter::getStringDelimiter();
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
||||||
$oCriteria = new \Criteria('workflow');
|
$oCriteria = new \Criteria('workflow');
|
||||||
$oCriteria->setDistinct();
|
$oCriteria->setDistinct();
|
||||||
|
$oCriteria->addSelectColumn(\UsersPeer::USR_UID);
|
||||||
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
||||||
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
||||||
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
||||||
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
|
||||||
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
||||||
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
||||||
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
||||||
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
||||||
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
||||||
$oCriteria->addJoin(\TaskUserPeer::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN);
|
$oCriteria->addJoin(\TaskUserPeer::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN);
|
||||||
$oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID);
|
$oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID);
|
||||||
@@ -89,36 +85,25 @@ class ProjectUser
|
|||||||
$oCase = new \Cases();
|
$oCase = new \Cases();
|
||||||
$startTasks = $oCase->getStartCases( $aRow['USR_UID'] );
|
$startTasks = $oCase->getStartCases( $aRow['USR_UID'] );
|
||||||
foreach ($startTasks as $task) {
|
foreach ($startTasks as $task) {
|
||||||
if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID)) {
|
if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID) ) {
|
||||||
$taskValue = explode( '(', $task['value'] );
|
$taskValue = explode( '(', $task['value'] );
|
||||||
$tasksLastIndex = count( $taskValue ) - 1;
|
$tasksLastIndex = count( $taskValue ) - 1;
|
||||||
$taskValue = explode( ')', $taskValue[$tasksLastIndex] );
|
$taskValue = explode( ')', $taskValue[$tasksLastIndex] );
|
||||||
//echo "<option value=\"" . $task['uid'] . "\">" . $taskValue[0] . "</option>";
|
$aUsers[] = array('act_name' => $taskValue[0],
|
||||||
echo $task['uid'] ." ------ ".$aUsers." fin ";
|
'act_uid' => $task['uid']);
|
||||||
//var_dump($aUsers);
|
|
||||||
if (in_array($task['uid'], $aUsers)) {
|
|
||||||
echo "Es mac";
|
|
||||||
}
|
|
||||||
|
|
||||||
$aUsers[] = array(/*'usr_uid' => $aRow['USR_UID'],
|
|
||||||
'usr_username' => $aRow['USR_USERNAME'],
|
|
||||||
'usr_firstname' => $aRow['USR_FIRSTNAME'],
|
|
||||||
'usr_lastname' => $aRow['USR_LASTNAME'],*/
|
|
||||||
'tas_name' => $taskValue[0],
|
|
||||||
'tas_uid' => $task['uid']);
|
|
||||||
if (in_array($task['uid'], $aUsers['tas_uid'] )) {
|
|
||||||
echo "Es mac";
|
|
||||||
}
|
|
||||||
echo $task['uid'] . " ";
|
|
||||||
$oDataset->next();
|
|
||||||
}
|
}
|
||||||
//$oDataset->next();
|
|
||||||
}
|
}
|
||||||
//die();
|
$oDataset->next();
|
||||||
$oDataset->next();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return $aUsers;
|
$new = array();
|
||||||
|
$exclude = array("");
|
||||||
|
for ($i = 0; $i<=count($aUsers)-1; $i++) {
|
||||||
|
if (!in_array(trim($aUsers[$i]["act_uid"]) ,$exclude)) {
|
||||||
|
$new[] = $aUsers[$i];
|
||||||
|
$exclude[] = trim($aUsers[$i]["act_uid"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $new;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
@@ -146,8 +131,8 @@ class ProjectUser
|
|||||||
$taskValue = explode( '(', $task['value'] );
|
$taskValue = explode( '(', $task['value'] );
|
||||||
$tasksLastIndex = count( $taskValue ) - 1;
|
$tasksLastIndex = count( $taskValue ) - 1;
|
||||||
$taskValue = explode( ')', $taskValue[$tasksLastIndex] );
|
$taskValue = explode( ')', $taskValue[$tasksLastIndex] );
|
||||||
$aUsers[] = array('tas_uid' => $task['uid'],
|
$aUsers[] = array('act_uid' => $task['uid'],
|
||||||
'tas_name' => $taskValue[0]);
|
'act_name' => $taskValue[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $aUsers;
|
return $aUsers;
|
||||||
@@ -156,5 +141,109 @@ class ProjectUser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the users and users groups to assigned to a process
|
||||||
|
*
|
||||||
|
* @param string $sProcessUID {@min 32} {@max 32}
|
||||||
|
* @param array $oData
|
||||||
|
*
|
||||||
|
* return array
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
public function postProjectWsUserCanStartTask($sProcessUID, $oData)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
/**
|
||||||
|
* process_webEntryValidate
|
||||||
|
* validates if the username and password are valid data and if the user assigned
|
||||||
|
* to the webentry has the rights and persmissions required
|
||||||
|
*/
|
||||||
|
$sPRO_UID = $sProcessUID;
|
||||||
|
$sTASKS = $oData['act_uid'];
|
||||||
|
$sTASKS_SEL = $oData->TASKS_NAME;
|
||||||
|
$sDYNAFORM = $oData->DYNAFORM;
|
||||||
|
$sWE_TYPE = $oData->WE_TYPE;
|
||||||
|
$sWS_USER = trim( $oData['username'] );
|
||||||
|
$sWS_PASS = trim( $oData['password'] );
|
||||||
|
$sWS_ROUNDROBIN = $oData->WS_ROUNDROBIN;
|
||||||
|
$sWE_USR = $oData->WE_USR;
|
||||||
|
if (\G::is_https())
|
||||||
|
$http = 'https://';
|
||||||
|
else
|
||||||
|
$http = 'http://';
|
||||||
|
$endpoint = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/wsdl2';
|
||||||
|
@$client = new \SoapClient( $endpoint );
|
||||||
|
$user = $sWS_USER;
|
||||||
|
$pass = $sWS_PASS;
|
||||||
|
$params = array ('userid' => $user,'password' => $pass);
|
||||||
|
$result = $client->__SoapCall('login', array ($params));
|
||||||
|
$fields['status_code'] = $result->status_code;
|
||||||
|
$fields['message'] = 'ProcessMaker WebService version: ' . $result->version . "\n" . $result->message;
|
||||||
|
$fields['version'] = $result->version;
|
||||||
|
$fields['time_stamp'] = $result->timestamp;
|
||||||
|
$messageCode = 1;
|
||||||
|
\G::LoadClass( 'Task' );
|
||||||
|
\G::LoadClass( 'User' );
|
||||||
|
\G::LoadClass( 'TaskUser' );
|
||||||
|
\G::LoadClass( 'Groupwf' );
|
||||||
|
/**
|
||||||
|
* note added by gustavo cruz gustavo-at-colosa-dot-com
|
||||||
|
* This is a little check to see if the GroupUser class has been declared or not.
|
||||||
|
* Seems that the problem its present in a windows installation of PM however.
|
||||||
|
* It's seems that could be replicated in a Linux server easily.
|
||||||
|
* I recomend that in some way check already if a imported class is declared
|
||||||
|
* somewhere else or maybe delegate the task to the G Class LoadClass method.
|
||||||
|
*/
|
||||||
|
if (! class_exists( 'GroupUser' )) {
|
||||||
|
\G::LoadClass( 'GroupUser' );
|
||||||
|
}
|
||||||
|
// if the user has been authenticated, then check if has the rights or
|
||||||
|
// permissions to create the webentry
|
||||||
|
if ($result->status_code == 0) {
|
||||||
|
$oCriteria = new \Criteria( 'workflow' );
|
||||||
|
$oCriteria->addSelectColumn( \UsersPeer::USR_UID );
|
||||||
|
$oCriteria->addSelectColumn( \TaskUserPeer::USR_UID );
|
||||||
|
$oCriteria->addSelectColumn( \TaskUserPeer::TAS_UID );
|
||||||
|
$oCriteria->addSelectColumn( \UsersPeer::USR_USERNAME );
|
||||||
|
$oCriteria->addSelectColumn( \UsersPeer::USR_FIRSTNAME );
|
||||||
|
$oCriteria->addSelectColumn( \UsersPeer::USR_LASTNAME );
|
||||||
|
$oCriteria->addJoin( \TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN );
|
||||||
|
$oCriteria->add( \TaskUserPeer::TAS_UID, $sTASKS );
|
||||||
|
$oCriteria->add( \UsersPeer::USR_USERNAME, $sWS_USER );
|
||||||
|
//$oCriteria->add(TaskUserPeer::TU_RELATION,1);
|
||||||
|
$userIsAssigned = \TaskUserPeer::doCount( $oCriteria );
|
||||||
|
// if the user is not assigned directly, maybe a have the task a group with the user
|
||||||
|
if ($userIsAssigned < 1) {
|
||||||
|
$oCriteria = new \Criteria( 'workflow' );
|
||||||
|
$oCriteria->addSelectColumn( \UsersPeer::USR_UID );
|
||||||
|
$oCriteria->addJoin( \UsersPeer::USR_UID, \GroupUserPeer::USR_UID, \Criteria::LEFT_JOIN );
|
||||||
|
$oCriteria->addJoin( \GroupUserPeer::GRP_UID, \TaskUserPeer::USR_UID, \Criteria::LEFT_JOIN );
|
||||||
|
$oCriteria->add( \TaskUserPeer::TAS_UID, $sTASKS );
|
||||||
|
$oCriteria->add( \UsersPeer::USR_USERNAME, $sWS_USER );
|
||||||
|
$userIsAssigned = \GroupUserPeer::doCount( $oCriteria );
|
||||||
|
if (! ($userIsAssigned >= 1)) {
|
||||||
|
$messageCode = "The User `" . $sWS_USER . "` doesn't have the activity `" . $sTASKS . "` assigned";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
||||||
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||||
|
$oDataset->next();
|
||||||
|
while ($aRow = $oDataset->getRow()) {
|
||||||
|
$messageCode = array('usr_uid' => $aRow['USR_UID'],
|
||||||
|
'usr_username' => $aRow['USR_USERNAME'],
|
||||||
|
'usr_firstname' => $aRow['USR_FIRSTNAME'],
|
||||||
|
'usr_lastname' => $aRow['USR_LASTNAME']);
|
||||||
|
$oDataset->next();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$messageCode = $result->message;
|
||||||
|
}
|
||||||
|
return $messageCode;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,42 @@ class ProjectUsers extends Api
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $prjUid {@min 32} {@max 32}
|
||||||
|
* @param wsUserCanStartTaskStructure $request_data
|
||||||
|
*
|
||||||
|
* @url POST /:prjUid/ws/user/can-start-task
|
||||||
|
*/
|
||||||
|
public function doGetProjectWsUserCanStartTask($prjUid, wsUserCanStartTaskStructure $request_data = null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$request_data = (array)($request_data);
|
||||||
|
$user = new \BusinessModel\ProjectUser();
|
||||||
|
$objectData = $user->postProjectWsUserCanStartTask($prjUid, $request_data);
|
||||||
|
//Response
|
||||||
|
$response = $objectData;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
//response
|
||||||
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class wsUserCanStartTaskStructure
|
||||||
|
{ /**
|
||||||
|
* @var string {@from body} {@min 32} {@max 32}
|
||||||
|
*/
|
||||||
|
public $act_uid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string {@from body}
|
||||||
|
*/
|
||||||
|
public $username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string {@from body}
|
||||||
|
*/
|
||||||
|
public $password;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user