Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
73.68% covered (warning)
73.68%
14 / 19
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
RequestQueryBuilder
73.68% covered (warning)
73.68%
14 / 19
0.00% covered (danger)
0.00%
0 / 1
6.66
0.00% covered (danger)
0.00%
0 / 1
 search
73.68% covered (warning)
73.68%
14 / 19
0.00% covered (danger)
0.00%
0 / 1
6.66
1<?php
2
3namespace Domain\Request\QueryBuilders;
4
5use Domain\Request\DTOs\RequestSearchDTO;
6use Illuminate\Database\Eloquent\Builder;
7
8class RequestQueryBuilder extends Builder
9{
10
11    /**
12     * @param RequestSearchDTO $requestSearchDTO
13     * @return $this
14     */
15    public function search(RequestSearchDTO $requestSearchDTO): static
16    {
17        if ($requestSearchDTO->status) {
18            $this->whereIn('status', $requestSearchDTO->status);
19        }
20
21        if ($requestSearchDTO->requesters) {
22            $this->whereIn('requester_id', $requestSearchDTO->requesters);
23        }
24
25        if ($requestSearchDTO->request_number) {
26            $this->whereHas('stockIo.integration', function (Builder $builder) use ($requestSearchDTO) {
27                $builder->where('parameters->request_number', $requestSearchDTO->request_number);
28            });
29        }
30
31        if ($requestSearchDTO->created_at) {
32            $this->whereBetween('requests.created_at', [
33                $requestSearchDTO->created_at[0]->startOfDay(),
34                $requestSearchDTO->created_at[1]->endOfDay(),
35            ]);
36        }
37
38        if ($requestSearchDTO->updated_at) {
39            $this->whereBetween('requests.updated_at', [
40                $requestSearchDTO->updated_at[0]->startOfDay(),
41                $requestSearchDTO->updated_at[1]->endOfDay(),
42            ]);
43        }
44
45        return $this;
46    }
47}