<?php

declare(strict_types=1);

namespace App\Service\Contracts;

use App\Enum\ContractNature;
use DateTimeImmutable;

final readonly class EmployeeContractChangeRequest
{
    /**
     * @param null|array<int, int> $workDaysHours iso-day → minutes
     */
    public function __construct(
        public ?ContractNature $contractNature,
        public ?DateTimeImmutable $contractStartDate,
        public ?DateTimeImmutable $contractEndDate,
        public ?bool $contractPaidLeaveSettled,
        public ?string $contractComment,
        public ?bool $isDriver = null,
        public ?array $workDaysHours = null,
        public ?int $interimAgencyId = null,
    ) {}

    public function hasPeriodChangeRequest(): bool
    {
        return null !== $this->contractNature
            || null !== $this->contractStartDate
            || null !== $this->contractEndDate
            || null !== $this->contractPaidLeaveSettled
            || null !== $this->contractComment;
    }

    public function isCloseOnlyRequest(bool $contractChanged): bool
    {
        return !$contractChanged
            && null === $this->contractStartDate
            && null === $this->contractNature
            && null !== $this->contractEndDate;
    }
}
