middleware('verified'); } parent::__construct(); } public function index(Request $request) { $this->checkPermission('user_manage'); $username = $request->query('s'); $listUser = User::query()->orderBy('id','desc'); if (!empty($username)) { $listUser->where(function($query) use($username){ $query->where('first_name', 'LIKE', '%' . $username . '%'); $query->orWhere('id', $username); $query->orWhere('phone', $username); $query->orWhere('email', 'LIKE', '%' . $username . '%'); $query->orWhere('last_name', 'LIKE', '%' . $username . '%'); }); } if($request->query('role')){ $listUser->role($request->query('role')); } $data = [ 'rows' => $listUser->paginate(20), 'roles' => Role::all() ]; return view('jobportal::admin.user.index', $data); } public function create(Request $request) { $row = new \Modules\User\Models\User(); $data = [ 'row' => $row, 'rolexs' => Role::all(), 'candidate_create' => $request->get('candidate_create', 0), 'candidate' => new Candidate(), 'locations' => Location::query()->where('status', 'publish')->get()->toTree(), 'categories' => Category::get()->toTree(), 'skills' => Skill::query()->where('status', 'publish')->get(), 'badges' => Badge::query()->where('status', 'publish')->get(), 'breadcrumbs'=>[ [ 'name'=>__("Users"), 'url'=>'admin/jobportal/user' ] ] ]; return view('jobportal::admin.user.detail', $data); } public function edit(Request $request, $id) { $row = User::find($id); if (empty($row)) { return redirect('admin/jobportal/user'); } if ($row->id != Auth::user()->id and !permissionCheck('setting_manage')) { abort(403); } $data = [ 'row' => $row, 'locations' => Location::query()->where('status', 'publish')->get()->toTree(), 'categories' => Category::get()->toTree(), 'cvs' => CandidateCvs::query()->where('origin_id', $id)->with('media')->get(), 'skills' => Skill::query()->where('status', 'publish')->get(), 'badges' => Badge::query()->where('status', 'publish')->get(), ]; return view('jobportal::admin.user.detail', $data); } public function password(Request $request,$id){ $row = User::find($id); $data = [ 'row'=>$row, 'currentUser'=>Auth::user() ]; if (empty($row)) { return redirect('admin/jobportal/user'); } if ($row->id != Auth::user()->id and !permissionCheck('setting_manage')) { abort(403); } return view('jobportal::admin.user.password',$data); } public function changepass(Request $request, $id) { if(is_demo_mode()){ return redirect()->back()->with("error", __("DEMO MODE: You can not change password!")); } $rules = []; $urow = User::find($id); if ($urow->id != Auth::user()->id and !permissionCheck('setting_manage')) { abort(403); } $request->validate([ 'password' => 'required|min:6|max:255', 'password_confirmation' => 'required', ]); $password_confirmation = $request->input('password_confirmation'); $password = $request->input('password'); if ($password != $password_confirmation) { return redirect()->back()->with("error", __("Your New password does not matches. Please type again!")); } if ($urow->id != Auth::user()->id and !permissionCheck('setting_manage')) { if ($password) { if ($urow->id != Auth::user()->id) { $rules['old_password'] = 'required'; } $rules['password'] = 'required|string|min:6|confirmed'; } $this->validate($request, $rules); if ($password) { if (!(Hash::check($request->input('old_password'), $urow->password))) { // The Old passwords matches return redirect()->back()->with("error", __("Your current password does not matches with the password you provided. Please try again.")); } } } $urow->password = bcrypt($password); if ($urow->save()) { if ($request->input('role_id') and $role = Role::findById($request->input('role_id'))) { $urow->assignRole($role); } return redirect()->back()->with('success', __('Password updated!')); } } public function store(Request $request, $id) { if(!is_candidate() && !is_admin() && !is_employer()){ abort(403); } if($id and $id>0){ $row = User::find($id); if(empty($row)){ abort(404); } if ($row->id != Auth::user()->id and !permissionCheck('setting_manage')) { abort(403); } $request->validate([ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'status' => 'required|max:50', 'phone' => 'required', 'role_id' => 'sometimes|required|max:11', 'email' =>[ 'required', 'email', 'max:255', Rule::unique('users')->ignore($row->id) ], ]); }else{ $check = Validator::make($request->input(),[ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'status' => 'required|max:50', 'phone' => 'required', 'role_id' => 'sometimes|required|max:11', 'email' =>[ 'required', 'email', 'max:255', Rule::unique('users') ], ]); if(!$check->validated()){ return back()->withInput($request->input()); } $row = new User(); $row->email = $request->input('email'); } //$row->name = $request->input('name'); $row->first_name = $request->input('first_name'); $row->last_name = $request->input('last_name'); $row->phone = $request->input('phone'); $row->date_of_birth = date("Y-m-d", strtotime($request->input('birthday'))); $row->bio = clean($request->input('bio')); $row->status = $request->input('status'); $row->avatar_id = $request->input('avatar_id'); $row->email = $request->input('email'); // $row->need_update_pw = $request->input('need_update_pw'); if(permissionCheck('setting_manage') && $role_id = $request->input('role_id')) { $row->role_id = $role_id; } if ($row->save()) { if($row->role->permissions->contains('route','job.apply-job') || $row->role->permissions->contains('route','candidate_portal')){ $check = Validator::make($request->input(),[ 'title' => 'required|max:255' ]); if(!$check->validated()){ return back()->withInput($request->input()); } $cData = Candidate::find($row->id); if(empty($cData)){ DB::table('jp_candidates')->insert([ 'id' => $row->id ]); $cData = Candidate::find($row->id); } $cData->fillByAttr([ 'title', 'gallery', 'video', 'gender', 'expected_salary', 'salary_type', 'website', 'education_level', 'experience_year', 'languages', 'allow_search', 'address', 'city', 'country', 'location_id', 'map_lat', 'map_lng', 'map_zoom', 'education', 'experience', 'award', 'social_media', 'video_cover_id', 'badge_id' ], $request->input()); // $cData->save(); if(!empty($request->input('languages'))) { $cData->languages = implode(',',$request->input('languages')); }else{ $cData->languages = ''; } $cData->saveOriginOrTranslation($request->query('lang'),true); $uploadedCandidate = CandidateCvs::query()->where('origin_id', $row->id)->pluck('file_id')->toArray(); $cvUpload = $request->input('cvs', []); if(!empty($cvUpload)) { CandidateCvs::query()->where('origin_id', $row->id)->whereNotIn('file_id', $cvUpload)->delete(); foreach ($cvUpload as $oneCv) { if (in_array($oneCv, $uploadedCandidate)) { continue; } $cv = new CandidateCvs(); $cv->file_id = $oneCv; $cv->origin_id = $row->id; $cv->is_default = 0; $cv->create_user = Auth::id(); $cv->save(); } //Update Default CV CandidateCvs::query()->where("origin_id", $row->id)->update(['is_default' => 0]); CandidateCvs::query()->where("origin_id", $row->id)->where('file_id', @$request->csv_default)->update(['is_default' => 1]); } if(!empty($request->skills)){ $cSkills = CandidateSkills::query()->where('origin_id', $row->id)->pluck('skill_id')->toArray(); foreach($request->skills as $skill){ $pos = array_search(intval($skill), $cSkills); if($pos !== false){ unset($cSkills[$pos]); }else{ DB::table('jp_candidate_skills')->insert([ 'origin_id' => $row->id, 'skill_id' => $skill ]); } } if(!empty($cSkills)){ CandidateSkills::query()->where('origin_id', $row->id)->whereIn('skill_id', $cSkills)->delete(); } }else{ CandidateSkills::query()->where('origin_id', $row->id)->delete(); } if(!empty($request->categories)){ $cCats = CandidateCategories::query()->where('origin_id', $row->id)->pluck('cat_id')->toArray(); foreach($request->categories as $category){ $pos = array_search(intval($category), $cCats); if($pos !== false){ unset($cCats[$pos]); }else{ DB::table('jp_candidate_categories')->insert([ 'origin_id' => $row->id, 'cat_id' => $category ]); } } if(!empty($cCats)){ CandidateCategories::query()->where('origin_id', $row->id)->whereIn('cat_id', $cCats)->delete(); } }else{ CandidateCategories::query()->where('origin_id', $row->id)->delete(); } } if($id > 0 ){ return back()->with('success', __('User updated') ); }else{ return redirect(route('user.admin.detail', $row->id))->with('success', __('User created') ); } } } public function getForSelect2(Request $request) { $q = $request->query('q'); $query = User::select('*')->where('role_id',101); if ($q) { $query->where(function ($query) use ($q) { $query->where('first_name', 'like', '%' . $q . '%')->orWhere('last_name', 'like', '%' . $q . '%')->orWhere('email', 'like', '%' . $q . '%')->orWhere('id', $q)->orWhere('phone', 'like', '%' . $q . '%'); }); } $res = $query->orderBy('id', 'desc')->orderBy('first_name', 'asc')->limit(20)->get(); $data = []; if (!empty($res)) { if($request->query("user_type") == "candidate"){ //for only vendor foreach ($res as $item) { if($item->hasPermission("gig_manage")){ $data[] = [ 'id' => $item->id, 'text' => $item->getDisplayName() ? $item->getDisplayName() . ' (#' . $item->id . ')' : $item->email . ' (#' . $item->id . ')', ]; } } }else{ //for all foreach ($res as $item) { $data[] = [ 'id' => $item->id, 'text' => $item->getDisplayName() ? $item->getDisplayName() . ' (#' . $item->id . ')' : $item->email . ' (#' . $item->id . ')', ]; } } } return response()->json([ 'results' => $data ]); } }