Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
69.23% covered (warning)
69.23%
9 / 13
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
AddressOrderDTO
69.23% covered (warning)
69.23%
9 / 13
66.67% covered (warning)
66.67%
2 / 3
4.47
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 toArray
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Domain\Address\DTOs;
4
5use App\Models\Address\Address;
6use Domain\Shared\Interfaces\DataTransferObjectInterface;
7use Illuminate\Database\Eloquent\Collection;
8use Illuminate\Foundation\Http\FormRequest;
9
10readonly final class AddressOrderDTO implements DataTransferObjectInterface
11{
12    public int $order;
13    public Collection $addresses;
14
15    public function __construct(array $args)
16    {
17        $this->order = $args['order'];
18        $this->addresses = $args['addresses'];
19    }
20
21    public function toArray(): array
22    {
23        return [
24            'order' => $this->order,
25            'addresses' => $this->addresses->map(fn(Address $address) => $address->getKey())
26        ];
27    }
28
29    public static function fromRequest(FormRequest $request): AddressOrderDTO
30    {
31        $addresses = new Collection();
32        foreach ($request->validated('addresses') as $address) {
33            $addresses->push(Address::find($address));
34        }
35
36        return new self([
37            'order' => $request->validated('order'),
38            'addresses' => $addresses,
39        ]);
40    }
41}