Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
OfferFactory | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
create | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace Alfa\Interview\Context\Factory; |
6 | |
7 | use Alfa\Interview\Context\Entity\Offer; |
8 | use Alfa\Interview\Context\Enum\{AdditionalType, InsuranceType}; |
9 | use Alfa\Interview\Context\ValueObject\{Additional, Id, Insurance}; |
10 | |
11 | class OfferFactory |
12 | { |
13 | public function create(string $insuranceType, string ...$additionals): Offer |
14 | { |
15 | $insurance = new Insurance(InsuranceType::fromName($insuranceType)); |
16 | |
17 | $offer = new Offer(Id::generate(), $insurance); |
18 | |
19 | foreach (array_unique($additionals) as $additional) { |
20 | $type = AdditionalType::fromName($additional); |
21 | $offer->addAdditional($type); |
22 | } |
23 | |
24 | return $offer; |
25 | } |
26 | } |