File manager - Edit - /var/www/payraty/hris/app/Http/Controllers/EmployeeController.php
Back
<?php namespace App\Http\Controllers; use App\Models\Branch; use App\Models\Department; use App\Models\Designation; use App\Models\Document; use App\Models\Employee; use App\Models\EmployeeDocument; use App\Mail\UserCreate; use App\Models\Plan; use App\Models\User; use App\Models\Utility; use App\Models\JobInfo; use App\Models\BankInfo; use App\Models\Profile; use App\Models\EmployeeDeduction; use App\Models\OrganisationEmployeeAllowance; use File; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use App\Models\JoiningLetter; use App\Imports\EmployeesImport; use App\Exports\EmployeesExport; use App\Models\Contract; use App\Models\ExperienceCertificate; use App\Models\LoginDetail; use Maatwebsite\Excel\Facades\Excel; use App\Models\NOC; use App\Models\PaySlip; use App\Models\Termination; use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Log; //use Faker\Provider\File; class EmployeeController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if (\Auth::user()->can('Manage Employee')) { if (Auth::user()->type == 'employee') { $employees = Employee::where('user_id', '=', Auth::user()->id)->get(); } else { $user = Auth::user(); $organisationId = $user->organisation_id; $employees = Employee::where("organisation_id", $organisationId)->with(['branch', 'department', 'designation', 'user'])->get(); } return view('employee.index', compact('employees')); } else { return redirect()->back()->with('error', __('Permission denied.')); } // if (Auth::user()->type == 'employee') { // $employees = Employee::where('user_id', '=', Auth::user()->id)->get(); // } else { // $user = Auth::user(); // $employees = Employee::where('organisation_id', $user->organisation_id)->with(['branch', 'department', 'designation', 'user'])->get(); // // $employees = Employee::where('created_by', \Auth::user()->creatorId())->with(['branch', 'department', 'designation', 'user'])->get(); // } // return view('employee.index', compact('employees')); } public function search(Request $request) { $user = Auth::user(); $orgId = $user->organisation_id; $search = $request->query('q', ''); $deptFilter = $request->query('department_id'); $query = Employee::where('organisation_id', $orgId) ->where(function ($q) use ($search) { $q->where('name', 'like', "%{$search}%") ->orWhere('email', 'like', "%{$search}%"); }); if (!$user->can('manage goals')) { $managerEmp = Employee::where('user_id', $user->id)->first(); if (!$managerEmp) { return response()->json([]); } // departments where this employee is manager $managedDeptIds = Department::where('manager_id', $managerEmp->id) ->pluck('id'); if ($managedDeptIds->isEmpty()) { return response()->json([]); } // If a dept filter is passed, intersect with manager’s departments if ($deptFilter) { $managedDeptIds = $managedDeptIds->intersect([$deptFilter]); } $query->whereIn('department_id', $managedDeptIds); } elseif ($deptFilter) { $query->where('department_id', $deptFilter); } $employees = $query->select('id', 'name') ->limit(15) ->get(); return response()->json($employees); } public function create() { // if (\Auth::user()->can('Create Employee')) { // $company_settings = Utility::settings(); // $documents = Document::where('created_by', Auth::user()->creatorId())->get(); // $branches = Branch::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); // $departments = Department::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); // $designations = Designation::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); // $employees = User::where('created_by', Auth::user()->creatorId())->get(); // $employeesId = Auth::user()->employeeIdFormat($this->employeeNumber()); // return view('employee.create', compact('employees', 'employeesId', 'departments', 'designations', 'documents', 'branches', 'company_settings')); // } else { // return redirect()->back()->with('error', __('Permission denied.')); // } $company_settings = Utility::settings(); $documents = Document::where('created_by', Auth::user()->creatorId())->get(); $branches = Branch::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); $departments = Department::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); $designations = Designation::where('created_by', Auth::user()->creatorId())->get()->pluck('name', 'id'); $employees = User::where('created_by', Auth::user()->creatorId())->get(); $employeesId = Auth::user()->employeeIdFormat($this->employeeNumber()); return view('employee.create', compact('employees', 'employeesId', 'departments', 'designations', 'documents', 'branches', 'company_settings')); } public function store(Request $request) { if (\Auth::user()->can('Create Employee')) { $orgId = Auth::user()->organisation_id; $rules = [ 'name' => 'required|max:120', 'dob' => 'before:' . date('Y-m-d'), 'gender' => 'required', 'phone' => 'required', 'address' => 'required', 'email' => 'required|unique:users|email|max:100', 'password' => 'required', // 'branch_id' => 'required', // 'department_id' => 'required', // 'designation_id' => 'required', 'document.*' => 'required', ]; // $rules['biometric_emp_id'] = [ // 'required', // Rule::unique('employees')->where(function ($query) { // return $query->where('created_by', Auth::user()->creatorId()); // }) // ]; $validator = \Validator::make( $request->all(), $rules ); if ($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->withInput()->with('error', $messages->first()); } $date = date("Y-m-d H:i:s"); $default_language = DB::table('settings')->select('value')->where('name', 'default_language')->where('created_by', \Auth::user()->creatorId())->first(); // new company default language if ($default_language == null) { $default_language = DB::table('settings')->select('value')->where('name', 'default_language')->first(); } if ($request->hasFile('document')) { foreach ($request->document as $key => $document) { $image_size = $request->file('document')[$key]->getSize(); $filenameWithExt = $request->file('document')[$key]->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')[$key]->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . time() . '.' . $extension; $dir = 'uploads/document/'; $image_path = $dir . $fileNameToStore; $path = \App\Models\Utility::upload_coustom_file($request, 'document', $fileNameToStore, $dir, $key, []); if ($path['flag'] == 1) { $url = $path['url']; } else { return redirect()->back()->with('error', __($path['msg'])); } } } $user = User::create( [ 'name' => $request['name'], 'email' => $request['email'], 'password' => Hash::make($request['password']), 'organisation_id' => $orgId, 'type' => 'employee', 'lang' => !empty($default_language) ? $default_language->value : 'en', 'created_by' => \Auth::user()->creatorId(), 'email_verified_at' => $date, 'is_active' => true, 'is_registered' => true ] ); $user->save(); $user->assignRole('Employee'); DB::beginTransaction(); try { $nameParts = explode(' ', trim($request['name']), 2); $firstName = $nameParts[0] ?? ''; $lastName = $nameParts[1] ?? ''; // Create profile DB::table('profiles')->insert([ 'user_id' => $user->id, 'first_name' => $firstName, 'last_name' => $lastName, 'gender' => $request['gender'], 'work_email' => $request['email'], 'address' => $request['address'], 'created_at' => now(), 'updated_at' => now(), ]); // Create job info DB::table('job_info')->insert([ 'user_id' => $user->id, 'hire_date' => $request['company_doj'], 'created_at' => now(), 'updated_at' => now(), ]); // Create bank info DB::table('bank_info')->insert([ 'user_id' => $user->id, 'bank_name' => $request['bank_name'], 'account_number' => $request['account_number'], 'account_name' => $request['account_holder_name'], 'bank_code' => $request['bank_identifier_code'], 'tax_id' => $request['tax_payer_id'], 'created_at' => now(), 'updated_at' => now(), ]); DB::commit(); if (!empty($request->document) && !is_null($request->document)) { $document_implode = implode(',', array_keys($request->document)); } else { $document_implode = null; } $employee = Employee::create( [ 'user_id' => $user->id, 'name' => $request['name'], 'dob' => $request['dob'], 'gender' => $request['gender'], 'phone' => $request['phone'], 'address' => $request['address'], 'email' => $request['email'], 'password' => Hash::make($request['password']), 'employee_id' => $this->employeeNumber(), // 'biometric_emp_id' => !empty($request['biometric_emp_id']) ? $request['biometric_emp_id'] : '', 'branch_id' => $request['branch_id'] ?? 0, 'department_id' => $request['department_id'] ?? 0, 'designation_id' => $request['designation_id'] ?? 0, 'company_doj' => $request['company_doj'], 'documents' => $document_implode, 'account_holder_name' => $request['account_holder_name'], 'account_number' => $request['account_number'], 'bank_name' => $request['bank_name'], 'bank_identifier_code' => $request['bank_identifier_code'], 'branch_location' => $request['branch_location'], 'tax_payer_id' => $request['tax_payer_id'], 'created_by' => \Auth::user()->creatorId(), ] ); if ($request->hasFile('document')) { foreach ($request->document as $key => $document) { $image_size = $request->file('document')[$key]->getSize(); $filenameWithExt = $request->file('document')[$key]->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')[$key]->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . time() . '.' . $extension; $dir = 'uploads/document/'; $image_path = $dir . $fileNameToStore; $path = \App\Models\Utility::upload_coustom_file($request, 'document', $fileNameToStore, $dir, $key, []); if ($path['flag'] == 1) { $url = $path['url']; } else { return redirect()->back()->with('error', __($path['msg'])); } $employee_document = EmployeeDocument::create( [ 'employee_id' => $employee['employee_id'], 'document_id' => $key, 'document_value' => $path['url'], 'created_by' => \Auth::user()->creatorId(), ] ); $employee_document->save(); } } $setings = \App\Models\Utility::settings(); if ($setings['new_employee'] == 1) { $department = Department::find($request['department_id']); $branch = Branch::find($request['branch_id']); $designation = Designation::find($request['designation_id']); $uArr = [ 'employee_email' => $user->email, 'employee_password' => $request->password, 'employee_name' => $request['name'], 'employee_branch' => !empty($branch->name) ? $branch->name : '', 'employee_department' => !empty($department->name) ? $department->name : '', 'employee_designation' => !empty($designation->name) ? $designation->name : '', ]; $resp = \App\Models\Utility::sendEmailTemplate('new_employee', [$user->id => $user->email], $uArr); return redirect()->route('employee.index')->with('success', __('Employee successfully created.') . ((!empty($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '<br> <span class="text-danger">' . $resp['error'] . '</span>' : '') . ((isset($result) && $result != 1) ? '<br> <span class="text-danger">' . $result . '</span>' : '')); } } catch (\Exception $e) { DB::rollback(); } return redirect()->route('employee.index')->with('success', __('Employee successfully created.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function edit($id) { try { $id = Crypt::decrypt($id); } catch (\Throwable $th) { return redirect()->back()->with('error', __('Employee Not Found.')); } // if (\Auth::user()->can('Edit Employee')) { // $documents = Document::where('created_by', \Auth::user()->creatorId())->get(); // $branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $employee = Employee::find($id); // $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id); // return view('employee.edit', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents')); // } else { // return redirect()->back()->with('error', __('Permission denied.')); // } $documents = Document::where('created_by', \Auth::user()->creatorId())->get(); $branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $employee = Employee::find($id); $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id); $jobInfo = JobInfo::where("user_id", $employee->user_id)->first(); $profile = Profile::where("user_id", $employee->user_id)->first(); $bankInfo = BankInfo::where("user_id", $employee->user_id)->first(); $allowances = OrganisationEmployeeAllowance::where('employee_id', $employee->user_id)->get(); $deductions = EmployeeDeduction::where('employee_id', $employee->user_id)->get(); return view('employee.edit', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents', 'jobInfo', 'profile', 'bankInfo', 'allowances', 'deductions')); } public function updateAllowances(Request $request, $id) { $validated = $request->validate([ 'allowancesArray' => 'required|array', 'allowancesArray.*' => 'nullable|numeric|min:0', ]); foreach ($validated['allowancesArray'] as $allowanceId => $value) { OrganisationEmployeeAllowance::where('id', $allowanceId) ->update(['value' => $value]); } return response()->json([ 'success' => true, 'message' => 'Allowance updated successfully.', ]); } public function updateDeductions(Request $request, $id) { $validated = $request->validate([ 'deductionsArray' => 'required|array', 'deductionsArray.*' => 'nullable|numeric|min:0', ]); foreach ($validated['deductionsArray'] as $deductionId => $value) { EmployeeDeduction::where('id', $deductionId)->update(['value' => $value]); } return response()->json([ 'success' => true, 'message' => 'Deductions updated successfully.', ]); } public function update(Request $request, $id) { // if (\Auth::user()->can('Edit Employee')) { $employee = Employee::findOrFail($id); $rules = [ 'name' => 'required', 'dob' => 'required', 'gender' => 'required', 'phone' => 'required', 'address' => 'required', ]; // if ($request->has('biometric_emp_id') && $employee->biometric_emp_id != $request->biometric_emp_id) { // $rules['biometric_emp_id'] = [ // 'required', // Rule::unique('employees')->where(function ($query) { // return $query->where('created_by', Auth::user()->creatorId()); // }) // ]; // } $validator = \Validator::make( $request->all(), $rules ); if ($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } if ($request->document) { foreach ($request->document as $key => $document) { $employee_document = EmployeeDocument::where('employee_id', $employee->employee_id)->where('document_id', $key)->first(); if (!empty($document)) { //storage limit $dir = 'uploads/document/'; if (!empty($employee_document)) { $file_path = $dir . $employee_document->document_value; } // $image_size = $request->file('document')[$key]->getSize(); // $result = Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size); // if ($result == 1) { if (!empty($$file_path)) { Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path); } $filenameWithExt = $request->file('document')[$key]->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')[$key]->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . time() . '.' . $extension; $dir = 'uploads/document/'; $image_path = $dir . $fileNameToStore; $path = \App\Models\Utility::upload_coustom_file($request, 'document', $fileNameToStore, $dir, $key, []); if (!empty($employee_document)) { if ($employee_document->document_value) { \File::delete(storage_path('uploads/document/' . $employee_document->document_value)); } $employee_document->document_value = $fileNameToStore; $employee_document->save(); } else { $employee_document = new EmployeeDocument(); $employee_document->employee_id = $employee->employee_id; $employee_document->document_id = $key; $employee_document->document_value = $fileNameToStore; $employee_document->save(); } if ($path['flag'] == 1) { $url = $path['url']; } else { return redirect()->back()->with('error', __($path['msg'])); } // } } } } if (!empty($request->document) && !is_null($request->document)) { $document_implode = implode(',', array_keys($request->document)); } else { $document_implode = null; } $employee = Employee::findOrFail($id); $input = $request->all(); $input['documents'] = $document_implode; $employee->fill($input)->save(); if ($request->salary) { return redirect()->route('setsalary.index')->with('success', 'Employee successfully updated.'); } if (\Auth::user()->type != 'employee') { // return redirect()->route('employee.index')->with('success', 'Employee successfully updated.'); return redirect()->route('employee.index')->with('success', __('Employee successfully updated.') . ((isset($result) && $result != 1) ? '<br> <span class="text-danger">' . $result . '</span>' : '')); } else { return redirect()->route('employee.show', \Illuminate\Support\Facades\Crypt::encrypt($employee->id))->with('success', __('Employee successfully updated.') . ((isset($result) && $result != 1) ? '<br> <span class="text-danger">' . $result . '</span>' : '')); } // } else { // return redirect()->back()->with('error', __('Permission denied.')); // } } public function destroy($id) { if (Auth::user()->can('Delete Employee')) { $employee = Employee::findOrFail($id); $user = User::where('id', '=', $employee->user_id)->first(); $emp_documents = EmployeeDocument::where('employee_id', $employee->employee_id)->get(); $ContractEmployee = Contract::where('employee_name', '=', $employee->user_id)->get(); $payslips = PaySlip::where('employee_id', $id)->get(); $employee->delete(); $user->delete(); foreach ($ContractEmployee as $contractdelete) { $contractdelete->delete(); } foreach ($payslips as $payslip) { $payslip->delete(); } $dir = storage_path('uploads/document/'); foreach ($emp_documents as $emp_document) { $emp_document->delete(); // \File::delete(storage_path('uploads/document/' . $emp_document->document_value)); if (!empty($emp_document->document_value)) { $file_path = 'uploads/document/' . $emp_document->document_value; $result = Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path); // unlink($dir . $emp_document->document_value); } } return redirect()->route('employee.index')->with('success', 'Employee successfully deleted.'); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function show($id) { // if (\Auth::user()->can('Show Employee')) { // try { // $empId = \Illuminate\Support\Facades\Crypt::decrypt($id); // } catch (\RuntimeException $e) { // return redirect()->back()->with('error', __('Employee not avaliable')); // } // $documents = Document::where('created_by', \Auth::user()->creatorId())->get(); // $branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // // $employee = Employee::where('id', '=', $empId)->orWhere('user_id', '=', $empId)->where('created_by', \Auth::user()->creatorId())->first(); // $employee = Employee::find($empId); // $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id); // $empId = Crypt::decrypt($id); // // $employee = Employee::find($empId); // // $branch= Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // return view('employee.show', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents')); // } else { // return redirect()->back()->with('error', __('Permission denied.')); // } try { $empId = \Illuminate\Support\Facades\Crypt::decrypt($id); } catch (\RuntimeException $e) { return redirect()->back()->with('error', __('Employee not avaliable')); } $documents = Document::where('created_by', \Auth::user()->creatorId())->get(); $branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); // $employee = Employee::where('id', '=', $empId)->orWhere('user_id', '=', $empId)->where('created_by', \Auth::user()->creatorId())->first(); $employee = Employee::find($empId); $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id); $empId = Crypt::decrypt($id); // $employee = Employee::find($empId); // $branch= Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $jobInfo = JobInfo::where("user_id", $employee->user_id)->first(); $profile = Profile::where("user_id", $employee->user_id)->first(); $bankInfo = BankInfo::where("user_id", $employee->user_id)->first(); $allowances = OrganisationEmployeeAllowance::where('employee_id', $employee->user_id)->get(); $deductions = EmployeeDeduction::where('employee_id', $employee->user_id)->get(); return view('employee.show', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents', 'jobInfo', 'profile', 'bankInfo', 'allowances', 'deductions')); } function employeeNumber() { $latest = Employee::where('created_by', '=', \Auth::user()->creatorId())->latest('id')->first(); if (!$latest) { return 1; } return $latest->employee_id + 1; } public function export() { return Excel::download(new EmployeesExport, 'employees.xlsx'); } // public function export() // { // $name = 'employee_' . date('Y-m-d i:h:s'); // $data = Excel::download(new EmployeesExport(), $name . '.xlsx'); // return $data; // } public function showImportForm() { return view('employee.import-employees'); } public function importEmployees(Request $request) { $request->validate([ 'file' => 'required|mimes:xlsx,xls,csv', ]); if ($request->file('file')->getClientOriginalExtension() != 'xlsx') { return redirect()->back()->with('error', 'Invalid file type.'); } // Define column mappings (these would likely come from the user or config) $columns = [ 'first_name' => 'first_name', 'last_name' => 'last_name', 'middle_name' => 'middle_name', 'dob' => 'dob', 'gender' => 'gender', 'work_phone' => 'work_phone', 'mobile_phone' => 'mobile_phone', 'address' => 'address', 'email' => 'email', 'work_email' => 'work_email', 'nationality' => 'nationality', 'marital_status' => 'marital_status', 'pension_percentage' => 'pension_percentage', 'account_number' => 'account_number', 'bank_name' => 'bank_name', 'bank_code' => 'bank_code', 'pfa_pin' => 'pfa_pin', 'pfa_name' => 'pfa_name', 'pfa_plan_id' => 'pfa_plan_id', 'tax_id' => 'tax_id', 'nhf_number' => 'nhf_number', 'employee_date' => 'employee_date', 'job_title' => 'job_title', 'department_id' => 'department_id', 'employee_type_id' => 'employee_type_id', 'pay_frequency' => 'pay_frequency', 'basic_salary_amount' => 'basic_salary_amount', 'gross_salary_amount' => 'gross_salary_amount', 'percentage_basic_salary_on_gross' => 'percentage_basic_salary_on_gross', 'is_annual_pay' => 'is_annual_pay', 'currency' => 'currency', 'branch' => 'branch' ]; // try { if ($request->hasFile('file') && $request->file('file')->isValid()) { Excel::import(new EmployeesImport($columns), $request->file('file')); return redirect()->route('employee.index')->with('success', 'Employees imported successfully.'); } else { return redirect()->route('employee.index')->with('error', 'No valid file uploaded.'); } // } catch (\Exception $e) { // \Log::error('Import failed: ' . $e->getMessage()); // return redirect()->route('employee.index')->with('error', 'Failed to import employees: ' . $e->getMessage()); // } } public function profile(Request $request) { if (\Auth::user()->can('Manage Employee Profile')) { $employees = Employee::where('created_by', \Auth::user()->creatorId())->with(['designation', 'user']); if (!empty($request->branch_id)) { $employees->where('branch_id', $request->branch_id); } if (!empty($request->department_id)) { $employees->where('department_id', $request->department_id); } if (!empty($request->designation_id)) { $employees->where('designation_id', $request->designation_id); } $employees = $employees->get(); $brances = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); return view('employee.profile', compact('employees', 'departments', 'designations', 'brances')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function profileShow($id) { if (\Auth::user()->can('Show Employee Profile')) { $empId = Crypt::decrypt($id); $documents = Document::where('created_by', \Auth::user()->creatorId())->get(); $branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $employee = Employee::find($empId); if ($employee == null) { $employee = Employee::where('user_id', $empId)->first(); } $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id); return view('employee.show', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function lastLogin(Request $request) { $users = User::where('created_by', \Auth::user()->creatorId())->get(); $time = date_create($request->month); $firstDayofMOnth = (date_format($time, 'Y-m-d')); $lastDayofMonth = \Carbon\Carbon::parse($request->month)->endOfMonth()->toDateString(); $objUser = \Auth::user(); $usersList = User::where('created_by', '=', $objUser->creatorId()) ->whereNotIn('type', ['super admin', 'company'])->get()->pluck('name', 'id'); $usersList->prepend('All', ''); if ($request->month == null) { $userdetails = DB::table('login_details') ->join('users', 'login_details.user_id', '=', 'users.id') ->select(DB::raw('login_details.*, users.id as user_id , users.name as user_name , users.email as user_email ,users.type as user_type')) ->where(['login_details.created_by' => \Auth::user()->creatorId()]) ->whereMonth('date', date('m'))->whereYear('date', date('Y')); } else { $userdetails = DB::table('login_details') ->join('users', 'login_details.user_id', '=', 'users.id') ->select(DB::raw('login_details.*, users.id as user_id , users.name as user_name , users.email as user_email ,users.type as user_type')) ->where(['login_details.created_by' => \Auth::user()->creatorId()]); } if (!empty($request->month)) { $userdetails->where('date', '>=', $firstDayofMOnth); $userdetails->where('date', '<=', $lastDayofMonth); } if (!empty($request->employee)) { $userdetails->where(['user_id' => $request->employee]); } $userdetails = $userdetails->get(); return view('employee.lastLogin', compact('users', 'usersList', 'userdetails')); } public function employeeJson(Request $request) { $employees = Employee::where('branch_id', $request->branch)->get()->pluck('name', 'id')->toArray(); return response()->json($employees); } public function joiningletterPdf($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); $joiningletter = JoiningLetter::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $obj = [ 'date' => \Auth::user()->dateFormat($date), 'app_name' => env('APP_NAME'), 'employee_name' => $employees->name, 'address' => !empty($employees->address) ? $employees->address : '', 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', 'start_date' => !empty($employees->company_doj) ? $employees->company_doj : '', 'branch' => !empty($employees->Branch->name) ? $employees->Branch->name : '', 'start_time' => !empty($settings['company_start_time']) ? $settings['company_start_time'] : '', 'end_time' => !empty($settings['company_end_time']) ? $settings['company_end_time'] : '', 'total_hours' => $result, ]; $joiningletter->content = JoiningLetter::replaceVariable($joiningletter->content, $obj); return view('employee.template.joiningletterpdf', compact('joiningletter', 'employees')); } public function joiningletterDoc($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); $joiningletter = JoiningLetter::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $obj = [ 'date' => \Auth::user()->dateFormat($date), 'app_name' => env('APP_NAME'), 'employee_name' => $employees->name, 'address' => !empty($employees->address) ? $employees->address : '', 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', 'start_date' => !empty($employees->company_doj) ? $employees->company_doj : '', 'branch' => !empty($employees->Branch->name) ? $employees->Branch->name : '', 'start_time' => !empty($settings['company_start_time']) ? $settings['company_start_time'] : '', 'end_time' => !empty($settings['company_end_time']) ? $settings['company_end_time'] : '', 'total_hours' => $result, ]; $joiningletter->content = JoiningLetter::replaceVariable($joiningletter->content, $obj); return view('employee.template.joiningletterdocx', compact('joiningletter', 'employees')); } public function ExpCertificatePdf($id) { $currantLang = \Cookie::get('LANGUAGE'); if (!isset($currantLang)) { $currantLang = 'en'; } $termination = Termination::where('employee_id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $experience_certificate = ExperienceCertificate::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $date1 = date_create($employees->company_doj); $date2 = date_create($employees->termination_date); $diff = date_diff($date1, $date2); $duration = $diff->format("%a days"); if (!empty($termination->termination_date)) { $obj = [ 'date' => \Auth::user()->dateFormat($date), 'app_name' => env('APP_NAME'), 'employee_name' => $employees->name, 'payroll' => !empty($employees->salaryType->name) ? $employees->salaryType->name : '', 'duration' => $duration, 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', ]; } else { return redirect()->back()->with('error', __('Termination date is required.')); } $experience_certificate->content = ExperienceCertificate::replaceVariable($experience_certificate->content, $obj); return view('employee.template.ExpCertificatepdf', compact('experience_certificate', 'employees')); } public function ExpCertificateDoc($id) { $currantLang = \Cookie::get('LANGUAGE'); if (!isset($currantLang)) { $currantLang = 'en'; } $termination = Termination::where('employee_id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $experience_certificate = ExperienceCertificate::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first();; $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $date1 = date_create($employees->company_doj); $date2 = date_create($employees->termination_date); $diff = date_diff($date1, $date2); $duration = $diff->format("%a days"); if (!empty($termination->termination_date)) { $obj = [ 'date' => \Auth::user()->dateFormat($date), 'app_name' => env('APP_NAME'), 'employee_name' => $employees->name, 'payroll' => !empty($employees->salaryType->name) ? $employees->salaryType->name : '', 'duration' => $duration, 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', ]; } else { return redirect()->back()->with('error', __('Termination date is required.')); } $experience_certificate->content = ExperienceCertificate::replaceVariable($experience_certificate->content, $obj); return view('employee.template.ExpCertificatedocx', compact('experience_certificate', 'employees')); } public function NocPdf($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); $noc_certificate = NOC::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $obj = [ 'date' => \Auth::user()->dateFormat($date), 'employee_name' => $employees->name, 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', 'app_name' => env('APP_NAME'), ]; $noc_certificate->content = NOC::replaceVariable($noc_certificate->content, $obj); return view('employee.template.Nocpdf', compact('noc_certificate', 'employees')); } public function NocDoc($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); $noc_certificate = NOC::where('lang', $currantLang)->where('created_by', \Auth::user()->creatorId())->first(); $date = date('Y-m-d'); $employees = Employee::where('id', $id)->where('created_by', \Auth::user()->creatorId())->first(); $settings = \App\Models\Utility::settings(); $secs = strtotime($settings['company_start_time']) - strtotime("00:00"); $result = date("H:i", strtotime($settings['company_end_time']) - $secs); $obj = [ 'date' => \Auth::user()->dateFormat($date), 'employee_name' => $employees->name, 'designation' => !empty($employees->designation->name) ? $employees->designation->name : '', 'app_name' => env('APP_NAME'), ]; $noc_certificate->content = NOC::replaceVariable($noc_certificate->content, $obj); return view('employee.template.Nocdocx', compact('noc_certificate', 'employees')); } public function getdepartment(Request $request) { if ($request->branch_id == 0) { $departments = Department::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id')->toArray(); } else { $departments = Department::where('created_by', '=', \Auth::user()->creatorId())->where('branch_id', $request->branch_id)->get()->pluck('name', 'id')->toArray(); } return response()->json($departments); } public function json(Request $request) { if ($request->department_id == 0) { $designations = Designation::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id')->toArray(); } $designations = Designation::where('department_id', $request->department_id)->where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id')->toArray(); return response()->json($designations); } public function view($id) { $users = LoginDetail::find($id); return view('employee.user_log', compact('users')); } public function logindestroy($id) { $employee = LoginDetail::where('user_id', $id)->delete(); return redirect()->back()->with('success', 'Employee successfully deleted.'); } public function employeePassword($id) { $eId = \Crypt::decrypt($id); $user = User::find($eId); $employee = User::where('id', $eId)->first(); return view('employee.reset', compact('user', 'employee')); } public function employeePasswordReset(Request $request, $id) { $validator = \Validator::make( $request->all(), [ 'password' => 'required|confirmed|same:password_confirmation', ] ); if ($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $user= User::where('id', decrypt($id))->first(); $user->forceFill([ 'password' => Hash::make($request->password), 'is_login_enable' => 1, ])->save(); return redirect()->route('employee.index')->with( 'success', 'Employee Password successfully updated.' ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings