<?php

declare(strict_types=1);

namespace App\Administration\Infrastructure\Api\Resource;

use Symfony\Component\Validator\Constraints as Assert;

final class CalendarEntryItem
{
    public ?string $id = null;

    #[Assert\NotBlank(message: "Le type d'entrée est requis.")]
    #[Assert\Choice(choices: ['holiday', 'vacation', 'pedagogical', 'bridge', 'closure'], message: 'Type invalide.')]
    public ?string $type = null;

    #[Assert\NotBlank(message: 'La date de début est requise.')]
    #[Assert\Date(message: 'La date de début doit être au format YYYY-MM-DD.')]
    public ?string $startDate = null;

    #[Assert\NotBlank(message: 'La date de fin est requise.')]
    #[Assert\Date(message: 'La date de fin doit être au format YYYY-MM-DD.')]
    public ?string $endDate = null;

    #[Assert\NotBlank(message: 'Le libellé est requis.')]
    #[Assert\Length(min: 2, max: 100, minMessage: 'Le libellé doit faire au moins 2 caractères.', maxMessage: 'Le libellé ne peut dépasser 100 caractères.')]
    public ?string $label = null;

    public ?string $description = null;
}
