Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
TransferTaskPickProductDTO
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
3 / 3
3
100.00% covered (success)
100.00%
1 / 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%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 fromRequest
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\TransferTask\DTOs;
4
5use App\Models\Product\Product;
6use App\Models\TransferTask\TransferTaskProduct;
7use Domain\Shared\Interfaces\DataTransferObjectInterface;
8use Illuminate\Foundation\Http\FormRequest;
9
10/**
11 * @property Product $product
12 */
13readonly class TransferTaskPickProductDTO implements DataTransferObjectInterface
14{
15    public TransferTaskProduct $transferTaskProduct;
16    public string $productionOrder;
17    public float $amount;
18    public ?string $observation;
19
20    public function __construct(array $args)
21    {
22        $this->transferTaskProduct = $args['transfer_task_product'];
23        $this->amount = $args['amount'];
24        $this->productionOrder = $args['production_order'];
25        $this->observation = $args['observation'] ?? null;
26    }
27
28    public function toArray(): array
29    {
30        return [
31            'transfer_task_product_id' => $this->transferTaskProduct->getKey(),
32            'amount' => $this->amount,
33            'production_order' => $this->productionOrder,
34            'observation' => $this->observation,
35        ];
36    }
37
38    public static function fromRequest(FormRequest $request): TransferTaskPickProductDTO
39    {
40        return new self([
41            'transfer_task_product' => TransferTaskProduct::find($request->validated('transfer_task_product_id')),
42            'amount' => $request->validated('amount'),
43            'observation' => $request->validated('observation'),
44            'production_order' => $request->validated('production_order'),
45        ]);
46    }
47}