<?php

namespace App\Modules\BookingEquipmentPassenger\Domain;

use App\Modules\Admin\Domain\IdAdmin;
use App\Modules\BookingEquipment\Domain\IdBookingEquipment;
use App\Modules\BookingExtra\Domain\IdBookingExtra;
use App\Modules\BookingTourPassenger\Domain\IdBookingTourPassenger;
use App\Modules\Shared\Domain\Aggregate\AggregateAttribute;
use App\Modules\Shared\Domain\Aggregate\AggregateRoot;

class BookingEquipmentPassenger extends AggregateRoot
{

    /** @return AgregateAttribute[] */
    protected static function attributes(): array
    {
        return [
            new AggregateAttribute('id', IdBookingEquipmentPassenger::class, 'Id_BookingEquipmentPassenger'),
            new AggregateAttribute('status', BookingEquipmentPassengerStatus::class, 'BookingEquipmentPassenger_Status'),
            new AggregateAttribute('idBookingEquipment', IdBookingEquipment::class, 'Id_BookingEquipment'),
            new AggregateAttribute('idBookingTourPassenger', IdBookingTourPassenger::class, 'Id_BookingTourPassenger'),
        ];
    }

    public static function table(): string
    {
        return 't_booking_equipment_passenger';
    }

    public function __construct(
        private IdBookingEquipmentPassenger $id,
        private BookingEquipmentPassengerStatus $status,
        private IdBookingEquipment $idBookingEquipment,
        private IdBookingTourPassenger $idBookingTourPassenger,
    ) {}

    public function id(): IdBookingEquipmentPassenger
    {
        return $this->id;
    }

    public function status(): BookingEquipmentPassengerStatus
    {
        return $this->status;
    }

    public function idBookingEquipment(): IdBookingEquipment
    {
        return $this->idBookingEquipment;
    }

    public function idBookingTourPassenger(): IdBookingTourPassenger
    {
        return $this->idBookingTourPassenger;
    }
}
