LaborCompanyDispatchController.php 4.3 KB

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