package request

type HelicopterFileCreateAttributes struct {
	Section          string  `json:"section" validate:"required,oneof=bfi fpwb afi" enums:"bfi,fpwb,afi" example:"bfi"`
	Position         *int    `json:"position,omitempty" example:"1"`
	IsMandatory     *bool   `json:"is_mandatory,omitempty" example:"true"`
	HelicopterID     string  `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
	UploadIntentUUID string  `json:"upload_intent_uuid" validate:"required" example:"019d6d0d-2de2-7db1-80a2-2862d43af620"`
	FileName         string  `json:"file_name" validate:"required" example:"Before Flight Checklist.pdf"`
	FolderUUID       *string `json:"folder_uuid,omitempty" example:"019d6d0d-8c24-72e3-9f58-c9ea0fbf0bb1"`
}

type HelicopterFileUploadAttributes struct {
	Name        string `json:"name" validate:"required" example:"Before Flight Checklist.pdf"`
	ContentType string `json:"content_type" validate:"required" example:"application/pdf"`
	SizeBytes   int64  `json:"size_bytes" validate:"required,gte=0" example:"1024"`
}

type HelicopterFileUploadData struct {
	Type       string                         `json:"type" validate:"required,oneof=helicopter_file_upload" example:"helicopter_file_upload"`
	Attributes HelicopterFileUploadAttributes `json:"attributes" validate:"required"`
}

type HelicopterFileUploadRequest struct {
	Data HelicopterFileUploadData `json:"data" validate:"required"`
}

type HelicopterFileUploadBulkRequest struct {
	Data []HelicopterFileUploadData `json:"data" validate:"required,min=1"`
}

type HelicopterFileCancelUploadAttributes struct {
	UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"019d6d0d-2de2-7db1-80a2-2862d43af620"`
}

type HelicopterFileCancelUploadData struct {
	Type       string                               `json:"type" validate:"required,oneof=helicopter_file_cancel_upload" example:"helicopter_file_cancel_upload"`
	Attributes HelicopterFileCancelUploadAttributes `json:"attributes" validate:"required"`
}

type HelicopterFileCancelUploadBulkRequest struct {
	Data []HelicopterFileCancelUploadData `json:"data" validate:"required,min=1"`
}

type HelicopterFileCreateData struct {
	Type       string                         `json:"type" validate:"required,oneof=helicopter_file_create helicopter_file" example:"helicopter_file_create"`
	Attributes HelicopterFileCreateAttributes `json:"attributes" validate:"required"`
}

type HelicopterFileCreateRequest struct {
	Data HelicopterFileCreateData `json:"data" validate:"required"`
}

type HelicopterFileCreateBulkRequest struct {
	Data []HelicopterFileCreateData `json:"data" validate:"required,min=1"`
}

type HelicopterFileUpdateAttributes struct {
	Section      *string `json:"section,omitempty" validate:"omitempty,oneof=bfi fpwb afi" enums:"bfi,fpwb,afi" example:"fpwb"`
	Position     *int    `json:"position,omitempty" example:"1"`
	IsMandatory *bool   `json:"is_mandatory,omitempty" example:"true"`
	HelicopterID *string `json:"helicopter_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
	FileName     *string `json:"file_name,omitempty" example:"Before Flight Checklist v2.pdf"`
}

type HelicopterFileUpdateData struct {
	Type       string                         `json:"type" validate:"required,oneof=helicopter_file_update helicopter_file" example:"helicopter_file_update"`
	ID         string                         `json:"id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
	Attributes HelicopterFileUpdateAttributes `json:"attributes" validate:"required"`
}

type HelicopterFileUpdateRequest struct {
	Data HelicopterFileUpdateData `json:"data" validate:"required"`
}

type HelicopterFileUpdateBulkRequest struct {
	Data []HelicopterFileUpdateData `json:"data" validate:"required,min=1"`
}

type HelicopterFileDeleteData struct {
	Type string `json:"type" validate:"required,oneof=helicopter_file_delete helicopter_file" example:"helicopter_file_delete"`
	ID   string `json:"id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
}

type HelicopterFileDeleteRequest struct {
	Data HelicopterFileDeleteData `json:"data" validate:"required"`
}
