package response

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

type AirRescuerChecklistItemResource struct {
	ID        string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Name      string `json:"name,omitempty" example:"Oxygen supply check"`
	Position  int    `json:"position,omitempty" example:"1"`
	CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
	UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}

type AirRescuerChecklistAttributes struct {
	Bases       shareddto.AirRescuerChecklistBaseInfo `json:"bases"`
	ScopeCode   string                                `json:"scope_code,omitempty" example:"TU"`
	ScopeCodeDe string                                `json:"scope_code_de,omitempty" example:"DI"`
	Title       string                                `json:"title,omitempty" example:"Monday Checklist"`
	Position    int                                   `json:"position,omitempty" example:"1"`
	Items       []AirRescuerChecklistItemResource     `json:"items"`
	CreatedBy   string                                `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	CreatedAt   string                                `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
	UpdatedAt   string                                `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}

type AirRescuerChecklistResource struct {
	Type       string                        `json:"type" example:"air_rescuer_checklist"`
	ID         string                        `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Attributes AirRescuerChecklistAttributes `json:"attributes"`
}

type AirRescuerChecklistResponse struct {
	Data AirRescuerChecklistResource `json:"data"`
}

type AirRescuerChecklistBulkResponse struct {
	Data []AirRescuerChecklistResource `json:"data"`
}

type AirRescuerChecklistItemAttributes struct {
	ChecklistID string `json:"checklist_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Name        string `json:"name,omitempty" example:"Check radio"`
	Position    int    `json:"position,omitempty" example:"1"`
	CreatedBy   string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	CreatedAt   string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
	UpdatedAt   string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}

type AirRescuerChecklistItemData struct {
	Type       string                            `json:"type" example:"air_rescuer_checklist_item"`
	ID         string                            `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Attributes AirRescuerChecklistItemAttributes `json:"attributes"`
}

type AirRescuerChecklistItemResponse struct {
	Data AirRescuerChecklistItemData `json:"data"`
}

type AirRescuerChecklistItemBulkResponse struct {
	Data []AirRescuerChecklistItemData `json:"data"`
}

type AirRescuerChecklistCATChecklistSummary struct {
	ID        string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Title     string `json:"title,omitempty" example:"Cockpit Flugretter"`
	Position  int    `json:"position,omitempty" example:"1"`
	CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
	UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}

type AirRescuerChecklistCATGroup struct {
	ScopeCode       string                                   `json:"scope_code,omitempty" example:"DA"`
	ScopeCodeDe     string                                   `json:"scope_code_de,omitempty" example:"TA"`
	ScopeCodeName   string                                   `json:"scope_code_name,omitempty" example:"Daily"`
	ScopeCodeNameDe string                                   `json:"scope_code_name_de,omitempty" example:"Taeglich"`
	Checklists      []AirRescuerChecklistCATChecklistSummary `json:"checklists"`
}

type AirRescuerChecklistTabChecklistDetail struct {
	ID             string                            `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Title          string                            `json:"title,omitempty" example:"Monday Checklist"`
	Position       int                               `json:"position,omitempty" example:"1"`
	ChecklistItems []AirRescuerChecklistItemResource `json:"checklist_items"`
	CreatedBy      string                            `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	CreatedAt      string                            `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
	UpdatedAt      string                            `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}

type AirRescuerChecklistTabResource struct {
	ScopeCode       string                                   `json:"scope_code,omitempty" example:"DA"`
	ScopeCodeDe     string                                   `json:"scope_code_de,omitempty" example:"TA"`
	ScopeCodeName   string                                   `json:"scope_code_name,omitempty" example:"Daily"`
	ScopeCodeNameDe string                                   `json:"scope_code_name_de,omitempty" example:"Taeglich"`
	Groups          []AirRescuerChecklistCATGroup            `json:"groups,omitempty"`
	Checklists      *[]AirRescuerChecklistTabChecklistDetail `json:"checklists,omitempty"`
}

type AirRescuerChecklistBaseGroupAttributes struct {
	Bases shareddto.AirRescuerChecklistBaseInfo `json:"bases"`
	Tabs  []AirRescuerChecklistTabResource      `json:"tabs"`
}

type AirRescuerChecklistBaseGroupResource struct {
	Type       string                                 `json:"type" example:"air_rescuer_checklist_group"`
	ID         string                                 `json:"id,omitempty" example:"base-018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Attributes AirRescuerChecklistBaseGroupAttributes `json:"attributes"`
}

type AirRescuerChecklistGroupedListResponse struct {
	Data []AirRescuerChecklistBaseGroupResource `json:"data"`
	Meta struct {
		TotalBases int `json:"total_bases" example:"8"`
	} `json:"meta"`
}

type AirRescuerChecklistGroupedDataTableResponse struct {
	Data []AirRescuerChecklistBaseGroupResource `json:"data"`
	Meta struct {
		Draw            int `json:"draw" example:"1"`
		RecordsTotal    int `json:"records_total" example:"8"`
		RecordsFiltered int `json:"records_filtered" example:"8"`
	} `json:"meta"`
}
