From cf6cefe502610f801a5e05c4b33b4665edf6ab32 Mon Sep 17 00:00:00 2001 From: Freddy Daniel Rojas Valda Date: Wed, 22 Jan 2014 15:57:12 -0400 Subject: [PATCH] Se agregan dos metodos GET para PROJECT USERS. Se agrega validacion en OUTPUT DOCUMENTS --- .../src/BusinessModel/OutputDocument.php | 3 + .../engine/src/BusinessModel/ProjectUser.php | 160 ++++++++++++++++++ .../Api/ProcessMaker/Project/ProjectUsers.php | 75 ++++++++ workflow/engine/src/Services/api.ini | 1 + 4 files changed, 239 insertions(+) create mode 100644 workflow/engine/src/BusinessModel/ProjectUser.php create mode 100644 workflow/engine/src/Services/Api/ProcessMaker/Project/ProjectUsers.php diff --git a/workflow/engine/src/BusinessModel/OutputDocument.php b/workflow/engine/src/BusinessModel/OutputDocument.php index da77b1944..bd1960108 100644 --- a/workflow/engine/src/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/BusinessModel/OutputDocument.php @@ -246,6 +246,9 @@ class OutputDocument if (!$process->exists($sProcessUID)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($sProcessUID, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}"))); } + if ($aData["OUT_DOC_TITLE"]=="") { + throw (new \Exception( 'invalid value specified for `out_doc_title`, can`t be null')); + } if (isset($aData["OUT_DOC_TITLE"]) && $this->existsTitle($sProcessUID, $aData["OUT_DOC_TITLE"])) { throw (new \Exception(\G::LoadTranslation("ID_OUTPUT_NOT_SAVE"))); } diff --git a/workflow/engine/src/BusinessModel/ProjectUser.php b/workflow/engine/src/BusinessModel/ProjectUser.php new file mode 100644 index 000000000..71e3f95cb --- /dev/null +++ b/workflow/engine/src/BusinessModel/ProjectUser.php @@ -0,0 +1,160 @@ +setDistinct(); + $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); + $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::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN); + $oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID); + $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); + $oCriteria->add(\TaskUserPeer::TU_RELATION, 1); + $oCriteria->addGroupByColumn(USR_UID); + $oDataset = \TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers[] = array('usr_uid' => $aRow['USR_UID'], + 'usr_username' => $aRow['USR_USERNAME'], + 'usr_firstname' => $aRow['USR_FIRSTNAME'], + 'usr_lastname' => $aRow['USR_LASTNAME']); + $oDataset->next(); + } + return $aUsers; + } catch (Exception $e) { + throw $e; + } + } + + /** + * Return the users and users groups to assigned to a process + * + * @param string $sProcessUID {@min 32} {@max 32} + * + * return array + * + * @access public + */ + public function getProjectStartingTasks($sProcessUID) + { + try { + $aUsers = array(); + $sDelimiter = \DBAdapter::getStringDelimiter(); + $oCriteria = new \Criteria('workflow'); + $oCriteria->setDistinct(); + $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); + $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::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN); + $oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID); + $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); + $oCriteria->add(\TaskUserPeer::TU_RELATION, 1); + $oCriteria->addGroupByColumn(USR_UID); + $oDataset = \TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + \G::LoadClass( 'case' ); + $oCase = new \Cases(); + $startTasks = $oCase->getStartCases( $aRow['USR_UID'] ); + foreach ($startTasks as $task) { + if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID)) { + $taskValue = explode( '(', $task['value'] ); + $tasksLastIndex = count( $taskValue ) - 1; + $taskValue = explode( ')', $taskValue[$tasksLastIndex] ); + //echo ""; + echo $task['uid'] ." ------ ".$aUsers["tas_uid"]." fin "; + //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(); + + } + return $aUsers; + } catch (Exception $e) { + throw $e; + } + } + + /** + * Return the users and users groups to assigned to a process + * + * @param string $sProcessUID {@min 32} {@max 32} + * @param string $sUserUID {@min 32} {@max 32} + * + * return array + * + * @access public + */ + public function getProjectStartingTaskUsers($sProcessUID, $sUserUID) + { + try { + $aUsers = array(); + \G::LoadClass( 'case' ); + $oCase = new \Cases(); + $startTasks = $oCase->getStartCases($sUserUID); + foreach ($startTasks as $task) { + if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID)) { + $taskValue = explode( '(', $task['value'] ); + $tasksLastIndex = count( $taskValue ) - 1; + $taskValue = explode( ')', $taskValue[$tasksLastIndex] ); + $aUsers[] = array('tas_uid' => $task['uid'], + 'tas_name' => $taskValue[0]); + } + } + return $aUsers; + } catch (Exception $e) { + throw $e; + } + } + +} + diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProjectUsers.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProjectUsers.php new file mode 100644 index 000000000..d765d7a77 --- /dev/null +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProjectUsers.php @@ -0,0 +1,75 @@ +getProjectUsers($prjUid); + //Response + $response = $arrayData; + } catch (\Exception $e) { + //response + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + return $response; + } + + /** + * @param string $prjUid {@min 32} {@max 32} + * + * @url GET /:prjUid/starting-tasks + */ + public function doGetProjectStartingTasks($prjUid) + { + try { + $supervisor = new \BusinessModel\ProjectUser(); + $arrayData = $supervisor->getProjectStartingTasks($prjUid); + //Response + $response = $arrayData; + } catch (\Exception $e) { + //response + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + return $response; + } + + /** + * @param string $prjUid {@min 32} {@max 32} + * @param string $usrUid {@min 32} {@max 32} + * + * @url GET /:prjUid/user/:usrUid/starting-tasks + */ + public function doGetProjectStartingTaskUsers($prjUid, $usrUid) + { + try { + $supervisor = new \BusinessModel\ProjectUser(); + $arrayData = $supervisor->getProjectStartingTaskUsers($prjUid, $usrUid); + //Response + $response = $arrayData; + } catch (\Exception $e) { + //response + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + return $response; + } + + + + +} diff --git a/workflow/engine/src/Services/api.ini b/workflow/engine/src/Services/api.ini index 4226271a4..f947ceb21 100644 --- a/workflow/engine/src/Services/api.ini +++ b/workflow/engine/src/Services/api.ini @@ -28,6 +28,7 @@ debug = 1 case-scheduler = "Services\Api\ProcessMaker\Project\CaseScheduler" case-tracker = "Services\Api\ProcessMaker\Project\CaseTracker" case-tracker-object = "Services\Api\ProcessMaker\Project\CaseTrackerObject" + project-users = "Services\Api\ProcessMaker\Project\ProjectUsers" [alias: projects] project = "Services\Api\ProcessMaker\Project"