id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); $company = Company::where('_id', $user->company_id)->withTrashed()->first(); $staff = Staff::with('StaffDetail')->where('company_id', $user->company_id)->where('roles_access','Installer')->withTrashed()->get(); $total_docket = 0; $total_rating = 0; if(!empty($staff)){ foreach($staff as $s){ $t_rating = 0; $total_docket += count(Docket::where('installer_id',$s->_id)->get()); $docket = Docket::where('installer_id',$s->_id)->get(); if(!empty($docket)){ foreach($docket as $d){ $t_rating += $d->Rating1 + $d->Rating2 + $d->Rating3; } } $total_rating += $t_rating; } } return view('v3.main-contractor.team.overall_rating', compact('user','site','company','total_rating','total_docket')); } function random_color_part() { return str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT); } function random_color() { return $this->random_color_part() . $this->random_color_part() . $this->random_color_part(); } /** * Create staff list * * @return post */ public function viewInstallerList() { $id = Auth::guard('main-contractor')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('v3.main-contractor.team.installer_list',compact('user','site')); } public function viewStaffForm() { $id = Auth::guard('main-contractor')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('v3.main-contractor.team.add_new_staff', compact('user','site')); } public function requestAddStaff(Request $request){ $validator = Validator::make($request->all(), [ 'password' => 'min:6|confirmed', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } // $encrP = $this->encryptPassword('encrypt', $request->password); $encrP = Hash::make($request->get('password')); $company = Company::where('_id',$request->vendor)->first(); if(!empty($company)){ $exist = Staff::with('StaffDetail')->where('email',$request->email)->where('roles_access','Installer')->first(); if(empty($exist)){ $sl = Staff::create([ 'email' => $request->email, 'password' => $encrP, 'roles_access' => 'Installer', 'company_id' => $request->vendor, 'last_login_at' => '', 'last_login_ip'=> '', 'company_id' => $request->vendor, 'authorized' => false, 'token_firebase' => '', ]); $sdl = new StaffDetail(); $sdl->name = $request->name; $sdl->ic = $request->ic; $sdl->email = $request->email; $sdl->phone = $request->phone; $sdl->company_id = $request->vendor; $sdl->color = $company->color; $sdl->position = 'Installer'; $sdl->password = $encrP; $sdl->user_pic = 'uploads/profile/user.png'; $company->staff()->save($sl); $company->save(); $sl->staffdetail()->save($sdl); return redirect()->back()->with('success_msg', 'Success! add '.$request->get('aname').' as new installer '); }else { return redirect()->back()->withInput()->with('error_msg', 'Staff installer with '.$request->email.' already exist!'); } }else { return redirect()->back()->withInput()->with('error_msg', 'Record company not found!'); } } public function editStaffDetail($type,$_id) { $id = Auth::guard('main-contractor')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); $staff = Staff::with('StaffDetail')->where('_id', $_id)->first(); $current_company = Company::where('_id', $staff->company_id)->first(); return view('v3.main-contractor.team.edit_staff_detail',compact('user','site','current_company','staff','type')); } public function requestEditStaff(Request $request){ $exist = Staff::with('StaffDetail')->where('_id',$request->_id)->first(); if(empty($exist)){ return redirect()->back()->withInput()->withErrors('staff not found'); }else { $exist->email = $request->email; $exist->save(); $exist->StaffDetail->name = $request->name; $exist->StaffDetail->ic = $request->ic; $exist->StaffDetail->email = $request->email; $exist->StaffDetail->phone = $request->phone; $exist->StaffDetail->save(); return redirect()->back()->with('success_msg', 'Success! update detail staff '.$request->get('name').''); } } }