Files
fm_be/internal/transport/http/dto/response/takeover_response.go
2026-07-16 22:16:45 +07:00

113 lines
6.3 KiB
Go

package response
import (
shareddto "wucher/internal/transport/http/dto/shared"
)
type TakeoverResponseAttributes struct {
ID string `json:"id,omitempty"`
FlightID string `json:"flight_id,omitempty"`
ReserveAcID string `json:"reserve_ac_id,omitempty"`
FlightInspectionID string `json:"flight_inspection_id,omitempty"`
ShiftStart string `json:"shift_start,omitempty"`
ShiftEnd string `json:"shift_end,omitempty"`
BaseID string `json:"base_id,omitempty"`
Base *DutyRosterBaseInfo `json:"base,omitempty"`
DutyDate string `json:"duty_date,omitempty"`
HelicopterID string `json:"helicopter_id,omitempty"`
Helicopter *TakeoverHelicopter `json:"helicopter,omitempty"`
Notes *string `json:"notes,omitempty"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
UpdatedBy string `json:"updated_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"`
RosterDetail TakeoverDutyRosterDetailsResponse `json:"roster_detail"`
Inspection shareddto.ReserveAcInspectionSummary `json:"inspection"`
Files []TakeoverFileResource `json:"files,omitempty"`
}
// TakeoverHelicopter is the selected helicopter shown on a takeover, enriched
// with its last daily inspection and its maintenance schedule (the "next due"
// per inspection type) from the helicopter's latest fleet status.
type TakeoverHelicopter struct {
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Designation string `json:"designation" example:"OE-XHZ"`
Identifier string `json:"identifier" example:"1234"`
Type string `json:"type" example:"EC-135"`
LastDailyInspection *shareddto.HelicopterLastDailyInspection `json:"last_daily_inspection"`
MaintenanceSchedules []shareddto.MaintenanceScheduleAttributes `json:"maintenance_schedules"`
}
type TakeoverDutyRosterAttributes struct {
Bases DutyRosterBaseInfo `json:"bases"`
FlightID string `json:"flight_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Helicopter DutyRosterHelicopterSummary `json:"helicopter"`
DutyDate string `json:"duty_date,omitempty" example:"2026-03-16"`
Detail TakeoverDutyRosterDetailsResponse `json:"roster_detail"`
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 TakeoverDutyRosterResource struct {
Type string `json:"type" example:"duty_roster"`
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes TakeoverDutyRosterAttributes `json:"attributes"`
}
type TakeoverDutyRosterCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"doctor"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"doctor@example.com"`
}
type TakeoverDutyRosterPilotCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"pilot"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"pilot@example.com"`
CrewType string `json:"crew_type,omitempty" example:"main"`
FlightInstructor *bool `json:"flight_instructor,omitempty"`
LineChecker *bool `json:"line_checker,omitempty"`
Supervisor *bool `json:"supervisor,omitempty"`
Examiner *bool `json:"examiner,omitempty"`
CoPilot *bool `json:"co_pilot,omitempty"`
}
type TakeoverDutyRosterDetailsResponse struct {
Pilot []TakeoverDutyRosterPilotCrew `json:"pilot"`
Doctor []TakeoverDutyRosterCrew `json:"doctor"`
Rescuer []TakeoverDutyRosterCrew `json:"rescuer"`
Helper []TakeoverDutyRosterCrew `json:"helper"`
OtherPerson []TakeoverDutyRosterCrew `json:"other_person"`
}
type TakeoverResource struct {
Type string `json:"type" example:"takeover"`
Attributes TakeoverResponseAttributes `json:"attributes"`
}
type TakeoverFileAttributes struct {
FileAttachmentID string `json:"file_attachment_id" example:"019d7000-aaaa-7bbb-8ccc-222222222222"`
FileName string `json:"file_name,omitempty" example:"takeover-report.pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/takeover-report.pdf?X-Amz-Signature=..."`
}
type TakeoverFileResource struct {
Type string `json:"type" example:"takeover_file"`
ID string `json:"id,omitempty" example:"019d7000-aaaa-7bbb-8ccc-111111111111"`
Attributes TakeoverFileAttributes `json:"attributes"`
}
type TakeoverResponse struct {
Data TakeoverResource `json:"data"`
}
type TakeoverListResponse struct {
Data []TakeoverResource `json:"data"`
Meta map[string]any `json:"meta,omitempty"`
}