Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
63.16% covered (warning)
63.16%
12 / 19
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
PickedItemDTO
63.16% covered (warning)
63.16%
12 / 19
66.67% covered (warning)
66.67%
2 / 3
3.45
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 toArray
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
1
 fromRequest
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\PickingOrder\DTOs;
4
5use App\Models\Item\Item;
6use App\Models\PickingOrder\PickingOrder;
7use App\Models\PickingOrder\PickingOrderProduct;
8use App\Models\StockIO\StockIOProduct;
9use Domain\Shared\Interfaces\DataTransferObjectInterface;
10use Illuminate\Foundation\Http\FormRequest;
11
12readonly final class PickedItemDTO implements DataTransferObjectInterface
13{
14    public StockIOProduct $stockIOProduct;
15    public Item $item;
16    public float $amount;
17    public ?string $observation;
18    public ?PickingOrderProduct $pickingOrderProduct;
19
20    public function __construct(array $args)
21    {
22        $this->stockIOProduct = $args['stock_io_product'];
23        $this->item = $args['item'];
24        $this->amount = $args['amount'];
25        $this->observation = $args['observation'] ?? null;
26        $this->pickingOrderProduct = $args['pickingOrderProduct'] ?? null;
27    }
28
29    public function toArray(): array
30    {
31        return [
32            'stock_io_product' => $this->stockIOProduct->getKey(),
33            'item_id' => $this->item->getKey(),
34            'amount' => $this->amount,
35            'observation' => $this->observation,
36            'pickingOrderProduct' => $this->pickingOrderProduct?->getKey(),
37        ];
38    }
39
40    public static function fromRequest(FormRequest $request): PickedItemDTO
41    {
42        return new self([
43            'stock_io_product' => PickingOrder::find($request->validated('stock_io_product_id')),
44            'amount' => $request->validated('amount'),
45            'item' => Item::find($request->validated('item_id')),
46            'observation' => $request->validated('observation'),
47            'pickingOrderProduct' => PickingOrderProduct::find($request->validated('pickingOrderProduct')),
48        ]);
49    }
50}