89 lines
4.6 KiB
Go
89 lines
4.6 KiB
Go
package response
|
|
|
|
import shareddto "wucher/internal/transport/http/dto/shared"
|
|
|
|
// JSON:API Helicopter response DTOs
|
|
|
|
type HelicopterAttributes struct {
|
|
Designation string `json:"designation" example:"OE-XHZ"`
|
|
Identifier string `json:"identifier" example:"ABC-0001"`
|
|
Type string `json:"type" example:"EC-135"`
|
|
SortKey *int `json:"sortkey" example:"10"`
|
|
Engine1 string `json:"engine_1,omitempty" example:"TM"`
|
|
Engine2 string `json:"engine_2,omitempty" example:"TM"`
|
|
Consumption float64 `json:"consumption_lt_min" example:"4.1"`
|
|
NR1 bool `json:"nr1" example:"true"`
|
|
NR2 bool `json:"nr2" example:"true"`
|
|
LH bool `json:"lh" example:"true"`
|
|
RH bool `json:"rh" example:"true"`
|
|
MGB bool `json:"mgb" example:"true"`
|
|
IGB bool `json:"igb" example:"false"`
|
|
TGB bool `json:"tgb" example:"true"`
|
|
UTCOffset int `json:"utc_offset" example:"-1"`
|
|
Foto *shareddto.HelicopterFoto `json:"foto,omitempty"`
|
|
Dry bool `json:"dry" example:"false"`
|
|
AOG bool `json:"aog" example:"false"`
|
|
IsInUse bool `json:"is_in_use" example:"false"`
|
|
// Status is the operational status of the helicopter (read-time derived).
|
|
// Values: "available", "booked", "aog", "mcf". Precedence: mcf > aog > booked > available.
|
|
// "booked" = active flight assignment; "aog" = air_on_ground flag OR an open complaint
|
|
// grounding it (non-MEL, or MEL past its grace deadline); "mcf" = a pending maintenance
|
|
// check flight (MCF created, not yet passed).
|
|
Status string `json:"status" example:"available" enums:"available,booked,aog,mcf"`
|
|
AOGReason string `json:"aog_reason,omitempty" example:"Main rotor gearbox fault"`
|
|
Note string `json:"note,omitempty" example:"Primary HEMS helicopter"`
|
|
IsActive bool `json:"is_active" example:"true"`
|
|
CreatedBy *shareddto.HelicopterAuditUser `json:"created_by,omitempty"`
|
|
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
|
|
UpdatedBy *shareddto.HelicopterAuditUser `json:"updated_by,omitempty"`
|
|
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
|
|
LastDailyInspection *shareddto.HelicopterLastDailyInspection `json:"last_daily_inspection"`
|
|
// MaintenanceSchedules mirrors the helicopter's latest fleet status. It
|
|
// always lists every inspection type; entries without data are empty.
|
|
MaintenanceSchedules []shareddto.MaintenanceScheduleAttributes `json:"maintenance_schedules"`
|
|
}
|
|
|
|
type HelicopterResource struct {
|
|
Type string `json:"type" example:"helicopter"`
|
|
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
|
Attributes HelicopterAttributes `json:"attributes"`
|
|
}
|
|
|
|
type HelicopterResponse struct {
|
|
Data HelicopterResource `json:"data"`
|
|
}
|
|
|
|
type HelicopterListResponse struct {
|
|
Data []HelicopterResource `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 HelicopterDataTableResponse struct {
|
|
Data []HelicopterResource `json:"data"`
|
|
Meta struct {
|
|
Draw int `json:"draw" example:"1"`
|
|
RecordsTotal int64 `json:"records_total" example:"120"`
|
|
RecordsFiltered int64 `json:"records_filtered" example:"12"`
|
|
} `json:"meta"`
|
|
}
|
|
|
|
type HelicopterNextReportNumberAttributes struct {
|
|
Identifier string `json:"identifier" example:"ABC"`
|
|
Sequence int `json:"sequence" example:"1"`
|
|
ReportNumber string `json:"report_number" example:"ABC-0001"`
|
|
}
|
|
|
|
type HelicopterNextReportNumberResource struct {
|
|
Type string `json:"type" example:"helicopter_report_number"`
|
|
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
|
Attributes HelicopterNextReportNumberAttributes `json:"attributes"`
|
|
}
|
|
|
|
type HelicopterNextReportNumberResponse struct {
|
|
Data HelicopterNextReportNumberResource `json:"data"`
|
|
}
|