diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 566a05a42..8915b2c47 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -964,7 +964,17 @@ class wsBase return $result; } - $department = new department(); + $department = new Department(); + if ( ($parentUID != '') && !($department->existsDepartment($parentUID)) ) { + $result = new wsCreateDepartmentResponse (26, G::loadTranslation ('ID_PARENT_DEPARTMENT_NOT_EXIST'), $parentUID); + return $result; + } + + if ( $department->checkDepartmentName($departmentName, $parentUID ) ) { + $result = new wsCreateDepartmentResponse (27, G::loadTranslation ('ID_DEPARTMENT_EXISTS'), ''); + return $result; + } + $row['DEP_TITLE'] = $departmentName; $row['DEP_PARENT'] = $parentUID; diff --git a/workflow/engine/classes/model/Department.php b/workflow/engine/classes/model/Department.php index 331c79e88..a834cbbf4 100755 --- a/workflow/engine/classes/model/Department.php +++ b/workflow/engine/classes/model/Department.php @@ -444,6 +444,37 @@ function getDepartments( $DepParent ) { } } + /** + * 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 + * + */ + function checkDepartmentName($departmentName, $parentUID, $departmentUID = '' ) + { + $oCriteria = new Criteria('workflow'); + + $oCriteria->clearSelectColumns(); + $oCriteria->addSelectColumn( ContentPeer::CON_CATEGORY ); + $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); + $oCriteria->addSelectColumn( DepartmentPeer::DEP_PARENT ); + $oCriteria->add(ContentPeer::CON_CATEGORY, 'DEPO_TITLE'); + $oCriteria->addJoin(ContentPeer::CON_ID, DepartmentPeer::DEP_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ContentPeer::CON_VALUE, $departmentName); + $oCriteria->add(DepartmentPeer::DEP_UID, $departmentUID, Criteria::NOT_EQUAL); + $oCriteria->add(ContentPeer::CON_LANG, SYS_LANG ); + $oCriteria->add(DepartmentPeer::DEP_PARENT, $parentUID); + + $oDataset = DepartmentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + + return ($aRow) ? true : false; + } + function getUsersFromDepartment( $sDepUid, $sManagerUid ) { try { $oCriteria = new Criteria('workflow'); diff --git a/workflow/engine/methods/departments/departments_Ajax.php b/workflow/engine/methods/departments/departments_Ajax.php index 3047fe342..0cc8d34bf 100755 --- a/workflow/engine/methods/departments/departments_Ajax.php +++ b/workflow/engine/methods/departments/departments_Ajax.php @@ -185,24 +185,9 @@ switch ($_POST['action']) $dep_name = $_REQUEST['name']; $dep_uid = $_REQUEST['uid']; - $oCriteria = new Criteria('workflow'); - $oCriteria->clearSelectColumns(); - $oCriteria->addSelectColumn( ContentPeer::CON_CATEGORY ); - $oCriteria->addSelectColumn( ContentPeer::CON_VALUE ); - $oCriteria->addSelectColumn(DepartmentPeer::DEP_PARENT); - $oCriteria->add(ContentPeer::CON_CATEGORY, 'DEPO_TITLE'); - $oCriteria->addJoin(ContentPeer::CON_ID, DepartmentPeer::DEP_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ContentPeer::CON_VALUE, $dep_name); - $oCriteria->add(DepartmentPeer::DEP_UID,$dep_uid,Criteria::NOT_EQUAL); - $oCriteria->add(ContentPeer::CON_LANG, SYS_LANG ); - $oCriteria->add(DepartmentPeer::DEP_PARENT,$parent); - - $oDataset = DepartmentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); - - echo (!$aRow) ? 'true' : 'false'; + $oDepartment = new Department(); + $checkVal = $oDepartment->checkDepartmentName($dep_name, $parent, $dep_uid ); + echo ( !$checkVal ) ? 'true' : 'false'; break; case 'saveDepartment':