package response

import shareddto "wucher/internal/transport/http/dto/shared"

type ReserveAcResource struct {
	Type       string                        `json:"type" example:"reserve_ac"`
	ID         string                        `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
	Attributes shareddto.ReserveAcAttributes `json:"attributes"`
}

type ReserveAcResponse struct {
	Data ReserveAcResource `json:"data"`
}

type ReserveAcListResponse struct {
	Data []ReserveAcResource `json:"data"`
	Meta struct {
		PageNumber int   `json:"page_number" example:"1"`
		PageSize   int   `json:"page_size" example:"20"`
		Total      int64 `json:"total" example:"1"`
	} `json:"meta"`
}

type ReserveAcHelicopterGroupResource struct {
	Type       string                             `json:"type"`
	Attributes ReserveAcHelicopterGroupAttributes `json:"attributes"`
}

type ReserveAcHelicopterGroupAttributes struct {
	Helicopter          ReserveAcHelicopterIdentity     `json:"helicopter"`
	LastDailyInspection ReserveAcLastDailyInspectionDTO `json:"last_daily_inspection"`
	BFI                 ReserveAcBFISection             `json:"bfi"`
	FPWB                ReserveAcFPWBSection            `json:"fpwb"`
}

type ReserveAcHelicopterIdentity struct {
	ID             string                      `json:"id"`
	Designation    string                      `json:"designation"`
	Identifier     string                      `json:"identifier"`
	Type           string                      `json:"type"`
	Status         string                      `json:"status"`
	BookingDetails *ReserveAcBookingDetailsDTO `json:"booking_details,omitempty"`
}

type ReserveAcLastDailyInspectionDTO struct {
	ID           any                          `json:"id"`
	InspectionBy ReserveAcInspectionBySummary `json:"inspection_by"`
	InspectionAt any                          `json:"inspection_at"`
}

type ReserveAcInspectionBySummary struct {
	ID        any    `json:"id"`
	Name      string `json:"name"`
	ShortName string `json:"short_name"`
}

type ReserveAcBookingDetailsDTO struct {
	ReserveAcID any            `json:"reserve_ac_id,omitempty"`
	FlightID    any            `json:"flight_id,omitempty"`
	MissionCode any            `json:"mission_code,omitempty"`
	DutyDate    any            `json:"duty_date,omitempty"`
	BookedAt    any            `json:"booked_at,omitempty"`
	BookedBy    map[string]any `json:"booked_by,omitempty"`
}

type ReserveAcHelicopterFileItem struct {
	ID         string `json:"id"`
	FileName   string `json:"file_name"`
	URL        string `json:"url"`
	UploadedAt string `json:"uploaded_at"`
	UploadedBy string `json:"uploaded_by"`
}

type ReserveAcHelicopterFileSection struct {
	Files []ReserveAcHelicopterFileItem `json:"files"`
}

type ReserveAcBFISection struct {
	FuelAddedAmount           *float64                      `json:"fuel_added_amount,omitempty"`
	FuelAmount                *float64                      `json:"fuel_amount,omitempty"`
	FuelUnit                  string                        `json:"fuel_unit,omitempty"`
	HydraulicLHChecked        *bool                         `json:"hydraulic_lh_checked,omitempty"`
	HydraulicRHChecked        *bool                         `json:"hydraulic_rh_checked,omitempty"`
	Note                      *string                       `json:"note,omitempty"`
	OilEngineNR1Checked       *bool                         `json:"oil_engine_nr1_checked,omitempty"`
	OilEngineNR2Checked       *bool                         `json:"oil_engine_nr2_checked,omitempty"`
	OilTransmissionIGBChecked *bool                         `json:"oil_transmission_igb_checked,omitempty"`
	OilTransmissionMGBChecked *bool                         `json:"oil_transmission_mgb_checked,omitempty"`
	OilTransmissionTGBChecked *bool                         `json:"oil_transmission_tgb_checked,omitempty"`
	Files                     []ReserveAcHelicopterFileItem `json:"files"`
}

type ReserveAcFPWBSection struct {
	NotamBriefing         *bool                         `json:"notam_briefing,omitempty"`
	WeatherBriefing       *bool                         `json:"weather_briefing,omitempty"`
	OperationalFlightPlan *bool                         `json:"operational_flight_plan,omitempty"`
	Files                 []ReserveAcHelicopterFileItem `json:"files"`
}
