/home/techb158/ileadtechnology.com/SSM/app/Repositories/employee
NameSizeModeActions
AttendanceRepository.php218030644editdlrm
EmployeeAccountRepository.php54950644editdlrm
EmployeeDesignationRepository.php97780644editdlrm
EmployeeDocumentRepository.php66330644editdlrm
EmployeeImportRepository.php226550644editdlrm
EmployeeQualificationRepository.php65050644editdlrm
EmployeeRepository.php322690644editdlrm
EmployeeTermRepository.php88320644editdlrm
LeaveAllocationRepository.php126610644editdlrm
LeaveRequestRepository.php216110644editdlrm
PayrollRepository.php213830644editdlrm
PayrollTemplateRepository.php113260644editdlrm
PayrollTransactionRepository.php176240644editdlrm
SalaryRepository.php115880644editdlrm
Edit: /home/techb158/ileadtechnology.com/SSM/app/Repositories/employee/EmployeeDesignationRepository.php (9778B)
employee_designation = $employee_designation; $this->department = $department; $this->designation = $designation; $this->upload = $upload; } /** * Find employee designation with given id. * * @param integer $employee_id * @param integer $id * @return EmployeeDesignation */ public function find($employee_id, $id) { return $this->employee_designation->with('employee', 'designation', 'designation.employeeCategory', 'department')->filterByEmployeeId($employee_id)->filterById($id)->first(); } /** * Find employee designation with given id or throw an error. * * @param integer $employee_id * @param integer $id * @return EmployeeDesignation */ public function findOrFail($employee_id, $id, $field = 'message') { $employee_designation = $this->employee_designation->with('employee', 'designation', 'designation.employeeCategory', 'department')->filterByEmployeeId($employee_id)->filterById($id)->first(); if (! $employee_designation) { throw ValidationException::withMessages([$field => trans('employee.could_not_find_designation')]); } return $employee_designation; } /** * Get employee designation pre requisite. * * @return Array */ public function getPreRequisite() { $designations = $this->designation->getDesignationOption(); $departments = $this->department->selectAll(); return compact('designations', 'departments'); } /** * Create a new employee designation. * * @param Employee $employee * @param array $params * @return EmployeeDesignation */ public function create(Employee $employee, $params) { $this->validateInput($employee, $params); $date_effective = toDate(gv($params, 'date_effective')); $employee_designations = $employee->EmployeeDesignations; $last_designation = $employee_designations->sortByDesc('date_effective')->first(); if ($last_designation && $date_effective <= toDate($last_designation->date_effective)) { throw ValidationException::withMessages(['date_effective' => trans('employee.cannot_assign_designation_before_previous_designation', ['date' => showDate($last_designation->date_effective)])]); } $employee_term = $employee->EmployeeTerms->where('date_of_leaving', '=', null)->first(); if (! $employee_term) { throw ValidationException::withMessages(['message' => trans('employee.could_not_find_term')]); } $last_designation->date_end = Carbon::parse(gv($params, 'date_effective'))->subDays(1)->toDateString(); $last_designation->save(); $employee_designation = $this->employee_designation->forceCreate($this->formatParams($params, $employee->id)); $employee_designation->employee_term_id = $employee_term->id; $employee_designation->save(); $this->processUpload($employee_designation, $params); return $employee_designation; } /** * Validate data of designation. * * @param Employee $employee * @param array $params * @param integer $id [default null] * @return null */ public function validateInput(Employee $employee, $params, $id = null) { $designation_id = gv($params, 'designation_id'); $department_id = gv($params, 'department_id'); $date_effective = toDate(gv($params, 'date_effective')); $designation = $this->designation->findOrFail($designation_id); if (! in_array($designation->id, $this->designation->getSubordinateId())) { throw ValidationException::withMessages(['designation_id' => trans('employee.top_designation_cannot_become_child')]); } if ($department_id) { $department = $this->department->findOrFail($department_id); } if (! dateBetweenSession($date_effective)) { throw ValidationException::withMessages(['date_effective' => trans('academic.invalid_session_date_range')]); } } /** * Prepare given params for inserting into database. * * @param array $params * @param string $type * @return array */ private function formatParams($params, $employee_id = null, $action = 'create') { $formatted = [ 'designation_id' => gv($params, 'designation_id'), 'department_id' => gv($params, 'department_id'), 'date_effective' => toDate(gv($params, 'date_effective')), 'remarks' => gv($params, 'remarks') ]; if ($action === 'create') { $formatted['upload_token'] = gv($params, 'upload_token'); $formatted['employee_id'] = $employee_id; $formatted['options'] = []; } return $formatted; } /** * Upload attachment * * @param EmployeeDesignation $employee_designation * @param array $params * @param string $action * @return void */ public function processUpload(EmployeeDesignation $employee_designation, $params = array(), $action = 'create') { $upload_token = gv($params, 'upload_token'); if ($action === 'create') { $this->upload->store($this->module, $employee_designation->id, $upload_token); } else { $this->upload->update($this->module, $employee_designation->id, $upload_token); } } /** * Update given employee designation. * * @param EmployeeDesignation $employee_designation * @param array $params * * @return EmployeeDesignation */ public function update(EmployeeDesignation $employee_designation, $params) { $date_effective = toDate(gv($params, 'date_effective')); $this->validateInput($employee_designation->Employee, $params, $employee_designation->id); $employee_term = $employee_designation->EmployeeTerm; if ($employee_term->date_of_joining == toDate($employee_designation->date_effective) && $date_effective != toDate($employee_designation->date_effective)) { throw ValidationException::withMessages(['date_effective' => trans('employee.first_designation_date_should_be_date_of_joining', ['date' => showDate($employee_term->date_of_joining)])]); } if ($date_effective < toDate($employee_term->date_of_joining) || ($employee_term->date_of_leaving && $date_effective > toDate($employee_term->date_of_leaving))) { throw ValidationException::withMessages(['date_effective' => trans('employee.date_not_in_term_range', ['start_date' => showDate($employee_term->date_of_joining), 'end_date' => $employee_term->date_of_leaving ? showDate($employee_term->date_of_leaving) : showDate(date('Y-m-d')) ]) ]); } $employee_designation->forceFill($this->formatParams($params, null, 'update'))->save(); $last_designation = $employee_designation->Employee->EmployeeDesignations->where('id', '!=', $employee_designation->id)->sortByDesc('date_effective')->first(); if ($last_designation) { $last_designation->date_end = Carbon::parse(gv($params, 'date_effective'))->subDays(1)->toDateString(); $last_designation->save(); } $this->processUpload($employee_designation, $params, 'update'); return $employee_designation; } /** * Find employee designation editable or not. * * @param integer $employee_id * @param integer $id * @return bool|null */ public function editable($employee_id, $id) { $employee_designation = $this->findOrFail($employee_id, $id); $employee_designations = $employee_designation->Employee->EmployeeDesignations; if ($employee_designations->where('id', '!=', $id)->where('date_effective', '>', toDate($employee_designation->date_effective))->count()) { throw ValidationException::withMessages(['message' => trans('employee.only_last_designation_is_editable')]); } return $employee_designation; } /** * Delete employee designation. * * @param EmployeeDesignation $employee_designation * @return bool|null */ public function delete(EmployeeDesignation $employee_designation) { if ($employee_designation->EmployeeTerm->date_of_leaving) { throw ValidationException::withMessages(['message' => trans('employee.could_not_delete_after_term_end')]); } return $employee_designation->delete(); } /** * Delete multiple employee designations. * * @param array $ids * @return bool|null */ public function deleteMultiple($ids) { return $this->employee_designation->whereIn('id', $ids)->delete(); } }