package response

type MissionAttributes struct {
	Flight      *MissionFlightRef  `json:"flight,omitempty"`
	Type        string             `json:"type" example:"HEMS"`
	MissionCode string             `json:"mission_code" example:"HEMS-26-1"`
	Subtypes    *MissionSubtypeRef `json:"subtypes,omitempty"`
	Note        string             `json:"note,omitempty" example:"Mission note"`
	StartTime   string             `json:"start_time,omitempty" example:"04:49"`
	EndTime     string             `json:"end_time,omitempty" example:"22:05"`
	Status      string             `json:"status" example:"completed"`
	Forms       *MissionForms      `json:"forms,omitempty"`
	Files       []MissionFileItem  `json:"files,omitempty"`
	CreatedAt   string             `json:"created_at,omitempty" example:"2026-04-20T08:00:00Z"`
	CreatedBy   string             `json:"created_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
	UpdatedAt   string             `json:"updated_at,omitempty" example:"2026-04-20T08:00:00Z"`
	UpdatedBy   string             `json:"updated_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
}

type MissionForms struct {
	FlightData []FlightDataResource `json:"flight_data,omitempty"`
}

type MissionFileItem struct {
	ID           string `json:"id" example:"019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e"`
	AttachmentID string `json:"attachment_id,omitempty" example:"019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e"`
	FileName     string `json:"file_name,omitempty" example:"mission-brief.pdf"`
	DownloadURL  string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/brief.pdf?X-Amz-Signature=..."`
	ThumbnailURL string `json:"thumbnail_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/thumbnails/2026/04/05/brief.png?X-Amz-Signature=..."`
}

type MissionFlightRef struct {
	ID   string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
	Code string `json:"code,omitempty" example:"M-062226-001"`
	Date string `json:"date,omitempty" example:"2026-04-20"`
}

type MissionSubtypeRef struct {
	ID          string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
	Subtype     string `json:"subtype,omitempty" example:"PRIM"`
	SubtypeName string `json:"subtype_name,omitempty" example:"Nicht transportfaehig"`
}

type MissionResource struct {
	Type       string            `json:"type" example:"mission"`
	ID         string            `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
	Attributes MissionAttributes `json:"attributes"`
}

type MissionResponse struct {
	Data MissionResource `json:"data"`
}

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

type MissionDataTableResponse struct {
	Data []MissionResource `json:"data"`
	Meta struct {
		Draw            int   `json:"draw" example:"1"`
		RecordsTotal    int64 `json:"records_total" example:"120"`
		RecordsFiltered int64 `json:"records_filtered" example:"42"`
	} `json:"meta"`
}

type MissionTypeSubtypeItem struct {
	ID       string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
	Code     string `json:"code" example:"PRIM"`
	Name     string `json:"name" example:"Primary"`
	TaskName string `json:"task_name" example:"Nicht transportfaehig"`
}

type MissionTypeAttributes struct {
	Code     string                   `json:"code" example:"HEMS"`
	Name     string                   `json:"name" example:"HEMS"`
	Subtypes []MissionTypeSubtypeItem `json:"subtypes,omitempty"`
}

type MissionTypeResource struct {
	Type       string                `json:"type" example:"mission_type"`
	ID         string                `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a77"`
	Attributes MissionTypeAttributes `json:"attributes"`
}

type MissionTypeListResponse struct {
	Data []MissionTypeResource `json:"data"`
}
