feat: parser and loader for insurance data
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\BusProNet\Model;
|
||||
|
||||
use Symfony\Component\Serializer\Attribute\Context;
|
||||
use Symfony\Component\Serializer\Attribute\Groups;
|
||||
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
|
||||
|
||||
/**
|
||||
* Represents an insurance product or package with pricing, eligibility, and booking constraints.
|
||||
*
|
||||
* This class handles both individual insurance products and insurance packages,
|
||||
* including pricing tiers, age restrictions, travel date validity, booking windows, and coverage details.
|
||||
*/
|
||||
class Insurance
|
||||
{
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public string|int|null $id = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?string $code = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?string $label = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?float $price = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public bool $familyInsurance = false;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public bool $package = false;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
|
||||
public ?\DateTimeImmutable $travelDateFrom = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
|
||||
public ?\DateTimeImmutable $travelDateTo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
|
||||
public ?\DateTimeImmutable $bookingDateFrom = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
|
||||
public ?\DateTimeImmutable $bookingDateTo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?int $ageFrom = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?int $ageTo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?float $travelPriceFrom = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?float $travelPriceTo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?int $travelDurationFrom = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?int $travelDurationTo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?string $urlInfo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?string $urlProductInfo = null;
|
||||
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public ?string $urlTerms = null;
|
||||
|
||||
/**
|
||||
* @var array<Insurance> Insurance products contained in this package (only for packages)
|
||||
*/
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public array $containedInsurances = [];
|
||||
|
||||
/**
|
||||
* @var array<string|int> IDs of insurance products contained in this package (only for packages)
|
||||
*/
|
||||
#[Groups(['api:single', 'api:list'])]
|
||||
public array $containedInsuranceIds = [];
|
||||
}
|
||||
Reference in New Issue
Block a user