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').'');
}
}
}