package request

type MissionFileInput struct {
	UploadIntentUUID string `json:"upload_intent_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Name             string `json:"name" example:"mission-brief.pdf"`
}

type MissionCreateAttributes struct {
	FlightID  string             `json:"flight_id" validate:"required" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
	Type      string             `json:"type" validate:"required" example:"HEMS"`
	SubtypeID string             `json:"subtype_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
	Note      string             `json:"note,omitempty" example:"Mission note"`
	Files     []MissionFileInput `json:"files,omitempty"`
}

type MissionCreateData struct {
	Type       string                  `json:"type" validate:"required,oneof=mission_create mission" example:"mission_create"`
	Attributes MissionCreateAttributes `json:"attributes" validate:"required"`
}

type MissionCreateRequest struct {
	Data MissionCreateData `json:"data" validate:"required"`
}

type MissionUpdateAttributes struct {
	Type      string             `json:"type" validate:"required" example:"SPO"`
	SubtypeID string             `json:"subtype_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
	Note      string             `json:"note,omitempty" example:"Mission note"`
	Files     []MissionFileInput `json:"files,omitempty"`
}

type MissionUpdateData struct {
	Type       string                  `json:"type" validate:"required,oneof=mission_update mission" example:"mission_update"`
	Attributes MissionUpdateAttributes `json:"attributes" validate:"required"`
}

type MissionUpdateRequest struct {
	Data MissionUpdateData `json:"data" validate:"required"`
}

type MissionTypeCreateAttributes struct {
	CodeType string `json:"code_type" validate:"required" example:"HEMS"`
	TypeName string `json:"name" validate:"required" example:"HEMS"`
}

type MissionTypeCreateData struct {
	Type       string                      `json:"type" validate:"required,oneof=mission_type_create mission_type" example:"mission_type_create"`
	Attributes MissionTypeCreateAttributes `json:"attributes" validate:"required"`
}

type MissionTypeCreateRequest struct {
	Data MissionTypeCreateData `json:"data" validate:"required"`
}
