/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/EmployeeTermRepository.php (8832B)
employee_term = $employee_term; $this->upload = $upload; $this->designation = $designation; $this->department = $department; $this->employee_designation = $employee_designation; } /** * Find employee term with given id. * * @param integer $employee_id * @param integer $id * @return EmployeeTerm */ public function find($employee_id, $id) { return $this->employee_term->with('employee')->filterByEmployeeId($employee_id)->filterById($id)->first(); } /** * Find employee term with given id or throw an error. * * @param integer $employee_id * @param integer $id * @return EmployeeTerm */ public function findOrFail($employee_id, $id, $field = 'message') { $employee_term = $this->employee_term->with('employee')->filterByEmployeeId($employee_id)->filterById($id)->first(); if (! $employee_term) { throw ValidationException::withMessages([$field => trans('employee.could_not_find_term')]); } return $employee_term; } /** * Get employee term pre requisite. * * @return Array */ public function getPreRequisite() { $designations = $this->designation->getDesignationOption(); $departments = $this->department->selectAll(); return compact('designations', 'departments'); } /** * Create a new employee term. * * @param Employee $employee * @param array $params * @return EmployeeTerm */ public function create(Employee $employee, $params) { $designation_id = gv($params, 'designation_id'); $department_id = gv($params, 'department_id'); $date_of_joining = toDate(gv($params, 'date_of_joining')); $joining_remarks = gv($params, 'joining_remarks'); $employee_terms = $employee->EmployeeTerms; $previous_term = $employee_terms->where('date_of_leaving', '=', null)->first(); if ($previous_term) { throw ValidationException::withMessages(['message' => trans('employee.previous_term_not_ended', ['date' => showDate($previous_term->date_of_joining)])]); } $previous_term = $employee_terms->where('date_of_leaving', '>=', $date_of_joining)->first(); if ($previous_term) { throw ValidationException::withMessages(['message' => trans('employee.date_of_joining_less_than_previous_term_date_of_leaving', ['date' => showDate($previous_term->date_of_leaving)])]); } $designation = $this->designation->findOrFail($designation_id); if (! dateBetweenSession($date_of_joining)) { throw ValidationException::withMessages(['date_of_joining' => trans('academic.invalid_session_date_range')]); } 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); } $employee_term = $this->employee_term->forceCreate([ 'employee_id' => $employee->id, 'date_of_joining' => toDate($date_of_joining), 'joining_remarks' => $joining_remarks, 'upload_token' => gv($params, 'upload_token') ]); $employee_designation = $this->employee_designation->create([ 'employee_id' => $employee->id, 'employee_term_id' => $employee_term->id, 'designation_id' => $designation_id, 'department_id' => $department_id, 'date_effective' => toDate($date_of_joining), 'upload_token' => Str::uuid() ]); $this->processUpload($employee_term, $params); } /** * Upload attachment * * @param EmployeeTerm $employee_term * @param array $params * @param string $action * @return void */ public function processUpload(EmployeeTerm $employee_term, $params = array(), $action = 'create') { $upload_token = gv($params, 'upload_token'); if ($action === 'create') { $this->upload->store($this->module, $employee_term->id, $upload_token); } else { $this->upload->update($this->module, $employee_term->id, $upload_token); } } /** * Update given employee term. * * @param EmployeeTerm $employee_term * @param array $params * * @return EmployeeTerm */ public function update(EmployeeTerm $employee_term, $params) { $is_leaving = gbv($params, 'is_leaving'); if ($is_leaving) { $date_of_leaving = toDate(gv($params, 'date_of_leaving')); $leaving_remarks = gv($params, 'leaving_remarks'); if ($date_of_leaving <= toDate($employee_term->date_of_joining)) { throw ValidationException::withMessages(['date_of_leaving' => trans('employee.date_of_leaving_lesser_than_date_of_joining')]); } $last_designation = $employee_term->EmployeeDesignations->sortByDesc('date_effective')->first(); if ($last_designation && $date_of_leaving <= toDate($last_designation->date_effective)) { throw ValidationException::withMessages(['date_of_leaving' => trans('employee.date_of_leaving_lesser_than_last_designation_date', ['date' => showDate($last_designation->date_effective)]) ]); } $employee_term->date_of_leaving = toDate($date_of_leaving); $employee_term->leaving_remarks = $leaving_remarks; $employee_term->save(); $last_employee_designation = $employee_term->EmployeeDesignations->last(); if ($last_employee_designation) { $last_employee_designation->date_end = toDate($date_of_leaving); $last_employee_designation->save(); } } else { $employee_term->date_of_leaving = null; $employee_term->leaving_remarks = null; $employee_term->save(); $last_employee_designation = $employee_term->EmployeeDesignations->last(); if ($last_employee_designation) { $last_employee_designation->date_end = null; $last_employee_designation->save(); } } $this->processUpload($employee_term, $params, 'update'); return $employee_term; } /** * Find employee term editable or not. * * @param integer $employee_id * @param integer $id * @return bool|null */ public function editable($employee_id, $id) { $employee_term = $this->findOrFail($employee_id, $id); $employee_terms = $employee_term->Employee->EmployeeTerms; if ($employee_terms->where('id', '!=', $id)->where('date_of_joining', '>', toDate($employee_term->date_of_joining))->count()) { throw ValidationException::withMessages(['message' => trans('employee.only_last_term_is_editable')]); } return $employee_term; } /** * Delete employee term. * * @param EmployeeTerm $employee_term * @return bool|null */ public function delete(EmployeeTerm $employee_term) { if ($employee_term->Employee->EmployeeTerms->count() == 1) { throw ValidationException::withMessages(['message' => trans('employee.could_not_delete_first_term')]); } return $employee_term->delete(); } /** * Delete multiple employee terms. * * @param array $ids * @return bool|null */ public function deleteMultiple($ids) { return $this->employee_term->whereIn('id', $ids)->delete(); } }