UserLaborController.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\LaborCompany;
  4. use App\ProcessDailyParticipant;
  5. use App\User;
  6. use App\UserDetail;
  7. use App\UserDutyCheck;
  8. use App\UserLabor;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Cache;
  12. use Illuminate\Support\Facades\Cookie;
  13. use Illuminate\Support\Facades\Gate;
  14. use Illuminate\Support\Facades\Validator;
  15. use Illuminate\Validation\Rule;
  16. class UserLaborController extends Controller
  17. {
  18. /**
  19. * Display a listing of the resource.
  20. * @param Request $request
  21. * @return \Illuminate\Http\Response
  22. */
  23. public function index(Request $request)
  24. {
  25. $userLabors=UserLabor::query()->with('userDetail')->orderBy('user_id','desc');
  26. $full_name = $request->user_name ?? false;
  27. if ($full_name){
  28. $userLabors->whereHas('userDetail',function($query)use($full_name){
  29. $query->where('full_name','like',$full_name."%");
  30. });
  31. }
  32. $userLabors = $userLabors->paginate($request->paginate ?? 50);
  33. foreach ($userLabors as $userLabor){
  34. if($userLabor->userDetail){
  35. $userLabor->is_relieve_facility=$userLabor->userDetail->hasDutyCheckToken();
  36. }
  37. }
  38. return view('maintenance.userLabor.index',['userLabors'=>$userLabors]);
  39. }
  40. /**
  41. * Show the form for creating a new resource.
  42. *
  43. * @return \Illuminate\Http\Response
  44. */
  45. public function create()
  46. {
  47. //
  48. }
  49. public function relieve(Request $request){
  50. $user_id=$request->input('user_id');
  51. if (!$user_id) return ['error'=>'传递空值!'];
  52. $token=Cache::get('dutyCheckTokenUser_'.$user_id);
  53. if ($token){
  54. Cache::pull('dutyCheckTokenStr_'.$token);
  55. Cache::pull('dutyCheckTokenUser_'.$user_id);
  56. }
  57. $userLabor=UserLabor::find($user_id);
  58. $userLabor->is_relieve_facility=$userLabor->getIsRelieveFacilityAttribute();
  59. return ['success'=>true,'userLabor'=>$userLabor];
  60. }
  61. /**
  62. * Store a newly created resource in storage.
  63. *
  64. * @param \Illuminate\Http\Request $request
  65. * @return \Illuminate\Http\Response
  66. */
  67. public function store(Request $request)
  68. {
  69. //
  70. }
  71. /**
  72. * Display the specified resource.
  73. *
  74. * @param int $id
  75. * @return \Illuminate\Http\Response
  76. */
  77. public function show($id)
  78. {
  79. if(!Gate::allows('临时工-查询')){ return redirect(url('/')); }
  80. $userLabor=UserLabor::with(['userDetail','laborCompany'])->find($id);
  81. return view('maintenance.userLabor.show',['userLabor'=>$userLabor]);
  82. }
  83. //获取劳务记录
  84. public function getWorkRecord(Request $request){
  85. if(!Gate::allows('临时工-查询')){ return redirect(url('/')); }
  86. $user_id=$request->input('user_id');
  87. if (!$user_id)return ['error'=>'提交ID失败!'];
  88. $processDailyParticipants=ProcessDailyParticipant::with('processDaily')
  89. ->where('user_id',$user_id)->orderBy('created_at','DESC')->limit(20)->get();
  90. return $processDailyParticipants;
  91. }
  92. //获取打卡记录
  93. public function getClockRecord(Request $request){
  94. if(!Gate::allows('临时工-查询')){ return redirect(url('/')); }
  95. $user_id=$request->input('user_id');
  96. if (!$user_id)return ['error'=>'提交ID失败!'];
  97. $userDutyChecks=UserDutyCheck::orderBy('checked_at','DESC')->where('user_id',$user_id)->limit(20)->get();
  98. return $userDutyChecks;
  99. }
  100. /**
  101. * Show the form for editing the specified resource.
  102. *
  103. * @param int $id
  104. * @return \Illuminate\Http\Response
  105. */
  106. public function edit($id)
  107. {
  108. if(!Gate::allows('临时工-编辑')){ return redirect(url('/')); }
  109. $userLabor=UserLabor::with(['userDetail','laborCompany'])->find($id);
  110. $laborCompanies=LaborCompany::select('id','name')->get();
  111. return view('maintenance.userLabor.edit',['userLabor'=>$userLabor,'laborCompanies'=>$laborCompanies,]);
  112. }
  113. /**
  114. * Update the specified resource in storage.
  115. *
  116. * @param \Illuminate\Http\Request $request
  117. * @param int $id
  118. * @return \Illuminate\Http\Response
  119. */
  120. public function update(Request $request, $id)
  121. {
  122. if(!Gate::allows('临时工-编辑')){ return redirect(url('/')); }
  123. Validator::make($request->input(),[
  124. 'full_name'=>'required|max:10',
  125. 'mobile_phone'=>['required','integer','digits:11'],
  126. 'gender'=>['required',Rule::in(['男', '女']),],
  127. 'identity_number'=>'nullable',
  128. 'default_hour_price'=>'nullable|min:0|max:999999|numeric',
  129. 'name'=>'nullable',
  130. ],[
  131. 'required'=>':attribute 不应为空',
  132. 'min'=>':attribute 不得为0或为负',
  133. 'numeric'=>':attribute 必须为数字',
  134. 'max'=>':attribute 输入值过大或过长',
  135. 'integer'=>':attribute 选择错误',
  136. ],[
  137. 'full_name'=>'姓名',
  138. 'mobile_phone'=>'电话',
  139. 'gender'=>'性别',
  140. 'identity_number'=>'身份证号',
  141. 'default_hour_price'=>'默认计时单价',
  142. 'name'=>'劳务所',
  143. ])->validate();
  144. $userDetail=UserDetail::find($id);
  145. $userDetail->full_name=$request->input('full_name');
  146. $userDetail->mobile_phone=$request->input('mobile_phone');
  147. $userDetail->gender=$request->input('gender');
  148. $userDetail->identity_number=$request->input('identity_number');
  149. $userDetail->update();
  150. $this->log(__METHOD__,"修改用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
  151. $default_hour_price=$request->input('default_hour_price');
  152. $laborCompanyName=$request->input('name');
  153. $labor_company_id=LaborCompany::where('name','=',$laborCompanyName)->value('id');
  154. $userLabor=UserLabor::find($id);
  155. if ($userLabor->default_hour_price!=$default_hour_price || $userLabor->labor_company_id!=$labor_company_id){
  156. $userLabor->default_hour_price=$default_hour_price;
  157. $userLabor->labor_company_id=$labor_company_id;
  158. $userLabor->update();
  159. $this->log(__METHOD__,"修改临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
  160. }
  161. return redirect('maintenance/userLabor')->with('successTip','临时工“'.$userDetail->full_name.'”信息修改成功!');
  162. }
  163. /**
  164. * Remove the specified resource from storage.
  165. *
  166. * @param int $id
  167. * @return \Illuminate\Http\Response
  168. */
  169. public function destroy($id)
  170. {
  171. if(!Gate::allows('临时工-删除')){ return redirect(url('/')); }
  172. $userDetail=UserDetail::find($id);
  173. $user=User::find($id);
  174. $userLabor=UserLabor::find($id);
  175. if (!$userDetail || !$user || !$userLabor){
  176. return ['error'=>'未找到对应临时工'];
  177. }
  178. $userDetail->delete();
  179. $this->log(__METHOD__,"删除用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
  180. $user->delete();
  181. $this->log(__METHOD__,"删除临时工用户".__FUNCTION__,json_encode($user),Auth::user()['id']);
  182. $userLabor->delete();
  183. $this->log(__METHOD__,"删除临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
  184. return ['success'=>true];
  185. }
  186. }