LaborCompanyDispatchController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. if (!(\auth()->user()->isSuperAdmin() || Gate::allows('宝时人事部'))) {
  20. /** @var User $user */
  21. $user = auth()->user();
  22. //获取用户的劳务角色 劳务角色名 与 劳务所名称相同
  23. $laborCompanyNames = $user->roles()->where('name', 'LIKE', '劳务')->pluck('name');
  24. //根据劳务所名称相同 查询劳务所Id
  25. $laborCompanyIds = LaborCompany::query()->whereIn('name', $laborCompanyNames)->pluck('id');
  26. $builder->whereIn('labor_company_id', $laborCompanyIds);
  27. }
  28. $labor_company_dispatches = $builder
  29. ->orderByDesc('dispatch_date')
  30. ->paginate();
  31. return view('personnel.laborApply.dispatch.index', compact('labor_company_dispatches'));
  32. }
  33. public function createDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  34. {
  35. return view('personnel.laborApply.dispatch.detail.create', compact('laborCompanyDispatch'));
  36. }
  37. public function editDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  38. {
  39. $laborCompanyDispatch->loadMissing('laborCompanyDispatchDetails');
  40. return view('personnel.laborApply.dispatch.detail.edit', compact('laborCompanyDispatch'));
  41. }
  42. public function storeDetail(Request $request, LaborCompanyDispatch $laborCompanyDispatch)
  43. {
  44. $laborCompanyDispatch->laborCompanyDispatchDetails()->delete();
  45. $laborCompanyDispatch->laborCompanyDispatchDetails()->createMany(
  46. $request->input('users')
  47. );
  48. /** @var Carbon $dispatch_date */
  49. $dispatch_date = $laborCompanyDispatch->dispatch_date;
  50. LaborApply::query()
  51. ->whereDate('created_at', $dispatch_date->subDay()->toDateString())
  52. ->where('warehouse_id', $laborCompanyDispatch->laborCompany->warehouse_id)
  53. ->update([
  54. 'status' => 3, //劳务接单
  55. ]);
  56. return redirect(route('laborApplyDispatch.index'))->with('success', '添加临时工详情成功!');
  57. }
  58. }