LaborCompanyDispatchController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Filters\LaborCompanyDispatchFilters;
  4. use App\LaborApply;
  5. use App\LaborCompany;
  6. use App\LaborCompanyDispatch;
  7. use App\User;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Carbon;
  10. use Illuminate\Support\Facades\Gate;
  11. class LaborCompanyDispatchController extends Controller
  12. {
  13. public function index(Request $request, LaborCompanyDispatchFilters $filters)
  14. {
  15. //按照分配日期倒序
  16. $builder = LaborCompanyDispatch::query()
  17. ->filter($filters)
  18. ->with(['laborCompany', 'laborCompanyDispatchDetails']);
  19. /** @var User $user */
  20. $user = auth()->user();
  21. $auth_user_is_人事主管 = $user->roles()->where('name', '人事主管')->exists();
  22. if (!($user->isSuperAdmin() || $auth_user_is_人事主管)) {
  23. //获取用户的劳务角色 劳务角色名 与 劳务所名称相同
  24. $laborCompanyNames = $user->roles()->where('name', 'LIKE', '%劳务%')->pluck('name');
  25. //根据劳务所名称相同 查询劳务所Id
  26. $laborCompanyIds = LaborCompany::query()->whereIn('name', $laborCompanyNames)->pluck('id');
  27. $builder->whereIn('labor_company_id', $laborCompanyIds);
  28. }
  29. $labor_company_dispatches = $builder
  30. ->orderByDesc('dispatch_date')
  31. ->paginate();
  32. return view('personnel.laborApply.dispatch.index', compact('labor_company_dispatches'));
  33. }
  34. public function edit(LaborCompanyDispatch $laborCompanyDispatch)
  35. {
  36. return view('personnel.laborApply.dispatch.edit', compact('laborCompanyDispatch'));
  37. }
  38. public function update(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  39. {
  40. $laborCompanyDispatch->update($request->all());
  41. return redirect(route('laborCompanyDispatch.index'))->with('success', '更新成功!');
  42. }
  43. public function createDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  44. {
  45. return view('personnel.laborApply.dispatch.detail.create', compact('laborCompanyDispatch'));
  46. }
  47. public function editDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  48. {
  49. $laborCompanyDispatch->loadMissing('laborCompanyDispatchDetails');
  50. return view('personnel.laborApply.dispatch.detail.edit', compact('laborCompanyDispatch'));
  51. }
  52. public function storeDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  53. {
  54. $laborCompanyDispatch->laborCompanyDispatchDetails()->delete();
  55. $laborCompanyDispatch->laborCompanyDispatchDetails()->createMany(
  56. $request->input('users')
  57. );
  58. return redirect(route('laborCompanyDispatch.index'))->with('success', '添加临时工详情成功!');
  59. }
  60. /**
  61. * 劳务接单
  62. * @param LaborCompanyDispatch $laborCompanyDispatch
  63. * @param Request $request
  64. * @return \Illuminate\Http\RedirectResponse
  65. */
  66. public function laborCompanyReceivingOrder(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  67. {
  68. /** @var Carbon $dispatch_date */
  69. $dispatch_date = $laborCompanyDispatch->dispatch_date;
  70. //更新创建日期为 分配日期前一天的全部申请状态为 劳务接单
  71. LaborApply::query()
  72. ->whereDate('created_at', $dispatch_date->subDay()->toDateString())
  73. ->where('warehouse_id', $laborCompanyDispatch->laborCompany->warehouse_id)
  74. ->update([
  75. 'status' => $request->status, //劳务接单
  76. ]);
  77. $laborCompanyDispatch->status = '劳务接单';
  78. $laborCompanyDispatch->save();
  79. return redirect()->back()->with('success', '接单成功!');
  80. }
  81. public function personnelCheck(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  82. {
  83. $laborCompanyDispatch->status = $request->status;
  84. $laborCompanyDispatch->save();
  85. return redirect()->back()->with('success', '人事确认成功!');
  86. }
  87. }