2010-12-02 23:34:41 +00:00
< ? php
/**
* Department . php
2012-10-19 08:51:41 -04:00
*
* @ package workflow . engine . classes . model
2011-10-10 13:25:59 -04:00
*
2010-12-02 23:34:41 +00:00
* ProcessMaker Open Source Edition
2011-01-31 14:14:55 +00:00
* Copyright ( C ) 2004 - 2011 Colosa Inc .
2011-10-10 13:25:59 -04:00
*
2010-12-02 23:34:41 +00:00
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation , either version 3 of the
* License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
2012-10-19 08:51:41 -04:00
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
2010-12-02 23:34:41 +00:00
* GNU Affero General Public License for more details .
2011-10-10 13:25:59 -04:00
*
2010-12-02 23:34:41 +00:00
* You should have received a copy of the GNU Affero General Public License
2012-10-19 08:51:41 -04:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2011-10-10 13:25:59 -04:00
*
* For more information , contact Colosa Inc , 2566 Le Jeune Rd . ,
2010-12-02 23:34:41 +00:00
* Coral Gables , FL , 33134 , USA , or email info @ colosa . com .
2011-10-10 13:25:59 -04:00
*
2010-12-02 23:34:41 +00:00
*/
require_once 'classes/model/om/BaseDepartment.php' ;
require_once 'classes/model/Users.php' ;
/**
* Skeleton subclass for representing a row from the 'DEPARTMENT' table .
*
2011-10-10 13:25:59 -04:00
*
2010-12-02 23:34:41 +00:00
*
* You should add additional methods to this class to meet the
2012-10-19 08:51:41 -04:00
* application requirements . This class will only be generated as
2010-12-02 23:34:41 +00:00
* long as it does not already exist in the output directory .
*
2012-10-19 08:51:41 -04:00
* @ package workflow . engine . classes . model
2010-12-02 23:34:41 +00:00
*/
2012-10-19 08:51:41 -04:00
class Department extends BaseDepartment
{
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
protected $depo_title = '' ;
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
/**
* Create the Department
*
* @ param array $aData
* @ return void
*/
2010-12-02 23:34:41 +00:00
2012-10-20 17:19:10 -04:00
public function create ( $aData )
2012-10-19 08:51:41 -04:00
{
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
try {
if ( isset ( $aData [ 'DEP_UID' ] )) {
$this -> setDepUid ( $aData [ 'DEP_UID' ] );
} else {
$this -> setDepUid ( G :: generateUniqueID () );
}
2011-10-10 13:25:59 -04:00
2014-10-07 15:58:46 -04:00
if ( isset ( $aData [ 'DEP_PARENT' ] ) && ( $aData [ 'DEP_PARENT' ] == '' )) {
$msgLog = 'Departament' ;
} else {
$msgLog = 'SubDepartament' ;
}
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_PARENT' ] )) {
$this -> setDepParent ( $aData [ 'DEP_PARENT' ] );
} else {
$this -> setDepParent ( '' );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_MANAGER' ] )) {
$this -> setDepManager ( $aData [ 'DEP_MANAGER' ] );
} else {
$this -> setDepManager ( '' );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_LOCATION' ] )) {
$this -> setDepLocation ( $aData [ 'DEP_LOCATION' ] );
} else {
$this -> setDepLocation ( '' );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_STATUS' ] )) {
$this -> setDepStatus ( $aData [ 'DEP_STATUS' ] );
} else {
$this -> setDepStatus ( 'ACTIVE' );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_REF_CODE' ] )) {
$this -> setDepRefCode ( $aData [ 'DEP_REF_CODE' ] );
} else {
$this -> setDepRefCode ( '' );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_LDAP_DN' ] )) {
$this -> setDepLdapDn ( $aData [ 'DEP_LDAP_DN' ] );
} else {
$this -> setDepLdapDn ( '' );
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
if ( isset ( $aData [ 'DEP_TITLE' ] )) {
$this -> setDepTitle ( $aData [ 'DEP_TITLE' ] );
2016-06-29 11:52:56 -04:00
$this -> setDepTitleContent ( $aData [ 'DEP_TITLE' ] );
2010-12-02 23:34:41 +00:00
} else {
2012-10-19 08:51:41 -04:00
$this -> setDepTitle ( '' );
2016-06-29 11:52:56 -04:00
$this -> setDepTitleContent ( '' );
2010-12-02 23:34:41 +00:00
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
if ( $this -> validate ()) {
$con -> begin ();
$res = $this -> save ();
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
$con -> commit ();
2016-03-07 10:53:56 -04:00
2014-10-10 12:19:34 -04:00
G :: auditLog ( " Create " . $msgLog , $msgLog . " Name: " . $aData [ 'DEP_TITLE' ]);
2014-10-07 15:58:46 -04:00
2012-10-19 08:51:41 -04:00
return $this -> getDepUid ();
} else {
$msg = '' ;
foreach ( $this -> getValidationFailures () as $objValidationFailure ) {
$msg .= $objValidationFailure -> getMessage () . " <br/> " ;
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
throw ( new Exception ( " The Department row cannot be created $msg " ));
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
} catch ( Exception $e ) {
$con -> rollback ();
throw ( $e );
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
/**
* Get the [ depo_title ] column value .
*
* @ return string
*/
2016-06-29 11:52:56 -04:00
public function getDepTitleContent ()
2012-10-19 08:51:41 -04:00
{
if ( $this -> getDepUid () == '' ) {
throw ( new Exception ( " Error in getDepTitle, the DEP_UID can't be blank " ));
}
$lang = defined ( 'SYS_LANG' ) ? SYS_LANG : 'en' ;
$this -> depo_title = Content :: load ( 'DEPO_TITLE' , '' , $this -> getDepUid (), $lang );
return $this -> depo_title ;
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
/**
* Set the [ depo_title ] column value .
*
* @ param string $v new value
* @ return void
*/
2016-06-29 11:52:56 -04:00
public function setDepTitleContent ( $v )
2012-10-19 08:51:41 -04:00
{
if ( $this -> getDepUid () == '' ) {
throw ( new Exception ( " Error in setGrpTitle, the GRP_UID can't be blank " ));
}
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ( $v !== null && ! is_string ( $v )) {
$v = ( string ) $v ;
}
if ( $this -> depo_title !== $v || $v === '' ) {
$this -> depo_title = $v ;
$lang = defined ( 'SYS_LANG' ) ? SYS_LANG : 'en' ;
$res = Content :: addContent ( 'DEPO_TITLE' , '' , $this -> getDepUid (), $lang , $this -> depo_title );
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
} // set()
/**
* Load the Process row specified in [ depo_id ] column value .
*
* @ param string $ProUid the uid of the Prolication
* @ return array $Fields the fields
*/
2012-10-20 17:19:10 -04:00
public function Load ( $DepUid )
2012-10-19 08:51:41 -04:00
{
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
try {
$oDept = DepartmentPeer :: retrieveByPk ( $DepUid );
if ( is_object ( $oDept ) && get_class ( $oDept ) == 'Department' ) {
$aFields = $oDept -> toArray ( BasePeer :: TYPE_FIELDNAME );
$this -> fromArray ( $aFields , BasePeer :: TYPE_FIELDNAME );
return $aFields ;
} else {
throw ( new Exception ( " The row ' $DepUid ' in table Department doesn't exist! " ));
}
} catch ( Exception $oError ) {
throw ( $oError );
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
/**
* Update the Dep row
*
* @ param array $aData
* @ return variant
*
*/
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
public function update ( $aData )
{
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
try {
$con -> begin ();
$oPro = DepartmentPeer :: retrieveByPK ( $aData [ 'DEP_UID' ] );
if ( is_object ( $oPro ) && get_class ( $oPro ) == 'Department' ) {
$oPro -> fromArray ( $aData , BasePeer :: TYPE_FIELDNAME );
if ( $oPro -> validate ()) {
if ( isset ( $aData [ 'DEPO_TITLE' ] )) {
$oPro -> setDepTitle ( $aData [ 'DEPO_TITLE' ] );
2016-06-29 11:52:56 -04:00
$oPro -> setDepTitleContent ( $aData [ 'DEPO_TITLE' ] );
2012-10-19 08:51:41 -04:00
}
if ( isset ( $aData [ 'DEP_STATUS' ] )) {
$oPro -> setDepStatus ( $aData [ 'DEP_STATUS' ] );
}
if ( isset ( $aData [ 'DEP_PARENT' ] )) {
$oPro -> setDepParent ( $aData [ 'DEP_PARENT' ] );
}
if ( isset ( $aData [ 'DEP_MANAGER' ] )) {
$oPro -> setDepManager ( $aData [ 'DEP_MANAGER' ] );
}
$res = $oPro -> save ();
$con -> commit ();
return $res ;
} else {
$msg = '' ;
foreach ( $this -> getValidationFailures () as $objValidationFailure ) {
$msg .= $objValidationFailure -> getMessage () . " <br/> " ;
}
throw ( new PropelException ( 'The Department row cannot be created!' , new PropelException ( $msg ) ));
}
} else {
$con -> rollback ();
throw ( new Exception ( " The row ' " . $aData [ 'DEP_UID' ] . " ' in table Department doesn't exist! " ));
}
} catch ( Exception $oError ) {
throw ( $oError );
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
/**
* Remove the row
*
* @ param array $aData or string $ProUid
* @ return string
*
*/
public function remove ( $ProUid )
{
if ( is_array ( $ProUid )) {
$ProUid = ( isset ( $ProUid [ 'DEP_UID' ] ) ? $ProUid [ 'DEP_UID' ] : '' );
}
try {
$oCriteria = new Criteria ( 'workflow' );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_UID );
$oCriteria -> add ( UsersPeer :: DEP_UID , $ProUid , Criteria :: EQUAL );
$oDataset = UsersPeer :: doSelectRS ( $oCriteria );
$oDataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$oDataset -> next ();
$aFields = array ();
while ( $aRow = $oDataset -> getRow ()) {
$aFields [ 'USR_UID' ] = $aRow [ 'USR_UID' ];
$aFields [ 'DEP_UID' ] = '' ;
$oDepto = UsersPeer :: retrieveByPk ( $aFields [ 'USR_UID' ] );
if ( is_object ( $oDepto ) && get_class ( $oDepto ) == 'UsersPeer' ) {
return true ;
} else {
$oDepto = new Users ();
$oDepto -> update ( $aFields );
}
$oDataset -> next ();
}
$oPro = DepartmentPeer :: retrieveByPK ( $ProUid );
if ( ! is_null ( $oPro )) {
2014-10-07 15:58:46 -04:00
$dptoTitle = $this -> Load ( $oPro -> getDepUid ());
2012-10-19 08:51:41 -04:00
Content :: removeContent ( 'DEPO_TITLE' , '' , $oPro -> getDepUid () );
Content :: removeContent ( 'DEPO_DESCRIPTION' , '' , $oPro -> getDepUid () );
2014-10-07 15:58:46 -04:00
2016-06-29 12:07:16 -04:00
G :: auditLog ( " DeleteDepartament " , " Departament Name: " . $dptoTitle [ 'DEP_TITLE' ] . " Departament ID: ( " . $oPro -> getDepUid () . " ) " );
2012-10-19 08:51:41 -04:00
return $oPro -> delete ();
} else {
throw ( new Exception ( " The row ' $ProUid ' in table Group doesn't exist! " ));
}
} catch ( Exception $oError ) {
throw ( $oError );
2010-12-02 23:34:41 +00:00
}
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
/**
* Load the Department row specified in [ depo_id ] column value .
*
* @ param string $ProUid the uid of the Prolication
* @ return array $Fields the fields
*/
2012-10-20 17:19:10 -04:00
public function existsDepartment ( $DepUid )
2012-10-19 08:51:41 -04:00
{
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
$oPro = DepartmentPeer :: retrieveByPk ( $DepUid );
if ( is_object ( $oPro ) && get_class ( $oPro ) == 'Department' ) {
return true ;
} else {
return false ;
}
2011-10-10 13:25:59 -04:00
}
2010-12-02 23:34:41 +00:00
2012-10-20 17:19:10 -04:00
public function existsUserInDepartment ( $depId , $userId )
2012-10-19 08:51:41 -04:00
{
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
$oUser = UsersPeer :: retrieveByPk ( $userId );
if ( is_object ( $oUser ) && get_class ( $oUser ) == 'Users' ) {
if ( $oUser -> getDepUid () == $depId ) {
return true ;
}
}
2010-12-02 23:34:41 +00:00
2012-10-19 08:51:41 -04:00
return false ;
}
2011-10-10 13:25:59 -04:00
2012-10-20 17:19:10 -04:00
public function updateDepartmentManager ( $depId )
2016-03-07 10:53:56 -04:00
{
2012-10-19 08:51:41 -04:00
$managerId = '' ;
$depParent = '' ;
2010-12-02 23:34:41 +00:00
$oDept = DepartmentPeer :: retrieveByPk ( $depId );
2014-10-07 15:58:46 -04:00
2012-10-19 08:51:41 -04:00
if ( is_object ( $oDept ) && get_class ( $oDept ) == 'Department' ) {
$managerId = $oDept -> getDepManager ();
$depParent = $oDept -> getDepParent ();
2010-12-02 23:34:41 +00:00
}
2011-10-10 13:25:59 -04:00
2012-10-19 08:51:41 -04:00
// update the reportsTo field to all users in that department
$conn = Propel :: getConnection ( UsersPeer :: DATABASE_NAME );
$selectCriteria = new Criteria ( 'workflow' );
$selectCriteria -> add ( UsersPeer :: DEP_UID , $depId );
$selectCriteria -> add ( UsersPeer :: USR_UID , $managerId , Criteria :: NOT_EQUAL );
// Create a Criteria object includes the value you want to set
$updateCriteria = new Criteria ( 'workflow' );
$updateCriteria -> add ( UsersPeer :: USR_REPORTS_TO , $managerId );
BasePeer :: doUpdate ( $selectCriteria , $updateCriteria , $conn );
// update manager's manager, getting the manager of PARENT DEPARTMENT in order to enable scalating
$oUser = UsersPeer :: retrieveByPk ( $managerId );
if ( is_object ( $oUser ) && get_class ( $oUser ) == 'Users' ) {
$oDept = DepartmentPeer :: retrieveByPk ( $depParent );
$oUser -> setUsrReportsTo ( '' ); //by default no manager
if ( is_object ( $oDept ) && get_class ( $oDept ) == 'Department' ) {
$managerParentId = $oDept -> getDepManager ();
if ( trim ( $managerParentId ) != '' ) {
$oUser -> setUsrReportsTo ( $managerParentId );
}
}
$oUser -> save ();
}
2016-03-07 10:53:56 -04:00
2014-10-07 15:58:46 -04:00
if ( $managerId ) {
$user = $oUser -> loadDetailed ( $managerId );
2014-10-13 17:12:58 -04:00
if ( is_object ( $oDept ) && get_class ( $oDept ) == 'Department' ) {
$dptoTitle = $oDept -> Load ( $depId );
2016-06-29 11:52:56 -04:00
G :: auditLog ( " AssignManagerToDepartament " , " Assign Manager " . $user [ 'USR_USERNAME' ] . " ( " . $managerId . " ) to " . $dptoTitle [ 'DEP_TITLE' ] . " ( " . $depId . " ) " );
2014-10-13 17:12:58 -04:00
}
2014-10-07 15:58:46 -04:00
}
2012-10-19 08:51:41 -04:00
// get children departments to update the reportsTo of these children
$childrenCriteria = new Criteria ( 'workflow' );
$childrenCriteria -> add ( DepartmentPeer :: DEP_PARENT , $depId );
$oDataset = DepartmentPeer :: doSelectRS ( $childrenCriteria );
$oDataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$oDataset -> next ();
while ( $aRow = $oDataset -> getRow ()) {
$oUser = UsersPeer :: retrieveByPk ( $aRow [ 'DEP_MANAGER' ] );
if ( is_object ( $oUser ) && get_class ( $oUser ) == 'Users' ) {
$oUser -> setUsrReportsTo ( $managerId );
$oUser -> save ();
}
$oDataset -> next ();
2011-02-07 16:54:10 +00:00
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
//add an user to a department and sync all about manager info
2012-10-20 17:19:10 -04:00
public function addUserToDepartment ( $depId , $userId , $manager , $updateManager = false )
2012-10-19 08:51:41 -04:00
{
try {
//update the field in user table
$oUser = UsersPeer :: retrieveByPk ( $userId );
2014-10-07 15:58:46 -04:00
$user = $oUser -> loadDetailed ( $userId );
$dptoTitle = $this -> Load ( $depId );
2012-10-19 08:51:41 -04:00
if ( is_object ( $oUser ) && get_class ( $oUser ) == 'Users' ) {
$oUser -> setDepUid ( $depId );
$oUser -> save ();
2016-06-29 11:52:56 -04:00
G :: auditLog ( " AssignUserToDepartament " , " Assign user " . $user [ 'USR_USERNAME' ] . " ( " . $userId . " ) to departament " . $dptoTitle [ 'DEP_TITLE' ] . " ( " . $depId . " ) " );
2012-10-19 08:51:41 -04:00
}
//if the user is a manager update Department Table
if ( $manager ) {
$oDept = DepartmentPeer :: retrieveByPk ( $depId );
if ( is_object ( $oDept ) && get_class ( $oDept ) == 'Department' ) {
$oDept -> setDepManager ( $userId );
$oDept -> save ();
}
}
//now update the reportsto to all
if ( $updateManager ) {
$this -> updateDepartmentManager ( $depId );
}
return true ;
} catch ( Exception $oError ) {
throw ( $oError );
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
// select departments
// this function is used to draw the hierachy tree view
2012-10-20 17:19:10 -04:00
public function getDepartments ( $DepParent )
2012-10-19 08:51:41 -04:00
{
try {
$result = array ();
$criteria = new Criteria ( 'workflow' );
$criteria -> add ( DepartmentPeer :: DEP_PARENT , $DepParent , Criteria :: EQUAL );
$con = Propel :: getConnection ( DepartmentPeer :: DATABASE_NAME );
$objects = DepartmentPeer :: doSelect ( $criteria , $con );
2014-03-07 11:01:44 -04:00
$oUsers = new Users ();
2012-10-19 08:51:41 -04:00
foreach ( $objects as $oDepartment ) {
$node = array ();
$node [ 'DEP_UID' ] = $oDepartment -> getDepUid ();
$node [ 'DEP_PARENT' ] = $oDepartment -> getDepParent ();
$node [ 'DEP_TITLE' ] = $oDepartment -> getDepTitle ();
$node [ 'DEP_STATUS' ] = $oDepartment -> getDepStatus ();
$node [ 'DEP_MANAGER' ] = $oDepartment -> getDepManager ();
$node [ 'DEP_LDAP_DN' ] = $oDepartment -> getDepLdapDn ();
$node [ 'DEP_LAST' ] = 0 ;
$manager = $oDepartment -> getDepManager ();
if ( $manager != '' ) {
2014-03-07 11:01:44 -04:00
$UserUID = $oUsers -> load ( $manager );
2012-10-19 08:51:41 -04:00
$node [ 'DEP_MANAGER_USERNAME' ] = isset ( $UserUID [ 'USR_USERNAME' ] ) ? $UserUID [ 'USR_USERNAME' ] : '' ;
$node [ 'DEP_MANAGER_FIRSTNAME' ] = isset ( $UserUID [ 'USR_FIRSTNAME' ] ) ? $UserUID [ 'USR_FIRSTNAME' ] : '' ;
$node [ 'DEP_MANAGER_LASTNAME' ] = isset ( $UserUID [ 'USR_LASTNAME' ] ) ? $UserUID [ 'USR_LASTNAME' ] : '' ;
} else {
$node [ 'DEP_MANAGER_USERNAME' ] = '' ;
$node [ 'DEP_MANAGER_FIRSTNAME' ] = '' ;
$node [ 'DEP_MANAGER_LASTNAME' ] = '' ;
}
2015-03-20 10:36:55 -04:00
$criteria = new \Criteria ();
$criteria -> add ( UsersPeer :: DEP_UID , $node [ 'DEP_UID' ], \Criteria :: EQUAL );
$node [ 'DEP_MEMBERS' ] = UsersPeer :: doCount ( $criteria );
2012-10-19 08:51:41 -04:00
$criteriaCount = new Criteria ( 'workflow' );
$criteriaCount -> clearSelectColumns ();
$criteriaCount -> addSelectColumn ( 'COUNT(*)' );
$criteriaCount -> add ( DepartmentPeer :: DEP_PARENT , $oDepartment -> getDepUid (), Criteria :: EQUAL );
$rs = DepartmentPeer :: doSelectRS ( $criteriaCount );
$rs -> next ();
$row = $rs -> getRow ();
$node [ 'HAS_CHILDREN' ] = $row [ 0 ];
$result [] = $node ;
}
if ( count ( $result ) >= 1 ) {
$result [ count ( $result ) - 1 ][ 'DEP_LAST' ] = 1 ;
}
return $result ;
} catch ( exception $e ) {
throw $e ;
2010-12-02 23:34:41 +00:00
}
}
2012-10-19 08:51:41 -04:00
/**
* Check department name exist in the level
*
* @ param string $departmentName name of the department
* @ param string $parentUID parent UID of the department
* @ param string $departmentUID department UID
* @ return boolean $Fields true or false
*
*/
2012-10-20 17:19:10 -04:00
public function checkDepartmentName ( $departmentName , $parentUID , $departmentUID = '' )
2012-10-19 08:51:41 -04:00
{
$oCriteria = new Criteria ( 'workflow' );
$oCriteria -> clearSelectColumns ();
$oCriteria -> addSelectColumn ( DepartmentPeer :: DEP_PARENT );
2016-06-29 11:52:56 -04:00
$oCriteria -> addSelectColumn ( DepartmentPeer :: DEP_TITLE );
$oCriteria -> add ( DepartmentPeer :: DEP_TITLE , $departmentName );
2012-10-19 08:51:41 -04:00
$oCriteria -> add ( DepartmentPeer :: DEP_UID , $departmentUID , Criteria :: NOT_EQUAL );
$oCriteria -> add ( DepartmentPeer :: DEP_PARENT , $parentUID );
$oDataset = DepartmentPeer :: doSelectRS ( $oCriteria );
$oDataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$oDataset -> next ();
$aRow = $oDataset -> getRow ();
return ( $aRow ) ? true : false ;
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
2012-10-20 17:19:10 -04:00
public function getUsersFromDepartment ( $sDepUid , $sManagerUid )
2012-10-19 08:51:41 -04:00
{
try {
$oCriteria = new Criteria ( 'workflow' );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_UID );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_REPORTS_TO );
$oCriteria -> add ( UsersPeer :: USR_STATUS , 'CLOSED' , Criteria :: NOT_EQUAL );
$oCriteria -> add ( UsersPeer :: DEP_UID , $sDepUid );
$rs = UsersPeer :: doSelectRS ( $oCriteria );
$rs -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$oUser = new Users ();
$aUsers [] = array ( 'USR_UID' => 'char' , 'USR_USERNAME' => 'char' , 'USR_FULLNAME' => 'char' , 'USR_REPORTS_TO' => 'char' , 'USR_MANAGER' => 'char'
);
$rs -> next ();
$row = $rs -> getRow ();
while ( is_array ( $row )) {
$usrFields = $oUser -> LoadDetails ( $row [ 'USR_UID' ] );
$row [ 'USR_USERNAME' ] = $usrFields [ 'USR_USERNAME' ];
$row [ 'USR_FULLNAME' ] = $usrFields [ 'USR_FULLNAME' ];
$row [ 'USR_MANAGER' ] = $row [ 'USR_UID' ] == $sManagerUid ? G :: loadTranslation ( " ID_YES " ) : G :: loadTranslation ( " ID_NO " );
$row [ 'DEP_UID' ] = $sDepUid ;
if ( $row [ 'USR_REPORTS_TO' ] != '' ) {
try {
$managerFields = $oUser -> LoadDetails ( $row [ 'USR_REPORTS_TO' ] );
$row [ 'USR_REPORTS_NAME' ] = $managerFields [ 'USR_FULLNAME' ];
} catch ( exception $e ) {
$row [ 'USR_REPORTS_NAME' ] = '.' ;
}
} else {
$row [ 'USR_REPORTS_NAME' ] = '.' ;
}
$aUsers [] = $row ;
$rs -> next ();
$row = $rs -> getRow ();
}
G :: LoadClass ( 'ArrayPeer' );
global $_DBArray ;
$_DBArray [ 'DepartmentUserList' ] = $aUsers ;
$_SESSION [ '_DBArray' ] = $_DBArray ;
$oCriteriaT = new Criteria ( 'dbarray' );
$oCriteriaT -> setDBArrayTable ( 'DepartmentUserList' );
return $oCriteriaT ;
} catch ( exception $e ) {
throw $e ;
}
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
/*
* Remove a user from Departments
* @ param string $DepUid , $UsrUid
* @ return array
*/
2012-10-20 17:19:10 -04:00
public function removeUserFromDepartment ( $DepUid , $UsrUid )
2012-10-19 08:51:41 -04:00
{
$aFields = array ( 'USR_UID' => $UsrUid , 'DEP_UID' => '' , 'USR_REPORTS_TO' => ''
);
try {
$oUser = UsersPeer :: retrieveByPk ( $UsrUid );
2014-10-07 15:58:46 -04:00
$user = $oUser -> loadDetailed ( $UsrUid );
$dptoTitle = $this -> Load ( $DepUid );
2012-10-19 08:51:41 -04:00
if ( is_object ( $oUser ) && get_class ( $oUser ) == 'Users' ) {
//$oDepto = new Users();
$oUser -> setDepUid ( '' );
$oUser -> setUsrReportsTo ( '' );
$oUser -> save ();
2016-03-07 10:53:56 -04:00
2016-06-29 11:52:56 -04:00
G :: auditLog ( " RemoveUsersFromDepartament " , " Remove user " . $user [ 'USR_USERNAME' ] . " ( " . $UsrUid . " ) from departament " . $dptoTitle [ 'DEP_TITLE' ] . " ( " . $DepUid . " ) " );
2012-10-19 08:51:41 -04:00
}
} catch ( exception $oError ) {
throw ( $oError );
}
2010-12-02 23:34:41 +00:00
}
/*
2012-10-19 08:51:41 -04:00
* Return the available users list criteria object
* @ param string $sGroupUID
* @ return object
*/
2012-10-20 17:19:10 -04:00
public function getAvailableUsersCriteria ( $sGroupUID = '' )
2010-12-02 23:34:41 +00:00
{
try {
2012-10-19 08:51:41 -04:00
$oCriteria = new Criteria ( 'workflow' );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_UID );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_FIRSTNAME );
$oCriteria -> addSelectColumn ( UsersPeer :: USR_LASTNAME );
$oCriteria -> add ( UsersPeer :: DEP_UID , " " , Criteria :: EQUAL );
$oCriteria -> add ( UsersPeer :: USR_STATUS , 'ACTIVE' );
2010-12-02 23:34:41 +00:00
return $oCriteria ;
2012-10-19 08:51:41 -04:00
} catch ( exception $oError ) {
2010-12-02 23:34:41 +00:00
throw ( $oError );
}
}
2011-10-10 13:25:59 -04:00
2010-12-02 23:34:41 +00:00
/*
* Return the cant Users In Department
* @ param string $sDepUID
* @ return object
*/
2012-10-20 17:19:10 -04:00
public function cantUsersInDepartment ( $sDepUID )
2012-10-19 08:51:41 -04:00
{
try {
$c = new Criteria ( 'workflow' );
$c -> addSelectColumn ( 'COUNT(*)' );
$c -> add ( UsersPeer :: USR_STATUS , 'CLOSED' , Criteria :: NOT_EQUAL );
$c -> add ( UsersPeer :: DEP_UID , $sDepUID );
$rs = UsersPeer :: doSelectRS ( $c );
$rs -> next ();
$row = $rs -> getRow ();
$count = $row [ 0 ];
return $count ;
} catch ( exception $oError ) {
throw ( $oError );
}
}
2012-10-20 17:19:10 -04:00
public function loadByGroupname ( $Groupname )
2012-10-19 08:51:41 -04:00
{
$c = new Criteria ( 'workflow' );
$del = DBAdapter :: getStringDelimiter ();
$c -> clearSelectColumns ();
2016-06-29 11:52:56 -04:00
$c -> addSelectColumn ( DepartmentPeer :: DEP_TITLE );
$c -> add ( DepartmentPeer :: DEP_TITLE , $Groupname );
2012-10-19 08:51:41 -04:00
return $c ;
2010-12-02 23:34:41 +00:00
}
2012-10-19 08:51:41 -04:00
//Added by Qennix
2012-10-20 17:19:10 -04:00
public function getAllDepartmentsByUser ()
2012-10-19 08:51:41 -04:00
{
$c = new Criteria ( 'workflow' );
$c -> addSelectColumn ( UsersPeer :: USR_UID );
2016-06-29 11:52:56 -04:00
$c -> addSelectColumn ( DepartmentPeer :: DEP_TITLE );
$c -> addJoin ( UsersPeer :: DEP_UID , DepartmentPeer :: DEP_UID , Criteria :: INNER_JOIN );
2012-10-19 08:51:41 -04:00
$Dat = UsersPeer :: doSelectRS ( $c );
$Dat -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$aRows = Array ();
while ( $Dat -> next ()) {
$row = $Dat -> getRow ();
$aRows [ $row [ 'USR_UID' ]] = $row [ 'DEP_TITLE' ];
}
return $aRows ;
}
2012-10-20 17:19:10 -04:00
public function getDepartmentsForUser ( $userUid )
2012-10-19 08:51:41 -04:00
{
$criteria = new Criteria ( 'workflow' );
$criteria -> addSelectColumn ( UsersPeer :: DEP_UID );
2016-06-29 11:52:56 -04:00
$criteria -> addSelectColumn ( DepartmentPeer :: DEP_TITLE );
2012-10-19 08:51:41 -04:00
$criteria -> addJoin ( UsersPeer :: DEP_UID , DepartmentPeer :: DEP_UID , Criteria :: LEFT_JOIN );
$criteria -> add ( UsersPeer :: USR_UID , $userUid );
$criteria -> add ( UsersPeer :: DEP_UID , '' , Criteria :: NOT_EQUAL );
$dataset = DepartmentPeer :: doSelectRS ( $criteria );
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$dataset -> next ();
$departments = array ();
while ( $row = $dataset -> getRow ()) {
if ( ! isset ( $departments [ $row [ 'DEP_UID' ]] )) {
$departments [ $row [ 'DEP_UID' ]] = $row ;
}
$dataset -> next ();
}
return $departments ;
2011-10-31 18:27:10 -04:00
}
2012-10-19 08:51:41 -04:00
}
2011-10-31 18:27:10 -04:00