PluginProbe
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce / 1.3.13
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce v1.3.13
1.17.10 1.17.9 1.17.8 1.17.7 1.17.6 1.17.5 1.17.4 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.3.0 1.3.1 1.3.11 1.3.12 1.3.13 1.3.14 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 All 144 releases
erp / modules / hrm / includes / functions-department.php

functions-department.php in ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce 1.3.13, at modules/hrm/includes/functions-department.php

240 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Create a new department
5 *
6 * @param array arguments
7 *
8 * @return int|false
9 */
10 function erp_hr_create_department( $args = array() ) {
11
12 $defaults = array(
13 'id' => 0,
14 'title' => '',
15 'description' => '',
16 'lead' => 0,
17 'parent' => 0,
18 'status' => 1
19 );
20
21 $fields = wp_parse_args( $args, $defaults );
22
23 // validation
24 if ( empty( $fields['title'] ) ) {
25 return new WP_Error( 'no-name', __( 'No department name provided.', 'erp' ) );
26 }
27
28 // unset the department id
29 $dept_id = $fields['id'];
30 unset( $fields['id'] );
31
32 $department = new \WeDevs\ERP\HRM\Models\Department();
33
34 if ( ! $dept_id ) {
35 $dept = $department->create( $fields );
36
37 do_action( 'erp_hr_dept_new', $dept->id, $fields );
38
39 return $dept->id;
40
41 } else {
42
43 do_action( 'erp_hr_dept_before_updated', $dept_id, $fields );
44
45 $department->find( $dept_id )->update( $fields );
46
47 do_action( 'erp_hr_dept_after_updated', $dept_id, $fields );
48
49 return $dept_id;
50 }
51
52 return false;
53 }
54
55 /**
56 * Get all the departments of a company
57 *
58 * @param int the company id
59 *
60 * @return array list of departments
61 */
62 function erp_hr_get_departments( $args = [] ) {
63
64 $defaults = array(
65 'number' => 20,
66 'offset' => 0,
67 'orderby' => 'id',
68 'order' => 'asc',
69 'no_object' => false
70 );
71
72 $args = wp_parse_args( $args, $defaults );
73
74 $cache_key = 'erp-get-departments';
75 $results = wp_cache_get( $cache_key, 'erp' );
76
77 $department = new \WeDevs\ERP\HRM\Models\Department();
78
79 if ( !empty( $args['s'] ) ) {
80 $results = $department
81 ->where( 'title', 'LIKE', '%'.$_GET['s'].'%' )
82 ->get()
83 ->toArray();
84 $results = erp_array_to_object( $results );
85 }
86
87 if ( false === $results ) {
88 $results = $department
89 ->get()
90 ->toArray();
91
92 $results = erp_array_to_object( $results );
93 wp_cache_set( $cache_key, $results, 'erp' );
94 }
95
96 $results = erp_parent_sort( $results );
97 $departments = [];
98 if ( $results ) {
99 foreach ($results as $key => $row) {
100
101 if ( true === $args['no_object'] ) {
102 $departments[] = $row;
103 } else {
104
105 $departments[] = new WeDevs\ERP\HRM\Department( intval( $row->id ));
106 }
107 }
108 }
109
110 return $departments;
111 }
112
113 /**
114 * Get all department from a company
115 *
116 * @param int $company_id company id
117 * @param bool $no_object if set true, Department object will be
118 * returned as array. $wpdb rows otherwise
119 *
120 * @return array the department
121 */
122 function erp_hr_count_departments() {
123 return \WeDevs\ERP\HRM\Models\Department::count();
124 }
125
126 /**
127 * Delete a department
128 *
129 * @param int department id
130 *
131 * @return bool
132 */
133 function erp_hr_delete_department( $department_id ) {
134
135 if ( is_array( $department_id ) ) {
136 $exist_employee = [];
137 $not_exist_employee = [];
138
139 foreach ( $department_id as $key => $department ) {
140 $dept = new \WeDevs\ERP\HRM\Department( intval( $department ) );
141
142 if ( $dept->num_of_employees() ) {
143 $exist_employee[] = $department;
144 } else {
145 do_action( 'erp_hr_dept_delete', $dept );
146 $not_exist_employee[] = $department;
147 }
148 }
149
150 if ( $not_exist_employee ) {
151 \WeDevs\ERP\HRM\Models\Department::destroy( $not_exist_employee );
152 }
153
154 return $exist_employee;
155
156 }
157
158 $department = new \WeDevs\ERP\HRM\Department( intval( $department_id ) );
159
160 if ( $department->num_of_employees() ) {
161 return new WP_Error( 'not-empty', __( 'You can not delete this department because it contains employees.', 'erp' ) );
162 }
163
164 do_action( 'erp_hr_dept_delete', $department_id );
165
166 $parent_id = \WeDevs\ERP\HRM\Models\Department::where( 'id', '=', $department_id )->pluck('parent')[0];
167
168 if ( $parent_id ) {
169 \WeDevs\ERP\HRM\Models\Department::where( 'parent', '=', $department_id )->update( ['parent' => $parent_id ] );
170 } else {
171 \WeDevs\ERP\HRM\Models\Department::where( 'parent', '=', $department_id )->update( ['parent' => 0 ] );
172 }
173
174 $resp = \WeDevs\ERP\HRM\Models\Department::find( $department_id )->delete();
175
176 return $resp;
177 }
178
179 /**
180 * Get the raw departments dropdown
181 *
182 * @param int company id
183 * @param string $select_label pass any string to be as the first element
184 *
185 * @return array the key-value paired departments
186 */
187 function erp_hr_get_departments_dropdown_raw( $select_label = null ) {
188 $departments = erp_hr_get_departments();
189 $dropdown = array( '-1' => __( '- Select Department -', 'erp' ) );
190
191 if ( $select_label ) {
192 $dropdown = array( '-1' => $select_label );
193 }
194
195 if ( $departments ) {
196 foreach ($departments as $key => $department) {
197 $dropdown[$department->id] = stripslashes( $department->title );
198 }
199 }
200
201 return $dropdown;
202 }
203
204 /**
205 * Get company departments dropdown
206 *
207 * @param string selected department
208 *
209 * @return string the dropdown
210 */
211 function erp_hr_get_departments_dropdown( $selected = '' ) {
212 $departments = erp_hr_get_departments_dropdown_raw();
213 $dropdown = '';
214 if ( $departments ) {
215 foreach ($departments as $key => $title) {
216 $dropdown .= sprintf( "<option value='%s'%s>%s</option>\n", $key, selected( $selected, $key, false ), $title );
217 }
218 }
219
220 return $dropdown;
221 }
222
223 /**
224 * Get employee's department lead by employee's user ID
225 *
226 * @param $user_id
227 *
228 * @return int
229 */
230 function erp_hr_get_department_lead_by_user( $user_id ) {
231 $employee = new \WeDevs\ERP\HRM\Employee( $user_id );
232
233 if ( $employee->get_department() ) {
234 $department = new \WeDevs\ERP\HRM\Department( intval( $employee->get_department() ) );
235 $department_lead = $department->get_lead();
236 }
237
238 return empty( $department_lead ) ? 0 : $department_lead->id;
239 }
240