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