init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View File

@@ -0,0 +1,423 @@
package dto
import "time"
type ContactBaseAttributes struct {
Email string `json:"email,omitempty" validate:"omitempty,email"`
SSOEmail string `json:"sso_email,omitempty" validate:"omitempty,email"`
IsAdmin *bool `json:"is_admin,omitempty"`
Username string `json:"username,omitempty" validate:"omitempty,max=100"`
FirstName string `json:"first_name,omitempty" validate:"omitempty,max=100"`
LastName string `json:"last_name,omitempty" validate:"omitempty,max=100"`
MobilePhone string `json:"mobile_phone,omitempty" validate:"omitempty,max=32"`
Timezone string `json:"timezone,omitempty" validate:"omitempty,max=64"`
FileUUID string `json:"file_uuid,omitempty" validate:"omitempty,max=64"`
SortKey *int `json:"sortkey"`
IsActive *bool `json:"is_active,omitempty"`
}
type PilotProfileAttributes struct {
PilotCategory string `json:"pilot_category,omitempty" validate:"omitempty,oneof=regular freelance dry_lease"`
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
LicenseNo string `json:"license_no,omitempty" validate:"omitempty,max=120"`
LicenseIssuedAt *time.Time `json:"license_issued_at,omitempty"`
LicenseExpiredAt *time.Time `json:"license_expired_at,omitempty"`
TechnicianLicenseNo string `json:"technician_license_no,omitempty" validate:"omitempty,max=120"`
HasIFRQualification *bool `json:"has_ifr_qualification,omitempty"`
IsChiefPilot *bool `json:"is_chief_pilot,omitempty"`
DULBaseIDs []string `json:"dul_base_ids,omitempty" validate:"omitempty,dive,uuid" swaggerignore:"true"`
DULBase []DULBase `json:"dul_base,omitempty"`
TotalFlightMinutes *int `json:"total_flight_minutes,omitempty"`
ResponsiblePilotMinutes *int `json:"responsible_pilot_minutes,omitempty"`
SecondPilotMinutes *int `json:"second_pilot_minutes,omitempty"`
DoubleCommandMinutes *int `json:"double_command_minutes,omitempty"`
FlightInstructorMinutes *int `json:"flight_instructor_minutes,omitempty"`
NightFlightMinutes *int `json:"night_flight_minutes,omitempty"`
IFRFlightMinutes *int `json:"ifr_flight_minutes,omitempty"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
WeightKG *float64 `json:"weight_kg,omitempty"`
}
type DULBase struct {
ID string `json:"id" example:"0197f3b2-c4d8-4b12-a1f9-c1de23456789"`
Name string `json:"name" example:"Halim Base"`
Category string `json:"category" example:"hems"`
}
type DoctorProfileAttributes struct {
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
Specialization string `json:"specialization,omitempty" validate:"omitempty,max=120"`
SubSpecialization string `json:"sub_specialization,omitempty" validate:"omitempty,max=120"`
IsChiefPhysician *bool `json:"is_chief_physician,omitempty"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
}
type AirRescuerProfileAttributes struct {
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
ResponsibleFlightRescuer *bool `json:"responsible_flight_rescuer,omitempty"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
}
type TechnicianProfileAttributes struct {
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
LicenseNo string `json:"license_no,omitempty" validate:"omitempty,max=120"`
IsChiefTechnician *bool `json:"is_chief_technician,omitempty"`
IsResponsibleComplaints *bool `json:"is_responsible_complaints,omitempty"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
}
type FlightAssistantProfileAttributes struct {
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
}
type StaffProfileAttributes struct {
ShortName string `json:"short_name,omitempty" validate:"omitempty,max=120"`
RoleLabel string `json:"role_label,omitempty" validate:"omitempty,max=120"`
Location string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note string `json:"note,omitempty"`
}
type ContactCreateAttributes struct {
RoleID string `json:"role_id,omitempty" example:"0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1"`
RoleIDs []string `json:"role_ids,omitempty" example:"0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1,0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d2"`
ContactBaseAttributes
AirRescuer *AirRescuerProfileAttributes `json:"air_rescuer,omitempty"`
Doctor *DoctorProfileAttributes `json:"doctor,omitempty"`
FlightAssistant *FlightAssistantProfileAttributes `json:"flight_assistant,omitempty"`
Pilot *PilotProfileAttributes `json:"pilot,omitempty"`
Staff *StaffProfileAttributes `json:"staff,omitempty"`
Technician *TechnicianProfileAttributes `json:"technician,omitempty"`
}
type ContactCreateData struct {
Type string `json:"type" validate:"required" example:"contact_create"`
Attributes ContactCreateAttributes `json:"attributes" validate:"required"`
}
type ContactCreateRequest struct {
Data ContactCreateData `json:"data" validate:"required"`
}
type PilotProfileUpdateAttributes struct {
PilotCategory *string `json:"pilot_category,omitempty" validate:"omitempty,oneof=regular freelance dry_lease"`
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
LicenseNo *string `json:"license_no,omitempty" validate:"omitempty,max=120"`
LicenseIssuedAt *time.Time `json:"license_issued_at,omitempty"`
LicenseExpiredAt *time.Time `json:"license_expired_at,omitempty"`
TechnicianLicenseNo *string `json:"technician_license_no,omitempty" validate:"omitempty,max=120"`
HasIFRQualification *bool `json:"has_ifr_qualification,omitempty"`
IsChiefPilot *bool `json:"is_chief_pilot,omitempty"`
DULBaseIDs []string `json:"dul_base_ids,omitempty" validate:"omitempty,dive,uuid" swaggerignore:"true"`
DULBase []DULBase `json:"dul_base,omitempty"`
TotalFlightMinutes *int `json:"total_flight_minutes,omitempty"`
ResponsiblePilotMinutes *int `json:"responsible_pilot_minutes,omitempty"`
SecondPilotMinutes *int `json:"second_pilot_minutes,omitempty"`
DoubleCommandMinutes *int `json:"double_command_minutes,omitempty"`
FlightInstructorMinutes *int `json:"flight_instructor_minutes,omitempty"`
NightFlightMinutes *int `json:"night_flight_minutes,omitempty"`
IFRFlightMinutes *int `json:"ifr_flight_minutes,omitempty"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
WeightKG *float64 `json:"weight_kg,omitempty"`
}
type DoctorProfileUpdateAttributes struct {
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
Specialization *string `json:"specialization,omitempty" validate:"omitempty,max=120"`
SubSpecialization *string `json:"sub_specialization,omitempty" validate:"omitempty,max=120"`
IsChiefPhysician *bool `json:"is_chief_physician,omitempty"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
}
type AirRescuerProfileUpdateAttributes struct {
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
ResponsibleFlightRescuer *bool `json:"responsible_flight_rescuer,omitempty"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
}
type TechnicianProfileUpdateAttributes struct {
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
LicenseNo *string `json:"license_no,omitempty" validate:"omitempty,max=120"`
IsChiefTechnician *bool `json:"is_chief_technician,omitempty"`
IsResponsibleComplaints *bool `json:"is_responsible_complaints,omitempty"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
}
type FlightAssistantProfileUpdateAttributes struct {
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
}
type StaffProfileUpdateAttributes struct {
ShortName *string `json:"short_name,omitempty" validate:"omitempty,max=120"`
RoleLabel *string `json:"role_label,omitempty" validate:"omitempty,max=120"`
Location *string `json:"location,omitempty" validate:"omitempty,max=255"`
Postcode *string `json:"postcode,omitempty" validate:"omitempty,max=32"`
StreetLine *string `json:"street_line,omitempty" validate:"omitempty,max=255"`
Note *string `json:"note,omitempty"`
}
type ContactUpdateAttributes struct {
RoleID *string `json:"role_id,omitempty" example:"0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1"`
RoleIDs []string `json:"role_ids,omitempty" example:"0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1,0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d2"`
Email *string `json:"email,omitempty" validate:"omitempty,email"`
SSOEmail *string `json:"sso_email,omitempty" validate:"omitempty,email"`
IsAdmin *bool `json:"is_admin,omitempty"`
Username *string `json:"username,omitempty" validate:"omitempty,max=100"`
FirstName *string `json:"first_name,omitempty" validate:"omitempty,max=100"`
LastName *string `json:"last_name,omitempty" validate:"omitempty,max=100"`
MobilePhone *string `json:"mobile_phone,omitempty" validate:"omitempty,max=32"`
Timezone *string `json:"timezone,omitempty" validate:"omitempty,max=64"`
FileUUID *string `json:"file_uuid,omitempty" validate:"omitempty,max=64"`
SortKey NullInt `json:"sortkey,omitempty" swaggertype:"integer"`
IsActive *bool `json:"is_active,omitempty"`
AirRescuer *AirRescuerProfileUpdateAttributes `json:"air_rescuer,omitempty"`
Doctor *DoctorProfileUpdateAttributes `json:"doctor,omitempty"`
FlightAssistant *FlightAssistantProfileUpdateAttributes `json:"flight_assistant,omitempty"`
Pilot *PilotProfileUpdateAttributes `json:"pilot,omitempty"`
Staff *StaffProfileUpdateAttributes `json:"staff,omitempty"`
Technician *TechnicianProfileUpdateAttributes `json:"technician,omitempty"`
}
type ContactUpdateData struct {
Type string `json:"type" validate:"required" example:"contact_update"`
Attributes ContactUpdateAttributes `json:"attributes" validate:"required"`
}
type ContactUpdateRequest struct {
Data ContactUpdateData `json:"data" validate:"required"`
}
type ContactListQuery struct {
Role string `query:"role" validate:"omitempty,oneof=pilot doctor air_rescuer technician flight_assistant staff"`
PilotCategory string `query:"pilot_category" validate:"omitempty,oneof=regular freelance dry_lease"`
Search string `query:"search"`
Sort string `query:"sort"`
Limit int `query:"limit" validate:"omitempty,min=1,max=200"`
Offset int `query:"offset" validate:"omitempty,min=0"`
}
type ContactListItem struct {
ID string `json:"id"`
CreatedBy string `json:"created_by,omitempty"`
UpdatedBy string `json:"updated_by,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
RoleCode string `json:"role_code"`
RoleName string `json:"role_name"`
PilotCategory string `json:"pilot_category,omitempty"`
Username string `json:"username,omitempty"`
Email string `json:"email"`
IsAdmin bool `json:"is_admin"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
ShortName string `json:"short_name,omitempty"`
LicenseNo string `json:"license_no,omitempty"`
Location string `json:"location,omitempty"`
MobilePhone string `json:"mobile_phone,omitempty"`
SortKey *int `json:"sortkey"`
Note string `json:"note,omitempty"`
IsActive bool `json:"is_active"`
SetPassword bool `json:"set_password"`
}
type ContactBaseRole struct {
BaseID string `json:"base_id"`
BaseName string `json:"base_name"`
RoleCode string `json:"role_code"`
}
type ContactRole struct {
ID string `json:"id"`
RoleCode string `json:"role_code"`
RoleName string `json:"role_name"`
}
type ContactListAttributes struct {
Email string `json:"email,omitempty"`
Username string `json:"username,omitempty"`
FirstName string `json:"first_name,omitempty"`
LastName string `json:"last_name,omitempty"`
MobilePhone string `json:"mobile_phone,omitempty"`
IsAdmin bool `json:"is_admin"`
IsActive bool `json:"is_active"`
SetPassword bool `json:"set_password"`
SortKey *int `json:"sortkey"`
SSOEmail *string `json:"sso_email"`
CreatedAt string `json:"created_at,omitempty"`
CreatedBy string `json:"created_by,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
UpdatedBy string `json:"updated_by,omitempty"`
BaseRoles []ContactBaseRole `json:"base_roles"`
RoleCode string `json:"role_code,omitempty"`
RoleName string `json:"role_name,omitempty"`
Roles []ContactRole `json:"roles"`
PilotCategory string `json:"pilot_category,omitempty"`
ShortName string `json:"short_name,omitempty"`
LicenseNo string `json:"license_no,omitempty"`
Location string `json:"location,omitempty"`
Note string `json:"note,omitempty"`
Pilot *PilotProfileAttributes `json:"pilot,omitempty"`
Doctor *DoctorProfileAttributes `json:"doctor,omitempty"`
AirRescuer *AirRescuerProfileAttributes `json:"air_rescuer,omitempty"`
Technician *TechnicianProfileAttributes `json:"technician,omitempty"`
FlightAssistant *FlightAssistantProfileAttributes `json:"flight_assistant,omitempty"`
Staff *StaffProfileAttributes `json:"staff,omitempty"`
}
type ContactListResponse struct {
Data []struct {
Type string `json:"type" example:"contact"`
ID string `json:"id" example:"019dcce4-f15e-7685-8e4c-76f8ad20594b"`
Attributes ContactListAttributes `json:"attributes"`
} `json:"data"`
Meta struct {
Total int64 `json:"total"`
Limit int `json:"limit"`
Offset int `json:"offset"`
} `json:"meta"`
}
type ContactDataTableResponse struct {
Data []ContactListItem `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 SensitiveActionRequiredResponse struct {
Data struct {
Type string `json:"type" example:"pin_verification_required"`
Attributes struct {
Required bool `json:"required" example:"true"`
Action string `json:"action"`
Method string `json:"method" example:"pin"`
Status int `json:"status" example:"202"`
} `json:"attributes"`
} `json:"data"`
}
type ContactStatusUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_status_update"`
Attributes struct {
IsActive bool `json:"is_active"`
} `json:"attributes" validate:"required"`
}
type ContactStatusUpdateRequest struct {
Data ContactStatusUpdateData `json:"data" validate:"required"`
}
type ContactRoleUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_role_update"`
Attributes struct {
RoleCode string `json:"role_code" validate:"required,oneof=pilot doctor air_rescuer technician flight_assistant staff"`
} `json:"attributes" validate:"required"`
}
type ContactRoleUpdateRequest struct {
Data ContactRoleUpdateData `json:"data" validate:"required"`
}
type ContactPilotCategoryUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_pilot_category_update"`
Attributes struct {
PilotCategory string `json:"pilot_category" validate:"required,oneof=regular freelance dry_lease"`
} `json:"attributes" validate:"required"`
}
type ContactPilotCategoryUpdateRequest struct {
Data ContactPilotCategoryUpdateData `json:"data" validate:"required"`
}
type ContactLicenseUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_license_update"`
Attributes struct {
LicenseNo *string `json:"license_no,omitempty"`
} `json:"attributes" validate:"required"`
}
type ContactLicenseUpdateRequest struct {
Data ContactLicenseUpdateData `json:"data" validate:"required"`
}
type ContactChiefFlagsUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_chief_flags_update"`
Attributes struct {
IsChiefPilot *bool `json:"is_chief_pilot,omitempty"`
IsChiefPhysician *bool `json:"is_chief_physician,omitempty"`
IsChiefTechnician *bool `json:"is_chief_technician,omitempty"`
} `json:"attributes" validate:"required"`
}
type ContactChiefFlagsUpdateRequest struct {
Data ContactChiefFlagsUpdateData `json:"data" validate:"required"`
}
type ContactResponsibleComplaintsData struct {
Type string `json:"type" validate:"required,eq=contact_responsible_complaints_update"`
Attributes struct {
IsResponsibleComplaints bool `json:"is_responsible_complaints"`
} `json:"attributes" validate:"required"`
}
type ContactResponsibleComplaintsRequest struct {
Data ContactResponsibleComplaintsData `json:"data" validate:"required"`
}
type ContactBulkUpdateData struct {
Type string `json:"type" validate:"required,eq=contact_bulk_update" example:"contact_bulk_update"`
Attributes struct {
UserIDs []string `json:"user_ids" validate:"required,min=1,dive,required" example:"0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1"`
IsActive bool `json:"is_active" example:"true"`
} `json:"attributes" validate:"required"`
}
type ContactBulkUpdateRequest struct {
Data ContactBulkUpdateData `json:"data" validate:"required"`
}
type ContactSimpleSuccessResponse struct {
Data struct {
Type string `json:"type"`
Attributes struct {
Updated bool `json:"updated,omitempty"`
Deleted bool `json:"deleted,omitempty"`
Count int64 `json:"count,omitempty"`
} `json:"attributes"`
} `json:"data"`
}