LaborCompanyDispatchFilters.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Filters;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Carbon;
  5. class LaborCompanyDispatchFilters
  6. {
  7. protected $request;
  8. protected $queryBuilder;
  9. protected $filters = [
  10. 'dispatch_date_start',
  11. 'dispatch_date_end',
  12. ];
  13. protected $orderIssueQuery;
  14. public function __construct(Request $request)
  15. {
  16. $this->request = $request;
  17. }
  18. public function apply($builder)
  19. {
  20. $this->queryBuilder = $builder;
  21. $filters = array_filter($this->request->only($this->filters), function ($item) {
  22. return $item !== null;
  23. });
  24. foreach ($filters as $filter => $value) {
  25. if (method_exists($this, $filter)) {
  26. $this->$filter($value, $this->queryBuilder);
  27. }
  28. }
  29. return $this->queryBuilder;
  30. }
  31. public function dispatch_date_start($dispatch_date_start)
  32. {
  33. $this->queryBuilder->whereDate('dispatch_date', '>=', $dispatch_date_start);
  34. }
  35. public function dispatch_date_end($dispatch_date_end)
  36. {
  37. $this->queryBuilder->whereDate('dispatch_date', '<=', $dispatch_date_end);
  38. }
  39. }