Ejemplo n.º 1
0
/**
 * Delete a department
 *
 * @param  int  department id
 *
 * @return bool
 */
function erp_hr_delete_department($department_id)
{
    $department = new \WeDevs\ERP\HRM\Department($department_id);
    if ($department->num_of_employees()) {
        return new WP_Error('not-empty', __('You can not delete this department because it contains employees.', 'wp-erp'));
    }
    do_action('erp_hr_dept_delete', $department_id);
    return \WeDevs\ERP\HRM\Models\Department::find($department_id)->delete();
}
Ejemplo n.º 2
0
 /**
  * Add log when udpate department
  *
  * @since 0.1
  *
  * @param  integer $dept_id
  * @param  array $fields
  *
  * @return void
  */
 public function update_department($dept_id, $fields)
 {
     if (!$dept_id) {
         return;
     }
     $old_department = \WeDevs\ERP\HRM\Models\Department::find($dept_id)->toArray();
     unset($old_department['created_at'], $old_department['updated_at']);
     $changes = $this->get_array_diff($fields, $old_department, true);
     if (empty($changes['old_val']) && empty($changes['new_val'])) {
         $message = false;
     } else {
         array_walk($changes, function (&$key) {
             if (isset($key['lead'])) {
                 if ($key['lead']) {
                     $employee = new \WeDevs\ERP\HRM\Employee(intval($key['lead']));
                     $key['department_lead'] = $employee->get_full_name();
                 } else {
                     $key['department_lead'] = 'No deparment leader';
                 }
                 unset($key['lead']);
             }
             if (isset($key['parent'])) {
                 if ($key['parent']) {
                     $department = new \WeDevs\ERP\HRM\Department(intval($key['parent']));
                     $key['parent_department'] = $department->title;
                 } else {
                     $key['parent_department'] = 'No Parent Department';
                 }
                 unset($key['parent']);
             }
         });
         $message = sprintf('<strong>%s</strong> department has been edited', $old_department['title']);
     }
     if ($message) {
         erp_log()->add(['sub_component' => 'department', 'message' => $message, 'created_by' => get_current_user_id(), 'changetype' => 'edit', 'old_value' => $changes['old_val'] ? base64_encode(maybe_serialize($changes['old_val'])) : '', 'new_value' => $changes['new_val'] ? base64_encode(maybe_serialize($changes['new_val'])) : '']);
     }
 }
Ejemplo n.º 3
0
 function get_parent_id($parent_id)
 {
     return \WeDevs\ERP\HRM\Models\Department::select(array('parent'))->find($parent_id)->parent;
 }
Ejemplo n.º 4
0
 /**
  * Single Page row
  *
  * @param array $children_departments
  * @param integer $count
  * @param integer $parent
  * @param integer $level
  * @param integer $pagenum
  * @param integer $per_page
  * @param array $to_display List of pages to be displayed. Passed by reference.
  *
  * @return void
  */
 private function _page_rows(&$children_departments, &$count, $parent, $level, $pagenum, $per_page, &$to_display)
 {
     if (!isset($children_departments[$parent])) {
         return;
     }
     $start = ($pagenum - 1) * $per_page;
     $end = $start + $per_page;
     foreach ($children_departments[$parent] as $page) {
         if ($count >= $end) {
             break;
         }
         // If the page starts in a subtree, print the parents.
         if ($count == $start && $page->parent > 0) {
             $my_parents = array();
             $my_parent = $page->parent;
             while ($my_parent) {
                 // Get the ID from the list or the attribute if my_parent is an object
                 $parent_id = $my_parent;
                 if (is_object($my_parent)) {
                     $parent_id = $my_parent->id;
                 }
                 $my_parent = (object) \WeDevs\ERP\HRM\Models\Department::find($parent_id)->toArray();
                 //get_post( $parent_id );
                 $my_parents[] = $my_parent;
                 if (!$my_parent->parent) {
                     break;
                 }
                 $my_parent = $my_parent->parent;
             }
             $num_parents = count($my_parents);
             while ($my_parent = array_pop($my_parents)) {
                 $to_display[$my_parent->id] = $level - $num_parents;
                 $num_parents--;
             }
         }
         if ($count >= $start) {
             $to_display[$page->id] = $level;
         }
         $count++;
         $this->_page_rows($children_departments, $count, $page->id, $level + 1, $pagenum, $per_page, $to_display);
     }
     unset($children_departments[$parent]);
     //required in order to keep track of orphans
 }
Ejemplo n.º 5
0
/**
 * Delete a department
 *
 * @param  int  department id
 *
 * @return bool
 */
function erp_hr_delete_department($department_id)
{
    $department = new \WeDevs\ERP\HRM\Department(intval($department_id));
    if ($department->num_of_employees()) {
        return false;
    }
    do_action('erp_hr_dept_delete', $department_id);
    $parent_id = \WeDevs\ERP\HRM\Models\Department::where('id', '=', $department_id)->pluck('parent');
    if ($parent_id) {
        \WeDevs\ERP\HRM\Models\Department::where('parent', '=', $department_id)->update(['parent' => $parent_id]);
    } else {
        \WeDevs\ERP\HRM\Models\Department::where('parent', '=', $department_id)->update(['parent' => 0]);
    }
    $resp = \WeDevs\ERP\HRM\Models\Department::find($department_id)->delete();
    return $resp;
}