Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
InvoiceItemQueryBuilder
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 1
 search
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3namespace Domain\Invoice\QueryBuilders;
4
5use Domain\Invoice\DTOs\SearchInvoiceItemDTO;
6use Illuminate\Database\Eloquent\Builder;
7
8class InvoiceItemQueryBuilder extends Builder
9{
10
11    /**
12     * @param SearchInvoiceDTO $invoiceDTO
13     * @return $this
14     */
15    public function search(SearchInvoiceItemDTO $invoiceItemDTO): static
16    {
17        if (count($invoiceItemDTO->unit_measurement) > 0) {
18            $this->whereIn('unit_measurement_id', $invoiceItemDTO->unit_measurement);
19        }
20
21        if ($invoiceItemDTO->id) {
22            $this->where('id', $invoiceItemDTO->id);
23        }
24
25        if ($invoiceItemDTO->created_at) {
26            $this->whereBetween('created_at', [
27                $invoiceItemDTO->created_at[0]->startOfDay(),
28                $invoiceItemDTO->created_at[1]->endOfDay(),
29            ]);
30        }
31
32        if ($invoiceItemDTO->updated_at) {
33            $this->whereBetween('updated_at', [
34                $invoiceItemDTO->updated_at[0]->startOfDay(),
35                $invoiceItemDTO->updated_at[1]->endOfDay(),
36            ]);
37        }
38
39        return $this;
40    }
41}