LaborCompanyDispatchController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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.warehouse', '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. ->orderByDesc('id')
  32. ->paginate();
  33. return view('personnel.laborApply.dispatch.index', compact('labor_company_dispatches'));
  34. }
  35. public function edit(LaborCompanyDispatch $laborCompanyDispatch)
  36. {
  37. return view('personnel.laborApply.dispatch.edit', compact('laborCompanyDispatch'));
  38. }
  39. public function update(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  40. {
  41. $laborCompanyDispatch->update($request->all());
  42. return redirect(route('laborCompanyDispatch.index'))->with('success', '更新成功!');
  43. }
  44. public function createDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  45. {
  46. return view('personnel.laborApply.dispatch.detail.create', compact('laborCompanyDispatch'));
  47. }
  48. public function editDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  49. {
  50. $laborCompanyDispatch->loadMissing('laborCompanyDispatchDetails');
  51. return view('personnel.laborApply.dispatch.detail.edit', compact('laborCompanyDispatch'));
  52. }
  53. public function storeDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  54. {
  55. $laborCompanyDispatch->laborCompanyDispatchDetails()->delete();
  56. $laborCompanyDispatch->laborCompanyDispatchDetails()->createMany(
  57. $request->input('users')
  58. );
  59. return redirect(route('laborCompanyDispatch.index'))->with('success', '添加临时工详情成功!');
  60. }
  61. /**
  62. * 劳务接单
  63. * @param LaborCompanyDispatch $laborCompanyDispatch
  64. * @param Request $request
  65. * @return \Illuminate\Http\RedirectResponse
  66. */
  67. public function laborCompanyReceivingOrder(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  68. {
  69. /** @var Carbon $dispatch_date */
  70. $dispatch_date = $laborCompanyDispatch->dispatch_date;
  71. //更新创建日期为 分配日期前一天的全部申请状态为 劳务接单
  72. LaborApply::query()
  73. ->whereDate('created_at', $dispatch_date->subDay()->toDateString())
  74. ->where('warehouse_id', $laborCompanyDispatch->laborCompany->warehouse_id)
  75. ->update([
  76. 'status' => $request->status, //劳务接单
  77. ]);
  78. $laborCompanyDispatch->status = '劳务接单';
  79. $laborCompanyDispatch->save();
  80. return redirect()->back()->with('success', '接单成功!');
  81. }
  82. public function personnelCheck(LaborCompanyDispatch $laborCompanyDispatch, Request $request)
  83. {
  84. $laborCompanyDispatch->status = $request->status;
  85. $laborCompanyDispatch->save();
  86. return redirect()->back()->with('success', '人事确认成功!');
  87. }
  88. }