<?php

namespace App\Providers\ExcelProviderServiceReport;

class ProviderServicePassengerDto
{

    public function __construct(
        public int $Id_GroupPassenger,
        public int $GroupPassenger_Type,
        public int $Id,
        public int $Id_Group,
        public int $Id_BookingTourPassenger,
        public int $BookingTourPassenger_Lock,
        public int $BookingTourPassenger_Reportable,
        public string $BookingTourPassenger_Hotel,
        public string $BookingTourPassenger_Remark,
        public int $BookingTourPassenger_Status,
        public int $BookingTourPassenger_NotificationCount,
        public int $BookingTourPassenger_NotificationStatus,
        public int $Id_Passenger,
        public string $Passenger_Name,
        public string $Passenger_LastName,
        public string $Passenger_Email,
        public string $Passenger_Phone,
        public int $Passenger_Gender,
        public string $Passenger_DOB,
        public int $Passenger_Age,
        public string $Passenger_NoDocument,
        public string $Passenger_Restriction,
        public string $Passenger_Extras,
        public string $Passenger_Token,
        public string $Booking_Code,
        public int $Id_UserCountry,
        public string $UserCountry_Name,
        public string $UserCountry_Code,
        public int $UserCountry_Status,
        public int $Id_TypeDocument,
        public string $TypeDocument_Name,
        public string $TypeDocument_Abrv,
        public int $TypeDocument_Status,
        public string $Tour_Name,
        public string $Tour_Code,
        public int $Group_Type,
        public string $Group_DateStart,
        public string $Group_Name,
        public int $Group_MasterType,
        public int $Group_ServiceType,
    ) {
    }

    public static function fromDTO($data): self
    {
        return new self(
            $data->Id_GroupPassenger,
            $data->GroupPassenger_Type,
            $data->Id,
            $data->Id_Group,
            $data->Id_BookingTourPassenger,
            $data->BookingTourPassenger_Lock,
            $data->BookingTourPassenger_Reportable,
            $data->BookingTourPassenger_Hotel,
            $data->BookingTourPassenger_Remark,
            $data->BookingTourPassenger_Status,
            $data->BookingTourPassenger_NotificationCount,
            $data->BookingTourPassenger_NotificationStatus,
            $data->Id_Passenger,
            $data->Passenger_Name,
            $data->Passenger_LastName,
            $data->Passenger_Email,
            $data->Passenger_Phone,
            $data->Passenger_Gender,
            $data->Passenger_DOB,
            $data->Passenger_Age,
            $data->Passenger_NoDocument,
            $data->Passenger_Restriction,
            $data->Passenger_Extras,
            $data->Passenger_Token,
            $data->Booking_Code,
            $data->Id_UserCountry,
            $data->UserCountry_Name,
            $data->UserCountry_Code,
            $data->UserCountry_Status,
            $data->Id_TypeDocument,
            $data->TypeDocument_Name,
            $data->TypeDocument_Abrv,
            $data->TypeDocument_Status,
            $data->Tour_Name,
            $data->Tour_Code,
            $data->Group_Type,
            $data->Group_DateStart,
            $data->Group_Name,
            $data->Group_MasterType,
            $data->Group_ServiceType,
        );
    }
}
