dbfdg can('manage job application')) { $stages = JobStage::where('created_by', '=', \Auth::user()->creatorId())->orderBy('order', 'asc')->get(); $jobs = Job::where('created_by', \Auth::user()->creatorId())->get()->pluck('title', 'id'); $jobs->prepend('All', ''); if(isset($request->start_date) && !empty($request->start_date)) { $filter['start_date'] = $request->start_date; } else { $filter['start_date'] = date("Y-m-d", strtotime("-1 month")); } if(isset($request->end_date) && !empty($request->end_date)) { $filter['end_date'] = $request->end_date; } else { $filter['end_date'] = date("Y-m-d H:i:s", strtotime("+1 hours")); } if(isset($request->job) && !empty($request->job)) { $filter['job'] = $request->job; } else { $filter['job'] = ''; } return view('jobApplication.index', compact('stages', 'jobs', 'filter')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function create() { $jobs = Job::where('created_by', \Auth::user()->creatorId())->get()->pluck('title', 'id'); $jobs->prepend('--', ''); $questions = CustomQuestion::where('created_by', \Auth::user()->creatorId())->get(); return view('jobApplication.create', compact('jobs', 'questions')); } public function store(Request $request) { if(\Auth::user()->can('create job application')) { $validator = \Validator::make( $request->all(), [ 'job' => 'required', 'name' => 'required', 'email' => 'required', 'phone' => 'required', // 'profile' => 'mimes:jpeg,png,jpg,gif,svg|max:20480', // 'resume' => 'mimes:jpeg,png,jpg,gif,svg,pdf,doc,zip|max:20480', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } if(!empty($request->profile)) { // $filenameWithExt = $request->file('profile')->getClientOriginalName(); // $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); // $extension = $request->file('profile')->getClientOriginalExtension(); // $fileNameToStore = $filename . '_' . time() . '.' . $extension; // // $dir = storage_path('uploads/job/profile'); // $image_path = $dir . $filenameWithExt; // // if(\File::exists($image_path)) // { // \File::delete($image_path); // } // if(!file_exists($dir)) // { // mkdir($dir, 0777, true); // } // $path = $request->file('profile')->storeAs('uploads/job/profile/', $fileNameToStore); // } $filenameWithExt = $request->file('profile')->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('profile')->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . time() . '.' . $extension; $dir = 'uploads/job/profile'; $image_path = $dir . $filenameWithExt; if (\File::exists($image_path)) { \File::delete($image_path); } $url = ''; $path = Utility::upload_file($request,'profile',$fileNameToStore,$dir,[]); if($path['flag'] == 1){ $url = $path['url']; }else{ return redirect()->back()->with('error', __($path['msg'])); } } if(!empty($request->resume)) { // $filenameWithExt1 = $request->file('resume')->getClientOriginalName(); // $filename1 = pathinfo($filenameWithExt1, PATHINFO_FILENAME); // $extension1 = $request->file('resume')->getClientOriginalExtension(); // $fileNameToStore1 = $filename1 . '_' . time() . '.' . $extension1; // // $dir = storage_path('uploads/job/resume'); // $image_path = $dir . $filenameWithExt1; // // if(\File::exists($image_path)) // { // \File::delete($image_path); // } // if(!file_exists($dir)) // { // mkdir($dir, 0777, true); // } // $path = $request->file('resume')->storeAs('uploads/job/resume/', $fileNameToStore1); // } $filenameWithExt1 = $request->file('resume')->getClientOriginalName(); $filename1 = pathinfo($filenameWithExt1, PATHINFO_FILENAME); $extension1 = $request->file('resume')->getClientOriginalExtension(); $fileNameToStore1 = $filename1 . '_' . time() . '.' . $extension1; $dir = 'uploads/job/resume'; $image_path = $dir . $filenameWithExt1; if (\File::exists($image_path)) { \File::delete($image_path); } $url = ''; $path = Utility::upload_file($request,'resume',$fileNameToStore1,$dir,[]); if($path['flag'] == 1){ $url = $path['url']; }else{ return redirect()->back()->with('error', __($path['msg'])); } } $stages = JobStage::where('created_by',\Auth::user()->creatorId())->first(); $job = new JobApplication(); $job->job = $request->job; $job->name = $request->name; $job->email = $request->email; $job->phone = $request->phone; $job->profile = !empty($request->profile) ? $fileNameToStore : ''; $job->resume = !empty($request->resume) ? $fileNameToStore1 : ''; $job->cover_letter = $request->cover_letter; $job->dob = $request->dob; $job->gender = $request->gender; $job->country = $request->country; $job->state = $request->state; $job->city = $request->city; $job->stage = !empty($stages)?$stages->id:1; $job->custom_question = json_encode($request->question); $job->created_by = \Auth::user()->creatorId(); $job->save(); return redirect()->route('job-application.index')->with('success', __('Job application successfully created.')); } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function show($ids) { if(\Auth::user()->can('show job application')) { $id = Crypt::decrypt($ids); $jobApplication = JobApplication::find($id); $notes = JobApplicationNote::where('application_id', $id)->get(); $stages = JobStage::where('created_by', \Auth::user()->creatorId())->get(); return view('jobApplication.show', compact('jobApplication', 'notes', 'stages')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function destroy(JobApplication $jobApplication) { if(\Auth::user()->can('delete job application')) { $jobApplication->delete(); if (!empty($jobApplication->profile)) { //storage limit $file_path = 'uploads/job/profile/' . $jobApplication->profile; $result = Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path); } if (!empty($jobApplication->resume)) { $file_path = 'uploads/job/resume/' . $jobApplication->resume; $result = Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path); } return redirect()->route('job-application.index')->with('success', __('Job application successfully deleted.')); } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function order(Request $request) { if(\Auth::user()->can('move job application')) { $post = $request->all(); foreach($post['order'] as $key => $item) { $application = JobApplication::where('id', '=', $item)->first(); $application->order = $key; $application->stage = $post['stage_id']; $application->save(); } } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function addSkill(Request $request, $id) { if(\Auth::user()->can('add job application skill')) { $validator = \Validator::make( $request->all(), [ 'skill' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $job = JobApplication::find($id); $job->skill = $request->skill; $job->save(); return redirect()->back()->with('success', __('Job application skill successfully added.')); } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function addNote(Request $request, $id) { if(\Auth::user()->can('add job application note')) { $validator = \Validator::make( $request->all(), [ 'note' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $note = new JobApplicationNote(); $note->application_id = $id; $note->note = $request->note; $note->note_created = \Auth::user()->id; $note->created_by = \Auth::user()->creatorId(); $note->save(); return redirect()->back()->with('success', __('Job application notes successfully added.')); } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function destroyNote($id) { if(\Auth::user()->can('delete job application note')) { $note = JobApplicationNote::find($id); $note->delete(); return redirect()->back()->with('success', __('Job application notes successfully deleted.')); } else { return redirect()->route('job-application.index')->with('error', __('Permission denied.')); } } public function rating(Request $request, $id) { $jobApplication = JobApplication::find($id); $jobApplication->rating = $request->rating; $jobApplication->save(); } public function archive($id) { $jobApplication = JobApplication::find($id); if($jobApplication->is_archive == 0) { $jobApplication->is_archive = 1; $jobApplication->save(); return redirect()->route('job.application.candidate')->with('success', __('Job application successfully added to archive.')); } else { $jobApplication->is_archive = 0; $jobApplication->save(); return redirect()->route('job-application.index')->with('success', __('Job application successfully remove to archive.')); } } public function candidate() { if(\Auth::user()->can('manage job onBoard')) { $archive_application = JobApplication::where('created_by', \Auth::user()->creatorId())->where('is_archive', 1)->get(); return view('jobApplication.candidate', compact('archive_application')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } // -----------------------Job OnBoard----------------------------- public function jobBoardCreate($id) { $status = JobOnBoard::$status; $job_type = JobOnBoard::$job_type; $salary_duration = JobOnBoard::$salary_duration; $salary_type = PayslipType::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $applications = InterviewSchedule::select('interview_schedules.*', 'job_applications.name')->join('job_applications', 'interview_schedules.candidate', '=', 'job_applications.id')->where('interview_schedules.created_by', \Auth::user()->creatorId())->get()->pluck('name', 'candidate'); $applications->prepend('-', ''); return view('jobApplication.onboardCreate', compact('id', 'status', 'applications','job_type','salary_type','salary_duration')); } public function jobOnBoard() { if(\Auth::user()->can('manage job onBoard')) { $jobOnBoards = JobOnBoard::where('created_by', \Auth::user()->creatorId())->with('applications')->get(); return view('jobApplication.onboard', compact('jobOnBoards')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function jobBoardStore(Request $request, $id) { $validator = \Validator::make( $request->all(), [ 'joining_date' => 'required', 'job_type' => 'required', 'days_of_week'=>'required|gt:0', 'salary'=>'required|gt:0', 'salary_type'=>'required', 'salary_duration'=>'required', 'status' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $id = ($id == 0) ? $request->application : $id; $jobBoard = new JobOnBoard(); $jobBoard->application = $id; $jobBoard->joining_date = $request->joining_date; $jobBoard->job_type = $request->job_type; $jobBoard->days_of_week =$request->days_of_week; $jobBoard->salary =$request->salary; $jobBoard->salary_type =$request->salary_type; $jobBoard->salary_duration =$request->salary_duration; $jobBoard->status = $request->status; $jobBoard->created_by = \Auth::user()->creatorId(); $jobBoard->save(); $interview = InterviewSchedule::where('candidate', $id)->first(); if(!empty($interview)) { $interview->delete(); } return redirect()->route('job.on.board')->with('success', __('Candidate succefully added in job board.')); } public function jobBoardUpdate(Request $request, $id) { $validator = \Validator::make( $request->all(), [ 'joining_date' => 'required', 'job_type' => 'required', 'days_of_week'=>'required', 'salary'=>'required', 'salary_type'=>'required', 'salary_duration'=>'required', 'status' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $jobBoard = JobOnBoard::find($id); $jobBoard->joining_date = $request->joining_date; $jobBoard->job_type = $request->job_type; $jobBoard->days_of_week =$request->days_of_week; $jobBoard->salary =$request->salary; $jobBoard->salary_type =$request->salary_type; $jobBoard->salary_duration =$request->salary_duration; $jobBoard->status = $request->status; $jobBoard->save(); return redirect()->route('job.on.board')->with('success', __('Job board Candidate succefully updated.')); } public function jobBoardEdit($id) { $jobOnBoard = JobOnBoard::find($id); $status = JobOnBoard::$status; $job_type = JobOnBoard::$job_type; $salary_duration = JobOnBoard::$salary_duration; $salary_type = PayslipType::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); return view('jobApplication.onboardEdit', compact('jobOnBoard', 'status','job_type','salary_type','salary_duration')); } public function jobBoardDelete($id) { $jobBoard = JobOnBoard::find($id); $jobBoard->delete(); return redirect()->route('job.on.board')->with('success', __('Job onBoard successfully deleted.')); } public function jobBoardConvert($id) { $jobOnBoard = JobOnBoard::find($id); $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('jobApplication.convert', compact('jobOnBoard', 'employees', 'employeesId', 'departments', 'designations', 'documents', 'branches', 'company_settings')); } public function jobBoardConvertData(Request $request, $id) { $validator = \Validator::make( $request->all(), [ 'name' => 'required', 'dob' => 'required', 'gender' => 'required', 'phone' => 'required', 'address' => 'required', 'email' => 'required|unique:users', 'password' => 'required', 'department_id' => 'required', 'designation_id' => 'required', // 'document.*' => 'mimes:jpeg,png,jpg,gif,svg,pdf,doc,zip|max:20480', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->withInput()->with('error', $messages->first()); } $objUser = \Auth::user(); $employees = User::where('type','!=','client')->where('type','!=','company')->where('created_by',\Auth::user()->creatorId())->get(); $total_employee = $employees->count(); $plan = Plan::find($objUser->plan); // dd($plan); if($total_employee < $plan->max_users || $plan->max_users == -1) { $user = User::create( [ 'name' => $request['name'], 'email' => $request['email'], 'password' => Hash::make($request['password']), 'type' => 'employee', 'lang' => 'en', 'created_by' => \Auth::user()->creatorId(), ] ); $user->save(); $user->assignRole('Employee'); } else { return redirect()->back()->with('error', __('Your employee limit is over, Please upgrade plan.')); } 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(), 'branch_id' => $request['branch_id'], 'department_id' => $request['department_id'], 'designation_id' => $request['designation_id'], '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(!empty($employee)) { $JobOnBoard = JobOnBoard::find($id); $JobOnBoard->convert_to_employee = $employee->id; $JobOnBoard->save(); } if($request->hasFile('document')) { foreach($request->document as $key => $document) { $filenameWithExt = $request->file('document')[$key]->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')[$key]->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . time() . '.' . $extension; $dir = storage_path('uploads/document/'); $image_path = $dir . $filenameWithExt; if(\File::exists($image_path)) { \File::delete($image_path); } if(!file_exists($dir)) { mkdir($dir, 0777, true); } $path = $request->file('document')[$key]->storeAs('uploads/document/', $fileNameToStore); $employee_document = EmployeeDocument::create( [ 'employee_id' => $employee['employee_id'], 'document_id' => $key, 'document_value' => $fileNameToStore, 'created_by' => \Auth::user()->creatorId(), ] ); $employee_document->save(); } } $setings = Utility::settings(); if($setings['new_user'] == 1) { $userArr = [ 'email' => $user->email, 'password' => $user->password, ]; $resp = Utility::sendEmailTemplate('new_user', [$user->id => $user->email], $userArr); return redirect()->back()->with('success', __('Application successfully converted to employee.') .((!empty($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } return redirect()->back()->with('success', __('Application successfully converted to employee.')); } function employeeNumber() { $latest = Employee::where('created_by', '=', \Auth::user()->creatorId())->latest()->first(); if(!$latest) { return 1; } return $latest->employee_id + 1; } public function getByJob(Request $request) { $job = Job::find($request->id); $job->applicant = !empty($job->applicant) ? explode(',', $job->applicant) : ''; $job->visibility = !empty($job->visibility) ? explode(',', $job->visibility) : ''; $job->custom_question = !empty($job->custom_question) ? explode(',', $job->custom_question) : ''; return json_encode($job); } public function stageChange(Request $request) { $application = JobApplication::where('id', '=', $request->schedule_id)->first(); $application->stage = $request->stage; $application->save(); return response()->json( [ 'success' => __('This candidate stage successfully changed.'), ], 200 ); } public function offerletterPdf($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); // $Offerletter=GenerateOfferLetter::where('lang', $currantLang)->first(); $Offerletter=GenerateOfferLetter::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first(); $job = JobApplication::find($id); $Onboard=JobOnBoard::find($id); $name=JobApplication::find($Onboard->application); $job_title=job::find($name->job); // dd($job); $salary=PayslipType::find($Onboard->salary_type); // dd($salary->name); $obj = [ 'applicant_name' => $name->name, 'app_name' => env('APP_NAME'), 'job_title' => $job_title->title, 'job_type' =>!empty($Onboard->job_type)?$Onboard->job_type:'' , 'start_date' => $Onboard->joining_date, 'workplace_location' => !empty($job->jobs->branches->name)?$job->jobs->branches->name:'', 'days_of_week' => !empty($Onboard->days_of_week)?$Onboard->days_of_week:'', 'salary' => !empty($Onboard->salary)?$Onboard->salary:'', 'salary_type' => !empty($salary->name)?$salary->name:'', 'salary_duration' => !empty($Onboard->salary_duration)?$Onboard->salary_duration:'', 'offer_expiration_date' => !empty($Onboard->joining_date)?$Onboard->joining_date:'', ]; $Offerletter->content = GenerateOfferLetter::replaceVariable($Offerletter->content, $obj); return view('jobApplication.template.offerletterpdf', compact('Offerletter','name')); } public function offerletterDoc($id) { $users = \Auth::user(); $currantLang = $users->currentLanguage(); $Offerletter=GenerateOfferLetter::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first(); // ['lang' => $currantLang,'created_by' => \Auth::user()->id] $job = JobApplication::find($id); $Onboard=JobOnBoard::find($id); $name=JobApplication::find($Onboard->application); $job_title=job::find($name->job); // dd($job_title->title); $salary=PayslipType::find($Onboard->salary_type); // dd($Offerletter); // dd($salary->name); $obj = [ 'applicant_name' => $name->name, 'app_name' => env('APP_NAME'), 'job_title' => $job_title->title, 'job_type' =>!empty($Onboard->job_type)?$Onboard->job_type:'' , 'start_date' => $Onboard->joining_date, 'workplace_location' => !empty($job->jobs->branches->name)?$job->jobs->branches->name:'', 'days_of_week' => !empty($Onboard->days_of_week)?$Onboard->days_of_week:'', 'salary' => !empty($Onboard->salary)?$Onboard->salary:'', 'salary_type' => !empty($salary->name)?$salary->name:'', 'salary_duration' => !empty($Onboard->salary_duration)?$Onboard->salary_duration:'', 'offer_expiration_date' => !empty($Onboard->joining_date)?$Onboard->joining_date:'', ]; $Offerletter->content = GenerateOfferLetter::replaceVariable($Offerletter->content, $obj); return view('jobApplication.template.offerletterdocx', compact('Offerletter','name')); } }