/** * 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(); }
/** * 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'])) : '']); } }
function get_parent_id($parent_id) { return \WeDevs\ERP\HRM\Models\Department::select(array('parent'))->find($parent_id)->parent; }
/** * 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 }
/** * 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; }