diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Department.php b/workflow/engine/src/ProcessMaker/BusinessModel/Department.php index 28219e9dd..85fa99119 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Department.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Department.php @@ -135,9 +135,24 @@ class Department * * @return array */ - public function getAvailableUser($dep_uid) + public function getAvailableUser($dep_uid, $start = 0, $limit = 0, $search = '') { $dep_uid = Validator::depUid($dep_uid); + + $start = (int)$start; + $start = abs($start); + if ($start != 0) { + $start+1; + } + + $limit = (int)$limit; + $limit = abs($limit); + if ($limit == 0) { + $limit = 25; + } else { + $limit = (int)$limit; + } + $oCriteria = new \Criteria( 'workflow' ); $oCriteria->addSelectColumn( UsersPeer::USR_UID ); $oCriteria->addSelectColumn( UsersPeer::USR_USERNAME ); @@ -147,6 +162,13 @@ class Department $oCriteria->add( UsersPeer::DEP_UID, '' ); $oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', \Criteria::NOT_EQUAL ); + $oCriteria->setLimit( $limit ); + $oCriteria->setOffset( $start ); + + if ($search != '') { + $oCriteria->add( $oCriteria->getNewCriterion( UsersPeer::USR_USERNAME, '%' . $search . '%', \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $search . '%', \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $search . '%', \Criteria::LIKE ) ) ) ); + } + $oDataset = UsersPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); $aUsers = array (); @@ -257,11 +279,26 @@ class Department $dep_uid = Validator::depUid($dep_uid); $usr_uid = Validator::usrUid($usr_uid); + $oCriteria = new \Criteria( 'workflow' ); + $oCriteria->addSelectColumn( DepartmentPeer::DEP_UID ); + $oCriteria->add( DepartmentPeer::DEP_MANAGER, $usr_uid, \Criteria::EQUAL ); + + $oDataset = DepartmentPeer::doSelectRS( $oCriteria ); + $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + if ($oDataset->next()) { + throw (new \Exception(\G::LoadTranslation("ID_DEPARTMENT_MANAGER_EXIST", array('usr_uid',$usr_uid)))); + } + $editDepartment['DEP_UID'] = $dep_uid; $editDepartment['DEP_MANAGER'] = $usr_uid; $oDept = new \Department(); $oDept->update( $editDepartment ); $oDept->updateDepartmentManager( $dep_uid ); + + $oDept = new \Department(); + $oDept->load($dep_uid); + $oDept->addUserToDepartment($dep_uid, $usr_uid, ($oDept->getDepManager() == "")? true : false, false); + $oDept->updateDepartmentManager($dep_uid); } /** diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Department.php b/workflow/engine/src/ProcessMaker/Services/Api/Department.php index a869364b3..f2cc5994a 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Department.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Department.php @@ -59,6 +59,9 @@ class Department extends Api /** * @param string $dep_uid {@min 1}{@max 32} + * @param string $start {@from path} + * @param string $limit {@from path} + * @param string $search {@from path} * * @access public * @author Brayan Pereyra (Cochalo) @@ -68,11 +71,11 @@ class Department extends Api * * @url GET /:dep_uid/available-user */ - public function doGetAvailableUser($dep_uid) + public function doGetAvailableUser($dep_uid, $start = 0, $limit = 0, $search = '') { try { $oDepartment = new \ProcessMaker\BusinessModel\Department(); - $response = $oDepartment->getAvailableUser($dep_uid); + $response = $oDepartment->getAvailableUser($dep_uid, $start, $limit, $search); return $response; } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));