Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
42.86% covered (danger)
42.86%
9 / 21
50.00% covered (danger)
50.00%
2 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
LinkPurchaseOrderItemInvoiceItemDTO
42.86% covered (danger)
42.86%
9 / 21
50.00% covered (danger)
50.00%
2 / 4
6.99
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 toArray
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 fromRequest
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 fromArray
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\PurchaseOrder\DTOs;
4
5use App\Models\Invoice\InvoiceItem;
6use App\Models\PurchaseOrder\PurchaseOrderItem;
7use Domain\Shared\Interfaces\DataTransferObjectInterface;
8use Illuminate\Foundation\Http\FormRequest;
9
10readonly final class LinkPurchaseOrderItemInvoiceItemDTO implements DataTransferObjectInterface
11{
12    public PurchaseOrderItem $purchase_order_item;
13    public InvoiceItem $invoice_item;
14    public ?float $amount;
15    public bool $force_create;
16
17    public function __construct(array $args)
18    {
19        $this->purchase_order_item = $args['purchase_order_item'];
20        $this->invoice_item = $args['invoice_item'];
21        $this->amount = $args['amount'] ?? null;
22        $this->force_create = (bool) ($args['force_create'] ?? false);
23    }
24
25    public function toArray(): array
26    {
27        return [
28            'purchase_order_item' => $this->purchase_order_item,
29            'invoice_item' => $this->invoice_item,
30            'amount' => $this->amount,
31        ];
32    }
33
34    public static function fromRequest(FormRequest $request): LinkPurchaseOrderItemInvoiceItemDTO
35    {
36        return new self([
37            'purchase_order_item' => PurchaseOrderItem::find($request->validated('purchase_order_item')),
38            'invoice_item' => InvoiceItem::find($request->validated('invoice_item')),
39            'amount' => $request->validated('amount'),
40            'force_create' => (bool) $request->input('force_create', false),
41        ]);
42    }
43
44    public static function fromArray(array $request): LinkPurchaseOrderItemInvoiceItemDTO
45    {
46        return new self([
47            'purchase_order_item' => PurchaseOrderItem::find($request['purchase_order_item']),
48            'invoice_item' => InvoiceItem::find($request['invoice_item']),
49            'amount' => $request['amount'],
50            'force_create' => (bool) ($request['force_create'] ?? false),
51        ]);
52    }
53}