您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

TeamController.php 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. namespace App\Http\Controllers\v3\Contractor;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Support\Facades\Auth;
  6. use LynX39\LaraPdfMerger\Facades\PdfMerger;
  7. use Carbon\Carbon;
  8. use Validator;
  9. use Hash;
  10. use App\SiteSetting;
  11. use App\LatestModel\Staff;
  12. use App\LatestModel\StaffDetail;
  13. use App\LatestModel\Module\Form;
  14. use App\LatestModel\Module\Subscriber;
  15. use App\LatestModel\Module\WorkOrder;
  16. use App\LatestModel\Module\PackageDetail;
  17. use App\LatestModel\Module\Company;
  18. use App\LatestModel\Module\Coverage;
  19. use App\LatestModel\Module\Product;
  20. use App\LatestModel\Module\Docket;
  21. class TeamController extends Controller
  22. {
  23. /**
  24. * Create docket controller.
  25. *
  26. * @return post
  27. */
  28. public function view_company_rating(){
  29. $id = Auth::guard('main-contractor')->id();
  30. $user = Staff::with('StaffDetail')->find($id);
  31. $site = SiteSetting::first();
  32. $company = Company::where('_id', $user->company_id)->withTrashed()->first();
  33. $staff = Staff::with('StaffDetail')->where('company_id', $user->company_id)->where('roles_access','Installer')->withTrashed()->get();
  34. $total_docket = 0; $total_rating = 0;
  35. if(!empty($staff)){
  36. foreach($staff as $s){
  37. $t_rating = 0;
  38. $total_docket += count(Docket::where('installer_id',$s->_id)->get());
  39. $docket = Docket::where('installer_id',$s->_id)->get();
  40. if(!empty($docket)){
  41. foreach($docket as $d){
  42. $t_rating += $d->Rating1 + $d->Rating2 + $d->Rating3;
  43. }
  44. }
  45. $total_rating += $t_rating;
  46. }
  47. }
  48. return view('v3.main-contractor.team.overall_rating', compact('user','site','company','total_rating','total_docket'));
  49. }
  50. function random_color_part() {
  51. return str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT);
  52. }
  53. function random_color() {
  54. return $this->random_color_part() . $this->random_color_part() . $this->random_color_part();
  55. }
  56. /**
  57. * Create staff list
  58. *
  59. * @return post
  60. */
  61. public function viewInstallerList()
  62. {
  63. $id = Auth::guard('main-contractor')->id();
  64. $user = Staff::with('StaffDetail')->find($id);
  65. $site = SiteSetting::first();
  66. return view('v3.main-contractor.team.installer_list',compact('user','site'));
  67. }
  68. public function viewStaffForm()
  69. {
  70. $id = Auth::guard('main-contractor')->id();
  71. $user = Staff::with('StaffDetail')->find($id);
  72. $site = SiteSetting::first();
  73. return view('v3.main-contractor.team.add_new_staff', compact('user','site'));
  74. }
  75. public function requestAddStaff(Request $request){
  76. $validator = Validator::make($request->all(), [
  77. 'password' => 'min:6|confirmed',
  78. ]);
  79. if ($validator->fails()) {
  80. return redirect()->back()->withInput()->withErrors($validator);
  81. }
  82. // $encrP = $this->encryptPassword('encrypt', $request->password);
  83. $encrP = Hash::make($request->get('password'));
  84. $company = Company::where('_id',$request->vendor)->first();
  85. if(!empty($company)){
  86. $exist = Staff::with('StaffDetail')->where('email',$request->email)->where('roles_access','Installer')->first();
  87. if(empty($exist)){
  88. $sl = Staff::create([
  89. 'email' => $request->email,
  90. 'password' => $encrP,
  91. 'roles_access' => 'Installer',
  92. 'company_id' => $request->vendor,
  93. 'last_login_at' => '',
  94. 'last_login_ip'=> '',
  95. 'company_id' => $request->vendor,
  96. 'authorized' => false,
  97. 'token_firebase' => '',
  98. ]);
  99. $sdl = new StaffDetail();
  100. $sdl->name = $request->name;
  101. $sdl->ic = $request->ic;
  102. $sdl->email = $request->email;
  103. $sdl->phone = $request->phone;
  104. $sdl->company_id = $request->vendor;
  105. $sdl->color = $company->color;
  106. $sdl->position = 'Installer';
  107. $sdl->password = $encrP;
  108. $sdl->user_pic = 'uploads/profile/user.png';
  109. $company->staff()->save($sl);
  110. $company->save();
  111. $sl->staffdetail()->save($sdl);
  112. return redirect()->back()->with('success_msg', '<strong>Success!</strong> add <strong>'.$request->get('aname').'</strong> as new installer ');
  113. }else {
  114. return redirect()->back()->withInput()->with('error_msg', 'Staff installer with '.$request->email.' already exist!');
  115. }
  116. }else {
  117. return redirect()->back()->withInput()->with('error_msg', 'Record company not found!');
  118. }
  119. }
  120. public function editStaffDetail($type,$_id)
  121. {
  122. $id = Auth::guard('main-contractor')->id();
  123. $user = Staff::with('StaffDetail')->find($id);
  124. $site = SiteSetting::first();
  125. $staff = Staff::with('StaffDetail')->where('_id', $_id)->first();
  126. $current_company = Company::where('_id', $staff->company_id)->first();
  127. return view('v3.main-contractor.team.edit_staff_detail',compact('user','site','current_company','staff','type'));
  128. }
  129. public function requestEditStaff(Request $request){
  130. $exist = Staff::with('StaffDetail')->where('_id',$request->_id)->first();
  131. if(empty($exist)){
  132. return redirect()->back()->withInput()->withErrors('staff not found');
  133. }else {
  134. $exist->email = $request->email;
  135. $exist->save();
  136. $exist->StaffDetail->name = $request->name;
  137. $exist->StaffDetail->ic = $request->ic;
  138. $exist->StaffDetail->email = $request->email;
  139. $exist->StaffDetail->phone = $request->phone;
  140. $exist->StaffDetail->save();
  141. return redirect()->back()->with('success_msg', '<strong>Success!</strong> update detail staff <strong>'.$request->get('name').'</strong>');
  142. }
  143. }
  144. }