@updraft-solutions/mcrit-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/chunk-AKLFMP7G.cjs +2525 -0
  2. package/dist/chunk-YCIXOVEC.js +2525 -0
  3. package/dist/index.cjs +193 -3
  4. package/dist/index.d.cts +3 -3
  5. package/dist/index.d.ts +3 -3
  6. package/dist/index.js +196 -6
  7. package/dist/schemas/index.cjs +192 -2
  8. package/dist/schemas/index.d.cts +3123 -94
  9. package/dist/schemas/index.d.ts +3123 -94
  10. package/dist/schemas/index.js +195 -5
  11. package/dist/{models-Bc5BKYuI.d.cts → training-Der1DPU-.d.cts} +17563 -1056
  12. package/dist/{models-Bc5BKYuI.d.ts → training-Der1DPU-.d.ts} +17563 -1056
  13. package/dist/types/index.cjs +1 -1
  14. package/dist/types/index.d.cts +275 -6
  15. package/dist/types/index.d.ts +275 -6
  16. package/dist/types/index.js +1 -1
  17. package/package.json +1 -1
  18. package/src/index.ts +39 -0
  19. package/src/schemas/common.ts +33 -0
  20. package/src/schemas/course-milestone.ts +78 -0
  21. package/src/schemas/equipment.ts +27 -0
  22. package/src/schemas/form-template.ts +413 -0
  23. package/src/schemas/index.ts +7 -1
  24. package/src/schemas/location-map.ts +175 -0
  25. package/src/schemas/models.ts +38 -20
  26. package/src/schemas/newsletter.ts +362 -0
  27. package/src/schemas/todo.ts +46 -0
  28. package/src/schemas/training.ts +500 -0
  29. package/src/types/ai.ts +85 -0
  30. package/src/types/aircraft-block.ts +23 -0
  31. package/src/types/api.ts +3 -1
  32. package/src/types/background-task.ts +28 -0
  33. package/src/types/compliance.ts +27 -3
  34. package/src/types/index.ts +5 -0
  35. package/src/types/landing-fee.ts +92 -0
  36. package/src/types/models.ts +43 -3
  37. package/src/types/roles.ts +26 -0
  38. package/dist/chunk-RC2BBT6H.cjs +0 -1384
  39. package/dist/chunk-WQLDSZNN.js +0 -1384
  40. package/src/schemas/fee.ts +0 -37
  41. /package/dist/{chunk-LXNCAKJZ.js → chunk-2WJHTRIE.js} +0 -0
  42. /package/dist/{chunk-MOOGM3DW.cjs → chunk-DCEOET63.cjs} +0 -0
@@ -1,1384 +0,0 @@
1
- // src/schemas/common.ts
2
- import { z } from "zod";
3
- var zNullableBool = z.boolean().nullable().optional();
4
- var zNetGross = z.enum(["net", "gross"]).optional();
5
- var zContactDTO = z.object({
6
- name: z.string().optional(),
7
- email: z.string().email().optional(),
8
- phone: z.string().optional()
9
- });
10
- var zPhpMoneyObject = z.object({
11
- amount: z.number(),
12
- currency: z.string(),
13
- formatted: z.string()
14
- });
15
- var contactAttributeSchema = z.object({
16
- name: z.string().optional(),
17
- email: z.string().optional(),
18
- phone: z.string().optional(),
19
- company: z.string().optional(),
20
- fax: z.string().optional()
21
- });
22
- var BaseModel = z.object({
23
- type: z.string(),
24
- id: z.number(),
25
- created_at: z.string(),
26
- updated_at: z.string()
27
- });
28
- var mediaSchema = z.object({
29
- type: z.literal("media"),
30
- id: z.number(),
31
- description: z.string().optional(),
32
- collection_name: z.string().optional(),
33
- conversions: z.record(z.string().url()).optional(),
34
- created_at: z.string().optional(),
35
- updated_at: z.string().optional(),
36
- url: z.string().optional(),
37
- mime_type: z.string().optional(),
38
- file_name: z.string().optional(),
39
- size: z.number().optional()
40
- });
41
- var mediaCollection = z.object({
42
- avatar: mediaSchema.nullable().optional(),
43
- header: mediaSchema.nullable().optional(),
44
- images: z.array(mediaSchema).nullable().optional(),
45
- documents: z.array(mediaSchema).nullable().optional()
46
- }).nullable().optional();
47
- var userSchema = z.object({
48
- type: z.literal("user"),
49
- id: z.number(),
50
- name: z.string(),
51
- email: z.string().optional(),
52
- mobile: z.string().optional()
53
- });
54
- var companySchema = z.object({
55
- type: z.literal("company"),
56
- id: z.number(),
57
- name: z.string(),
58
- media: mediaCollection,
59
- can: z.record(z.string(), z.boolean().nullable()).optional(),
60
- permissions: z.array(z.string()).optional(),
61
- // Company display timezone (companies.timezone, default Europe/Berlin
62
- // server-side); booking/event surfaces render in this zone. Optional:
63
- // slim company payloads may omit it.
64
- timezone: z.string().optional(),
65
- ai_landing_fee_invoices_enabled: z.boolean().optional()
66
- });
67
-
68
- // src/schemas/models.ts
69
- import { z as z2 } from "zod";
70
- var baseMembershipSchema = z2.object({
71
- type: z2.literal("membership"),
72
- id: z2.number(),
73
- user_id: z2.number(),
74
- user: userSchema.optional(),
75
- company_id: z2.number(),
76
- company: companySchema.nullable().optional(),
77
- name: z2.string(),
78
- phone: z2.string().nullable().optional(),
79
- status: z2.string(),
80
- instructor: z2.boolean(),
81
- admin: z2.boolean(),
82
- accountant: z2.boolean(),
83
- student: z2.boolean(),
84
- content_creator: z2.boolean(),
85
- charter_client: z2.boolean(),
86
- roles: z2.array(
87
- z2.object({
88
- id: z2.number(),
89
- name: z2.string()
90
- }).passthrough()
91
- ).optional(),
92
- created_at: z2.string(),
93
- updated_at: z2.string(),
94
- can: z2.object({
95
- update: zNullableBool,
96
- deactivate: zNullableBool,
97
- activate: zNullableBool,
98
- delete: zNullableBool
99
- }).optional()
100
- });
101
- var membershipSchema = baseMembershipSchema.extend({
102
- remarks: z2.string().nullable().optional(),
103
- confirmed_at: z2.string().nullable(),
104
- created_at: z2.string(),
105
- updated_at: z2.string()
106
- });
107
- var documentType = z2.object({
108
- label: z2.string(),
109
- description: z2.string(),
110
- documentTypeClass: z2.string(),
111
- requiresFile: z2.boolean().optional(),
112
- fieldDefinitions: z2.object({
113
- base: z2.record(z2.any()).optional(),
114
- data: z2.record(z2.any()).optional()
115
- }).optional(),
116
- validationRules: z2.record(z2.any()).optional()
117
- });
118
- var priceSchema = z2.object({
119
- id: z2.number(),
120
- gross_total: zPhpMoneyObject,
121
- net_total: zPhpMoneyObject,
122
- tax_percentage: z2.number(),
123
- valid_from: z2.string(),
124
- created_at: z2.string(),
125
- updated_at: z2.string(),
126
- input_value: z2.number().optional(),
127
- net_gross: zNetGross
128
- });
129
- var feeSchema = BaseModel.extend({
130
- type: z2.literal("fee"),
131
- id: z2.number(),
132
- price: priceSchema.optional(),
133
- prices: z2.array(priceSchema).optional(),
134
- provider: z2.string().optional(),
135
- company_id: z2.number().optional(),
136
- company: companySchema.optional(),
137
- ident: z2.string().optional(),
138
- category: z2.string().optional(),
139
- subcategory: z2.string().optional(),
140
- title: z2.string().optional(),
141
- relation: z2.array(z2.enum(["booking", "flightLog", "invoice", "instructor"])).optional(),
142
- payment_per: z2.string().optional(),
143
- can: z2.object({
144
- update: zNullableBool,
145
- delete: zNullableBool
146
- }).optional(),
147
- course_count: z2.number().optional(),
148
- count: z2.number().optional(),
149
- variant: z2.string().optional(),
150
- is_optional: z2.boolean().optional(),
151
- input_value: z2.number().optional(),
152
- net_gross: zNetGross,
153
- tax_percentage: z2.string().optional(),
154
- valid_from: z2.string()
155
- });
156
- var courseFeeSchema = feeSchema.extend({
157
- count: z2.number().optional(),
158
- variant: z2.string().optional(),
159
- is_optional: z2.boolean().optional(),
160
- is_initial_payment: z2.boolean().optional()
161
- });
162
- var airplaneSchema = BaseModel.extend({
163
- type: z2.literal("airplane"),
164
- id: z2.number(),
165
- company_id: z2.number(),
166
- registration: z2.string(),
167
- model: z2.string(),
168
- media: mediaCollection.optional(),
169
- fee: feeSchema.optional(),
170
- booking_fee: feeSchema.optional(),
171
- hasFavorited: z2.boolean().optional(),
172
- homebase_id: z2.number().nullable().optional(),
173
- hangar_location_map_feature_id: z2.number().nullable().optional(),
174
- parking_lng: z2.number().nullable().optional(),
175
- parking_lat: z2.number().nullable().optional(),
176
- hangar: z2.object({
177
- id: z2.number(),
178
- name: z2.string().nullable(),
179
- kind: z2.string(),
180
- location_map_id: z2.number()
181
- }).nullable().optional(),
182
- description: z2.string().optional(),
183
- capacity: z2.number().optional(),
184
- manufacturer: z2.string().optional(),
185
- year_of_construction: z2.string().optional(),
186
- span: z2.string().optional(),
187
- height: z2.string().optional(),
188
- length: z2.string().optional(),
189
- ato: z2.boolean().optional(),
190
- restricted_access: z2.boolean().optional(),
191
- global_airplane_id: z2.number().nullable().optional(),
192
- is_master: z2.boolean().optional(),
193
- master_company_id: z2.number().nullable().optional(),
194
- shared_companies: z2.array(z2.object({ id: z2.number(), name: z2.string() })).optional(),
195
- is_simulator: z2.boolean().optional(),
196
- category: z2.string().nullable().optional(),
197
- averageFuelConsumption: z2.string().nullable().optional(),
198
- weightUnitString: z2.string().optional(),
199
- fuelUnitString: z2.string().optional(),
200
- isoCountryCodeFromRegistration: z2.string().optional(),
201
- registrationWithoutSpecialChars: z2.string().nullable().optional(),
202
- equipmentCodes: z2.array(z2.string()).nullable().optional(),
203
- compliance_required: z2.boolean().optional(),
204
- show_on_website: z2.boolean().optional(),
205
- is_public: z2.boolean().optional(),
206
- company_timezone: z2.string().optional(),
207
- defaultFlightType: z2.string().optional(),
208
- defaultFlightRule: z2.string().optional(),
209
- status: z2.string().optional(),
210
- can: z2.object({
211
- view: zNullableBool,
212
- update: zNullableBool,
213
- viewMaintenanceEvents: zNullableBool,
214
- createMaintenanceEvents: zNullableBool,
215
- createBooking: zNullableBool,
216
- createAirplanePermissions: zNullableBool
217
- })
218
- });
219
- var airplaneShareInviteSchema = z2.object({
220
- id: z2.number(),
221
- status: z2.enum(["pending", "accepted", "declined", "withdrawn"]),
222
- responded_at: z2.string().nullable().optional(),
223
- created_at: z2.string().optional(),
224
- global_airplane: z2.object({
225
- id: z2.number(),
226
- registration: z2.string(),
227
- model: z2.string()
228
- }),
229
- master_company: z2.object({ id: z2.number(), name: z2.string() }),
230
- invited_company: z2.object({ id: z2.number(), name: z2.string() })
231
- });
232
- var airplanePermissionSchema = z2.object({
233
- type: z2.literal("airplane_permission"),
234
- id: z2.number(),
235
- airplane_id: z2.number(),
236
- airplane: airplaneSchema.optional(),
237
- membership_id: z2.number(),
238
- membership: baseMembershipSchema.optional(),
239
- notes: z2.string().nullable().optional(),
240
- conditions: z2.string().nullable().optional(),
241
- expires_at: z2.string().nullable().optional(),
242
- is_active: z2.boolean(),
243
- granted_by: userSchema.nullable().optional(),
244
- granted_at: z2.string(),
245
- created_at: z2.string(),
246
- updated_at: z2.string(),
247
- can: z2.object({
248
- view: zNullableBool,
249
- update: zNullableBool,
250
- delete: zNullableBool
251
- }).optional()
252
- });
253
- var landingFeeSchema = z2.object({
254
- id: z2.number(),
255
- airplane_id: z2.number(),
256
- price: priceSchema.optional()
257
- });
258
- var aircraftRatingSchema = z2.object({
259
- id: z2.number(),
260
- manufacturer: z2.string(),
261
- aircraft_model: z2.string(),
262
- licence_endorsement: z2.string(),
263
- is_complex: z2.boolean(),
264
- is_single_pilot: z2.boolean(),
265
- is_high_performance: z2.boolean(),
266
- is_multi_pilot: z2.boolean(),
267
- remarks: z2.string().optional()
268
- });
269
- var userAircraftRatingSchema = z2.object({
270
- id: z2.number(),
271
- user_id: z2.number(),
272
- aircraft_rating_id: z2.number(),
273
- aircraftRating: aircraftRatingSchema,
274
- reminder_enabled: z2.boolean(),
275
- reminder_days: z2.number(),
276
- expires_at: z2.string(),
277
- created_at: z2.string(),
278
- updated_at: z2.string()
279
- });
280
- var userQualificationSchema = z2.object({
281
- id: z2.number(),
282
- user_id: z2.number(),
283
- title: z2.string(),
284
- reminder_enabled: z2.boolean(),
285
- reminder_days: z2.number(),
286
- expires_at: z2.string(),
287
- created_at: z2.string(),
288
- updated_at: z2.string()
289
- });
290
- var airportSchema = z2.object({
291
- // Aligned with what AirportResource actually serializes: `type` and
292
- // `country` are absent on minified payloads (e.g. booking waypoint
293
- // airports); coordinates + municipality/iso_country ride along on the
294
- // full shape.
295
- type: z2.literal("airport").optional(),
296
- id: z2.number(),
297
- ident: z2.string(),
298
- name: z2.string(),
299
- country: z2.string().optional(),
300
- municipality: z2.string().nullable().optional(),
301
- iso_country: z2.string().nullable().optional(),
302
- latitude_deg: z2.number().nullable().optional(),
303
- longitude_deg: z2.number().nullable().optional()
304
- });
305
- var recurringFlightSchema = z2.object({
306
- id: z2.number(),
307
- departure_airport_id: z2.number(),
308
- departure_airport: airportSchema.optional(),
309
- destination_airport_id: z2.number(),
310
- destination_airport: airportSchema.optional(),
311
- dep_time: z2.string(),
312
- arr_time: z2.string()
313
- });
314
- var maintenanceEventSchema = z2.object({
315
- type: z2.literal("maintenanceEvent"),
316
- id: z2.number(),
317
- airplane_id: z2.number(),
318
- company_id: z2.number(),
319
- description: z2.string().nullable(),
320
- remarks: z2.string().nullable(),
321
- scheduled_at: z2.string().nullable(),
322
- completed_at: z2.string().nullable(),
323
- created_at: z2.string(),
324
- updated_at: z2.string(),
325
- elapsed_time: z2.number().nullable(),
326
- remaining_time: z2.number().nullable(),
327
- can: z2.object({
328
- update: zNullableBool
329
- }).optional()
330
- });
331
- var maintenanceEventEstimationSchema = z2.object({
332
- estimated_at: z2.string().nullable().optional(),
333
- actual_at: z2.string().nullable().optional()
334
- });
335
- var maintenanceStatusSchema = z2.object({
336
- intervalSetting: z2.number().optional(),
337
- lastMaintenanceEvent: maintenanceEventSchema.nullable().optional(),
338
- nextMaintenanceEventEstimation: maintenanceEventEstimationSchema.nullable().optional()
339
- });
340
- var extendedAirplaneSchema = airplaneSchema.extend({
341
- manufacturer: z2.string().optional(),
342
- capacity: z2.number().optional(),
343
- description: z2.string().optional(),
344
- homebase_id: z2.number().optional(),
345
- ato: z2.boolean().optional(),
346
- year_of_construction: z2.string().optional(),
347
- span: z2.string().optional(),
348
- height: z2.string().optional(),
349
- length: z2.string().optional(),
350
- empty_weight: z2.string().optional(),
351
- max_takeoff_mass: z2.string().optional(),
352
- max_speed: z2.string().optional(),
353
- max_range: z2.string().optional(),
354
- power: z2.string().optional(),
355
- fuel_type: z2.string().optional(),
356
- oil_min: z2.string().optional(),
357
- oil_max: z2.string().optional(),
358
- oil_type_winter: z2.string().optional(),
359
- oil_type_summer: z2.string().optional(),
360
- minimumCrewCount: z2.number().optional(),
361
- VFR: z2.boolean().optional(),
362
- VFRNight: z2.boolean().optional(),
363
- IFR: z2.boolean().optional(),
364
- IFRKnownIcing: z2.boolean().optional(),
365
- equipment: z2.array(z2.any()).optional(),
366
- contact: contactAttributeSchema.optional(),
367
- hints: z2.object({
368
- booking: z2.object({
369
- ifr: z2.string().optional()
370
- }).optional()
371
- }).optional(),
372
- has_pre_paid_package: z2.boolean().optional(),
373
- fee_id: z2.number().optional(),
374
- booking_fee_id: z2.number().optional(),
375
- logging_required_from: z2.string().optional(),
376
- foreflight_profile_url: z2.string().optional(),
377
- media: z2.object({
378
- avatar: z2.any().optional(),
379
- header: z2.any().optional(),
380
- images: z2.array(z2.any()).optional(),
381
- documents: z2.array(z2.any()).optional()
382
- }).optional(),
383
- master_media: mediaCollection.optional(),
384
- can: z2.object({
385
- update: zNullableBool,
386
- viewMaintenanceEvents: zNullableBool
387
- }).optional()
388
- });
389
- var availSchema = z2.object({
390
- type: z2.literal("avail"),
391
- id: z2.number(),
392
- airplane_id: z2.number(),
393
- title: z2.string(),
394
- etdZ: z2.string(),
395
- etaZ: z2.string(),
396
- can: z2.object({
397
- update: zNullableBool
398
- }).optional()
399
- });
400
- var bookingWaypointSchema = z2.object({
401
- sequence: z2.number(),
402
- airport_id: z2.number(),
403
- airport: z2.object({
404
- id: z2.number(),
405
- ident: z2.string(),
406
- name: z2.string(),
407
- municipality: z2.string().nullable().optional(),
408
- iso_country: z2.string().nullable().optional(),
409
- latitude_deg: z2.number().nullable().optional(),
410
- longitude_deg: z2.number().nullable().optional()
411
- }).nullable().optional()
412
- });
413
- var bookingSchema = BaseModel.extend({
414
- type: z2.literal("booking"),
415
- ifr: z2.boolean().default(false),
416
- airplane_id: z2.number(),
417
- author: userSchema.optional(),
418
- company_id: z2.number(),
419
- company_name: z2.string().nullable().optional(),
420
- company: companySchema.optional(),
421
- airplane: airplaneSchema.optional(),
422
- etdZ: z2.string(),
423
- etaZ: z2.string(),
424
- duration_minutes: z2.number().optional(),
425
- departure_airport_id: z2.number().optional(),
426
- destination_airport_id: z2.number().optional(),
427
- departure_airport: airportSchema.optional(),
428
- destination_airport: airportSchema.optional(),
429
- waypoints: z2.array(bookingWaypointSchema).optional(),
430
- // Flat, always-present home timezone on BookingResource.
431
- company_timezone: z2.string().nullable().optional(),
432
- // Slim per-booking training-record status, present when the backend
433
- // eager-loaded `trainingRecord` (enrollment bookings surfaces).
434
- training_record_status: z2.enum(["draft", "awaiting_signatures", "signed"]).nullable().optional(),
435
- next_booking_id: z2.number().nullable().optional(),
436
- previous_booking_id: z2.number().nullable().optional(),
437
- maintenance: z2.number().optional(),
438
- is_solo: z2.boolean().optional().default(false),
439
- course_enrollment_id: z2.number().nullable().optional(),
440
- // Minimal linked enrollment, present on booking show/store/update payloads.
441
- // Used by the form prefill registry to derive the J2 Flugauftrag course.
442
- course_enrollment: z2.object({
443
- id: z2.number(),
444
- course_id: z2.number().nullable().optional()
445
- }).nullable().optional(),
446
- crew_assignments: z2.array(
447
- z2.object({
448
- id: z2.number().optional(),
449
- membership_id: z2.number(),
450
- role: z2.string(),
451
- is_pic: z2.boolean().optional(),
452
- membership: z2.any().optional()
453
- })
454
- ).optional(),
455
- contact: zContactDTO.optional(),
456
- remarks: z2.string().optional(),
457
- can: z2.object({
458
- update: zNullableBool
459
- }).optional()
460
- });
461
- var alertSchema = z2.object({
462
- id: z2.number(),
463
- start_time: z2.string(),
464
- finish_time: z2.string(),
465
- can: z2.object({
466
- update: zNullableBool
467
- }).optional()
468
- });
469
- var documentSchema = z2.object({
470
- type: z2.literal("document"),
471
- id: z2.number(),
472
- documentable_type: z2.string(),
473
- documentable_id: z2.number(),
474
- document_type_class: z2.string(),
475
- document_type: documentType.optional(),
476
- title: z2.string().nullable().optional(),
477
- description: z2.string().nullable().optional(),
478
- expires_at: z2.string().nullable().optional(),
479
- is_notifiable: z2.boolean().default(true),
480
- notification_days: z2.number().nullable().optional(),
481
- data: z2.record(z2.any()).nullable().optional(),
482
- created_by: z2.number().nullable().optional(),
483
- updated_by: z2.number().nullable().optional(),
484
- created_at: z2.string(),
485
- updated_at: z2.string(),
486
- media: z2.array(mediaSchema).optional(),
487
- can: z2.object({
488
- update: zNullableBool,
489
- delete: zNullableBool,
490
- share: zNullableBool
491
- }).optional()
492
- });
493
- var documentRequirement = z2.object({
494
- id: z2.number(),
495
- form_requirement_group_id: z2.number(),
496
- form_template_id: z2.number(),
497
- form_template: z2.object({
498
- id: z2.number(),
499
- name: z2.string(),
500
- slug: z2.string().nullable().optional()
501
- }).optional(),
502
- logical_group: z2.string().nullable().optional(),
503
- group_operator: z2.enum(["AND", "OR"]).nullable().optional(),
504
- metadata: z2.object({
505
- min_validity_days: z2.number().optional(),
506
- max_validity_days: z2.number().optional(),
507
- required_fields: z2.array(z2.string()).optional()
508
- }).nullable().optional(),
509
- created_by: z2.number().nullable().optional(),
510
- updated_by: z2.number().nullable().optional(),
511
- created_at: z2.string(),
512
- updated_at: z2.string()
513
- });
514
- var documentRequirementGroup = z2.object({
515
- id: z2.number(),
516
- name: z2.string(),
517
- description: z2.string().nullable().optional(),
518
- target_model_type: z2.string(),
519
- company_id: z2.number().nullable().optional(),
520
- is_default_template: z2.boolean().default(false),
521
- is_active: z2.boolean().default(true),
522
- requirements: z2.array(documentRequirement).optional(),
523
- // Backend uses 'requirements'
524
- documentRequirements: z2.array(documentRequirement).optional(),
525
- // Frontend compatibility
526
- group_operator: z2.enum(["AND", "OR"]).default("AND"),
527
- documentRequirements_count: z2.number().optional(),
528
- assignments_count: z2.number().optional(),
529
- created_by: z2.number().nullable().optional(),
530
- updated_by: z2.number().nullable().optional(),
531
- created_at: z2.string(),
532
- updated_at: z2.string(),
533
- can: z2.object({
534
- update: zNullableBool,
535
- delete: zNullableBool,
536
- assign: zNullableBool
537
- }).optional()
538
- });
539
- var documentRequirementGroupAssignment = z2.object({
540
- id: z2.number(),
541
- assignable_type: z2.string(),
542
- assignable_id: z2.number(),
543
- requirement_group_id: z2.number(),
544
- requirement_group: documentRequirementGroup.optional(),
545
- requirementGroup: documentRequirementGroup.optional(),
546
- // Frontend compatibility
547
- created_at: z2.string(),
548
- updated_at: z2.string()
549
- });
550
- var documentComplianceStatus = z2.object({
551
- overall_compliant: z2.boolean(),
552
- missing_documents: z2.array(
553
- z2.object({
554
- requirement_id: z2.number(),
555
- document_type_class: z2.string(),
556
- document_type: documentType.optional(),
557
- reason: z2.string()
558
- })
559
- ).optional(),
560
- expired_documents: z2.array(
561
- z2.object({
562
- document_id: z2.number(),
563
- document_type_class: z2.string(),
564
- document_type: documentType.optional(),
565
- expired_at: z2.string()
566
- })
567
- ).optional(),
568
- expiring_soon_documents: z2.array(
569
- z2.object({
570
- document_id: z2.number(),
571
- document_type_class: z2.string(),
572
- document_type: documentType.optional(),
573
- expires_at: z2.string(),
574
- days_until_expiry: z2.number()
575
- })
576
- ).optional(),
577
- group_compliance_status: z2.array(
578
- z2.object({
579
- group_id: z2.number(),
580
- group_name: z2.string(),
581
- is_compliant: z2.boolean(),
582
- missing_requirements: z2.array(z2.string()).optional()
583
- })
584
- ).optional()
585
- });
586
- var documentShareSchema = z2.object({
587
- id: z2.number(),
588
- document_id: z2.number(),
589
- document: documentSchema.optional(),
590
- shared_by: z2.number(),
591
- sharer: userSchema.optional(),
592
- shared_with_type: z2.string(),
593
- shared_with_id: z2.number(),
594
- can_download: z2.boolean().default(true),
595
- can_delete: z2.boolean().default(false),
596
- expires_at: z2.string().nullable().optional(),
597
- accessed_at: z2.string().nullable().optional(),
598
- access_count: z2.number().default(0),
599
- created_at: z2.string(),
600
- updated_at: z2.string()
601
- });
602
- var allowedDocumentTypeSchema = z2.object({
603
- label: z2.string(),
604
- description: z2.string(),
605
- documentTypeClass: z2.string(),
606
- requiresFile: z2.boolean(),
607
- category: z2.string().optional(),
608
- fieldDefinitions: z2.object({
609
- base: z2.record(
610
- z2.object({
611
- type: z2.string(),
612
- label: z2.string(),
613
- required: z2.boolean().optional(),
614
- rules: z2.array(z2.any()).optional(),
615
- options: z2.array(z2.any()).optional(),
616
- hint: z2.string().optional()
617
- })
618
- ).optional(),
619
- data: z2.record(
620
- z2.object({
621
- type: z2.string(),
622
- label: z2.string(),
623
- required: z2.boolean().optional(),
624
- rules: z2.array(z2.any()).optional(),
625
- options: z2.array(z2.any()).optional(),
626
- hint: z2.string().optional()
627
- })
628
- ).optional()
629
- }).optional()
630
- });
631
- var flightLogSchema = z2.object({
632
- type: z2.literal("flightLog"),
633
- id: z2.number(),
634
- airplane_id: z2.number(),
635
- airplane: airplaneSchema.optional(),
636
- ac_type: z2.string().nullable().optional(),
637
- ac_reg: z2.string().nullable().optional(),
638
- ac_call: z2.string().nullable().optional(),
639
- booking_id: z2.number().nullable().optional(),
640
- membership_id: z2.number().nullable().optional(),
641
- membership: baseMembershipSchema.optional(),
642
- author_id: z2.number(),
643
- author: userSchema.optional(),
644
- invoice_id: z2.number().nullable().optional(),
645
- special_flight_id: z2.number().nullable().optional(),
646
- etdZ: z2.string(),
647
- etaZ: z2.string(),
648
- duration_minutes: z2.number(),
649
- crew_assignments: z2.array(
650
- z2.object({
651
- id: z2.number().optional(),
652
- membership_id: z2.number(),
653
- role: z2.string(),
654
- is_pic: z2.boolean().optional(),
655
- membership: z2.any().optional()
656
- })
657
- ).optional(),
658
- total_landings: z2.number().nullable().optional(),
659
- full_stop_landings: z2.number().nullable().optional(),
660
- touch_and_gos: z2.number().default(0),
661
- low_approaches: z2.number().default(0),
662
- flight_rule: z2.string().nullable().optional(),
663
- flight_time_type: z2.string().nullable().optional(),
664
- dep_airport_id: z2.number().nullable().optional(),
665
- dep_airport: airportSchema.optional(),
666
- arr_airport_id: z2.number().nullable().optional(),
667
- arr_airport: airportSchema.optional(),
668
- from: z2.string().nullable().optional(),
669
- to: z2.string().nullable().optional(),
670
- costs: zPhpMoneyObject.nullable().optional(),
671
- charge: zPhpMoneyObject.nullable().optional(),
672
- remarks: z2.string().nullable().optional(),
673
- created_at: z2.string(),
674
- updated_at: z2.string(),
675
- can: z2.object({
676
- update: zNullableBool,
677
- delete: zNullableBool
678
- }).optional()
679
- });
680
- var invoiceSchema = z2.object({
681
- type: z2.literal("invoice"),
682
- id: z2.number(),
683
- title: z2.string(),
684
- membership_id: z2.number(),
685
- membership: baseMembershipSchema.optional(),
686
- company_id: z2.number().optional(),
687
- company: companySchema.optional(),
688
- sequence_number: z2.string().nullable().optional(),
689
- order_number: z2.string().nullable().optional(),
690
- invoice_date: z2.string().nullable().optional(),
691
- due_date: z2.string().nullable().optional(),
692
- status: z2.string().nullable().optional(),
693
- paid_status: z2.string().nullable().optional(),
694
- total: zPhpMoneyObject.nullable().optional(),
695
- subtotal: zPhpMoneyObject.nullable().optional(),
696
- tax_amount: zPhpMoneyObject.nullable().optional(),
697
- discount_amount: zPhpMoneyObject.nullable().optional(),
698
- paid_at: z2.string().nullable().optional(),
699
- released_at: z2.string().nullable().optional(),
700
- sent: z2.number().default(0),
701
- viewed: z2.boolean().default(false),
702
- remarks: z2.string().nullable().optional(),
703
- notes: z2.string().nullable().optional(),
704
- recipient_company: z2.string().nullable().optional(),
705
- recipient_name: z2.string().nullable().optional(),
706
- recipient_address_street_1: z2.string().nullable().optional(),
707
- recipient_address_street_2: z2.string().nullable().optional(),
708
- recipient_city: z2.string().nullable().optional(),
709
- recipient_zip: z2.string().nullable().optional(),
710
- recipient_state: z2.string().nullable().optional(),
711
- recipient_country: z2.string().nullable().optional(),
712
- recipient_vat_id: z2.string().nullable().optional(),
713
- issuer_name: z2.string().nullable().optional(),
714
- issuer_address_street_1: z2.string().nullable().optional(),
715
- issuer_address_street_2: z2.string().nullable().optional(),
716
- issuer_city: z2.string().nullable().optional(),
717
- issuer_zip: z2.string().nullable().optional(),
718
- issuer_state: z2.string().nullable().optional(),
719
- created_at: z2.string(),
720
- updated_at: z2.string(),
721
- can: z2.object({
722
- update: zNullableBool,
723
- delete: zNullableBool,
724
- release: zNullableBool,
725
- view: zNullableBool
726
- }).optional()
727
- });
728
- var scheduledFlightSchema = z2.object({
729
- type: z2.literal("scheduledFlight"),
730
- id: z2.number(),
731
- booking_id: z2.number(),
732
- departure_time: z2.string(),
733
- arrival_time: z2.string(),
734
- departure_airport_id: z2.number().nullable().optional(),
735
- departure_airport: airportSchema.optional(),
736
- arrival_airport_id: z2.number().nullable().optional(),
737
- arrival_airport: airportSchema.optional(),
738
- flight_number: z2.string().nullable().optional(),
739
- notes: z2.string().nullable().optional(),
740
- created_at: z2.string(),
741
- updated_at: z2.string()
742
- });
743
- var qualificationSchema = z2.object({
744
- type: z2.literal("qualification"),
745
- id: z2.number(),
746
- title: z2.string(),
747
- description: z2.string().nullable().optional(),
748
- category: z2.string().nullable().optional(),
749
- created_at: z2.string(),
750
- updated_at: z2.string()
751
- });
752
- var expenseSchema = z2.object({
753
- type: z2.literal("expense"),
754
- id: z2.number(),
755
- company_id: z2.number(),
756
- company: companySchema.optional(),
757
- membership_id: z2.number(),
758
- membership: baseMembershipSchema.optional(),
759
- title: z2.string(),
760
- description: z2.string().nullable().optional(),
761
- amount: zPhpMoneyObject,
762
- status: z2.string().nullable().optional(),
763
- expense_date: z2.string().nullable().optional(),
764
- invoice_id: z2.number().nullable().optional(),
765
- created_at: z2.string(),
766
- updated_at: z2.string(),
767
- can: z2.object({
768
- update: zNullableBool,
769
- delete: zNullableBool,
770
- approve: zNullableBool
771
- }).optional()
772
- });
773
- var tagSchema = z2.object({
774
- type: z2.literal("tag").optional(),
775
- id: z2.number(),
776
- name: z2.string(),
777
- color: z2.string().nullable().optional()
778
- });
779
- var courseCheckSyllabusSchema = z2.object({
780
- id: z2.number(),
781
- name: z2.string(),
782
- version: z2.number(),
783
- kind: z2.enum(["regular", "progress_check"]).default("regular")
784
- });
785
- var courseSchema = z2.object({
786
- type: z2.literal("course"),
787
- id: z2.number(),
788
- company_id: z2.number(),
789
- company: companySchema.optional(),
790
- name: z2.string(),
791
- description: z2.string().nullable().optional(),
792
- start_date: z2.string().nullable().optional(),
793
- end_date: z2.string().nullable().optional(),
794
- max_participants: z2.number().nullable().optional(),
795
- price: zPhpMoneyObject.nullable().optional(),
796
- instructor_id: z2.number().nullable().optional(),
797
- instructor: userSchema.optional(),
798
- aircraft_required: z2.boolean().default(false),
799
- qualification_id: z2.number().nullable().optional(),
800
- qualification: qualificationSchema.optional(),
801
- is_archived: z2.boolean().optional(),
802
- archived_at: z2.string().nullable().optional(),
803
- category: z2.string().nullable().optional(),
804
- title: z2.string().nullable().optional(),
805
- subtitle: z2.string().nullable().optional(),
806
- content: z2.string().nullable().optional(),
807
- footer: z2.string().nullable().optional(),
808
- // Syllabus assignment pointers: `syllabus_id` drives the Übersicht,
809
- // `booking_form_syllabus_id` the per-flight Ausbildungsnachweis.
810
- syllabus_id: z2.number().nullable().optional(),
811
- booking_form_syllabus_id: z2.number().nullable().optional(),
812
- // Present only when the backend eager-loaded `checkSyllabi`.
813
- check_syllabi: z2.array(courseCheckSyllabusSchema).optional(),
814
- tags: z2.array(tagSchema).optional(),
815
- created_at: z2.string(),
816
- updated_at: z2.string(),
817
- // Loose record on purpose: gates are policy-reflected server-side and
818
- // grow over time (useAssistant, …) — same convention as companySchema.
819
- can: z2.record(z2.string(), zNullableBool).optional()
820
- });
821
- var courseEnrollmentMetricsSchema = z2.object({
822
- last_flight_at: z2.string().nullable(),
823
- next_flight_at: z2.string().nullable(),
824
- total_flight_minutes: z2.number().default(0),
825
- flags: z2.record(z2.string(), z2.union([z2.boolean(), z2.number(), z2.string()])).default({}),
826
- calculated_at: z2.string().nullable()
827
- });
828
- var courseEnrollmentSchema = z2.object({
829
- type: z2.literal("course_enrollment").optional(),
830
- id: z2.number(),
831
- course_id: z2.number(),
832
- membership_id: z2.number(),
833
- company_id: z2.number(),
834
- mentor_id: z2.number().nullable().optional(),
835
- status: z2.enum(["enrolled", "completed", "cancelled", "suspended"]),
836
- enrollment_date: z2.string(),
837
- completion_date: z2.string().nullable().optional(),
838
- progress_percentage: z2.number().default(0),
839
- milestone_count: z2.number().optional(),
840
- comments: z2.string().nullable().optional(),
841
- initial_payment_generated: z2.boolean().optional(),
842
- initial_payment_removable: z2.boolean().optional(),
843
- // Element-driven training progress (see m-crit-api
844
- // docs/features/training-tracking.md).
845
- tracked_training_elements_count: z2.number().optional(),
846
- progress_source: z2.enum(["training_elements", "milestones"]).optional(),
847
- metrics: courseEnrollmentMetricsSchema.optional(),
848
- created_at: z2.string(),
849
- updated_at: z2.string(),
850
- course: courseSchema.optional(),
851
- membership: membershipSchema.optional(),
852
- mentor: userSchema.optional(),
853
- // Loose record on purpose: gates are policy-reflected server-side and
854
- // grow over time (updateTraining, manageInitialPayment, …).
855
- can: z2.record(z2.string(), zNullableBool).optional()
856
- });
857
- var eventSchema = z2.object({
858
- type: z2.literal("event"),
859
- id: z2.number(),
860
- company_id: z2.number(),
861
- company: companySchema.optional(),
862
- title: z2.string(),
863
- description: z2.string().nullable().optional(),
864
- start_date: z2.string(),
865
- end_date: z2.string().nullable().optional(),
866
- all_day: z2.boolean().default(false),
867
- location: z2.string().nullable().optional(),
868
- category: z2.string().nullable().optional(),
869
- created_by: z2.number(),
870
- creator: userSchema.optional(),
871
- created_at: z2.string(),
872
- updated_at: z2.string(),
873
- can: z2.object({
874
- update: zNullableBool,
875
- delete: zNullableBool,
876
- attend: zNullableBool
877
- }).optional()
878
- });
879
- var addressSchema = z2.object({
880
- type: z2.literal("address"),
881
- id: z2.number(),
882
- company_id: z2.number().nullable().optional(),
883
- addressable_type: z2.string(),
884
- addressable_id: z2.number(),
885
- street: z2.string().nullable().optional(),
886
- house_number: z2.string().nullable().optional(),
887
- postal_code: z2.string().nullable().optional(),
888
- city: z2.string().nullable().optional(),
889
- state: z2.string().nullable().optional(),
890
- country: z2.string().nullable().optional(),
891
- additional_info: z2.string().nullable().optional(),
892
- vat_id: z2.string().nullable().optional(),
893
- created_at: z2.string(),
894
- updated_at: z2.string()
895
- });
896
- var roleSchema = z2.object({
897
- type: z2.literal("role"),
898
- id: z2.number(),
899
- company_id: z2.number(),
900
- name: z2.string(),
901
- description: z2.string().nullable().optional(),
902
- permissions: z2.array(z2.string()).optional(),
903
- created_at: z2.string(),
904
- updated_at: z2.string()
905
- });
906
- var landingSchema = z2.object({
907
- type: z2.literal("landing"),
908
- id: z2.number(),
909
- flight_log_id: z2.number(),
910
- approach_type_id: z2.number().nullable().optional(),
911
- airport_id: z2.number().nullable().optional(),
912
- airport: airportSchema.optional(),
913
- landing_fee_id: z2.number().nullable().optional(),
914
- landing_time: z2.string(),
915
- price: zPhpMoneyObject.nullable().optional(),
916
- created_at: z2.string(),
917
- updated_at: z2.string()
918
- });
919
- var ticketSchema = z2.object({
920
- type: z2.literal("ticket"),
921
- id: z2.number(),
922
- company_id: z2.number().nullable().optional(),
923
- company: companySchema.optional(),
924
- user_id: z2.number(),
925
- user: userSchema.optional(),
926
- assigned_to: z2.number().nullable().optional(),
927
- assignee: userSchema.optional(),
928
- title: z2.string(),
929
- description: z2.string(),
930
- status: z2.string(),
931
- priority: z2.string().nullable().optional(),
932
- category: z2.string().nullable().optional(),
933
- resolved_at: z2.string().nullable().optional(),
934
- created_at: z2.string(),
935
- updated_at: z2.string(),
936
- can: z2.object({
937
- update: zNullableBool,
938
- delete: zNullableBool,
939
- resolve: zNullableBool
940
- }).optional()
941
- });
942
- var runwaySchema = z2.object({
943
- type: z2.literal("runway"),
944
- id: z2.number(),
945
- airport_id: z2.number(),
946
- airport: airportSchema.optional(),
947
- name: z2.string(),
948
- length_m: z2.number().nullable().optional(),
949
- width_m: z2.number().nullable().optional(),
950
- surface: z2.string().nullable().optional(),
951
- heading: z2.number().nullable().optional(),
952
- elevation_m: z2.number().nullable().optional(),
953
- active: z2.boolean().default(true),
954
- created_at: z2.string(),
955
- updated_at: z2.string()
956
- });
957
- var settingSchema = z2.object({
958
- type: z2.literal("setting"),
959
- id: z2.number(),
960
- model_type: z2.string(),
961
- model_id: z2.number(),
962
- key: z2.string(),
963
- value: z2.any(),
964
- created_at: z2.string(),
965
- updated_at: z2.string()
966
- });
967
- var postSchema = z2.object({
968
- type: z2.literal("post"),
969
- id: z2.number(),
970
- company_id: z2.number(),
971
- postable_type: z2.string().nullable().optional(),
972
- postable_id: z2.number().nullable().optional(),
973
- author_id: z2.number(),
974
- author: userSchema.optional(),
975
- title: z2.string().nullable().optional(),
976
- content: z2.string(),
977
- sticky: z2.boolean().default(false),
978
- public: z2.boolean().default(false),
979
- media: mediaCollection.optional(),
980
- created_at: z2.string(),
981
- updated_at: z2.string(),
982
- can: z2.object({
983
- view: zNullableBool,
984
- update: zNullableBool,
985
- delete: zNullableBool,
986
- setFlags: zNullableBool,
987
- restore: zNullableBool,
988
- forceDelete: zNullableBool
989
- }).optional()
990
- });
991
- var commentSchema = z2.object({
992
- type: z2.literal("comment"),
993
- id: z2.number(),
994
- commentable_type: z2.string().optional(),
995
- commentable_id: z2.number().optional(),
996
- parent_id: z2.number().optional().nullable(),
997
- title: z2.string().optional().nullable(),
998
- body: z2.string(),
999
- author_id: z2.number().optional(),
1000
- author: userSchema.optional(),
1001
- created_at: z2.string(),
1002
- updated_at: z2.string().optional(),
1003
- children: z2.lazy(() => commentSchema.array()).optional(),
1004
- can: z2.object({
1005
- view: z2.boolean().optional(),
1006
- update: z2.boolean().optional().nullable(),
1007
- delete: z2.boolean().optional().nullable(),
1008
- reply: z2.boolean().optional(),
1009
- viewComments: z2.boolean().optional(),
1010
- createComments: z2.boolean().optional()
1011
- }).optional()
1012
- });
1013
- var airplaneIssueSeverityEnum = z2.enum([
1014
- "minor",
1015
- "major",
1016
- "grounding"
1017
- ]);
1018
- var airplaneIssueStatusEnum = z2.enum(["open", "deferred", "resolved"]);
1019
- var airplaneIssueSchema = z2.object({
1020
- type: z2.literal("airplaneIssue"),
1021
- id: z2.number(),
1022
- airplane_id: z2.number(),
1023
- title: z2.string().nullable().optional(),
1024
- body: z2.string(),
1025
- severity: airplaneIssueSeverityEnum,
1026
- ata_chapter: z2.string().nullable().optional(),
1027
- status: airplaneIssueStatusEnum,
1028
- reporter: userSchema.optional(),
1029
- resolver: userSchema.optional(),
1030
- deferred_at: z2.string().nullable().optional(),
1031
- deferred_until: z2.string().nullable().optional(),
1032
- deferral_notes: z2.string().nullable().optional(),
1033
- resolved_at: z2.string().nullable().optional(),
1034
- resolution_notes: z2.string().nullable().optional(),
1035
- attachments: z2.array(mediaSchema).optional(),
1036
- created_at: z2.string(),
1037
- updated_at: z2.string().optional(),
1038
- can: z2.object({
1039
- view: z2.boolean().nullable().optional(),
1040
- update: z2.boolean().nullable().optional(),
1041
- resolve: z2.boolean().nullable().optional(),
1042
- defer: z2.boolean().nullable().optional(),
1043
- reopen: z2.boolean().nullable().optional(),
1044
- delete: z2.boolean().nullable().optional()
1045
- }).optional()
1046
- });
1047
- var specialFlightSchema = z2.object({
1048
- type: z2.literal("specialFlight"),
1049
- id: z2.number(),
1050
- company_id: z2.number(),
1051
- company: companySchema.optional(),
1052
- name: z2.string(),
1053
- description: z2.string().nullable().optional(),
1054
- fee_id: z2.number().nullable().optional(),
1055
- fee: feeSchema.optional(),
1056
- active: z2.boolean().default(true),
1057
- created_at: z2.string(),
1058
- updated_at: z2.string()
1059
- });
1060
- var prePaidPackageSchema = z2.object({
1061
- type: z2.literal("prePaidPackage"),
1062
- id: z2.number(),
1063
- company_id: z2.number(),
1064
- company: companySchema.optional(),
1065
- name: z2.string(),
1066
- description: z2.string().nullable().optional(),
1067
- balance: zPhpMoneyObject,
1068
- initial_amount: zPhpMoneyObject,
1069
- discount_percentage: z2.number().nullable().optional(),
1070
- valid_until: z2.string().nullable().optional(),
1071
- created_at: z2.string(),
1072
- updated_at: z2.string(),
1073
- can: z2.object({
1074
- update: zNullableBool,
1075
- delete: zNullableBool,
1076
- assign: zNullableBool
1077
- }).optional()
1078
- });
1079
- var expenseItemSchema = z2.object({
1080
- type: z2.literal("expenseItem"),
1081
- id: z2.number(),
1082
- company_id: z2.number(),
1083
- company: companySchema.optional(),
1084
- name: z2.string(),
1085
- description: z2.string().nullable().optional(),
1086
- category: z2.string().nullable().optional(),
1087
- active: z2.boolean().default(true),
1088
- created_at: z2.string(),
1089
- updated_at: z2.string()
1090
- });
1091
- var waypointSchema = z2.object({
1092
- type: z2.literal("waypoint"),
1093
- id: z2.number(),
1094
- identifier: z2.string(),
1095
- name: z2.string(),
1096
- latitude: z2.number(),
1097
- longitude: z2.number(),
1098
- elevation_m: z2.number().nullable().optional(),
1099
- country: z2.string().nullable().optional(),
1100
- created_at: z2.string(),
1101
- updated_at: z2.string()
1102
- });
1103
- var approachTypeSchema = z2.object({
1104
- type: z2.literal("approachType"),
1105
- id: z2.number(),
1106
- name: z2.string(),
1107
- abbreviation: z2.string(),
1108
- description: z2.string().nullable().optional(),
1109
- created_at: z2.string(),
1110
- updated_at: z2.string()
1111
- });
1112
-
1113
- // src/schemas/faq.ts
1114
- import { z as z3 } from "zod";
1115
- var FaqStatus = /* @__PURE__ */ ((FaqStatus2) => {
1116
- FaqStatus2["PENDING"] = "pending";
1117
- FaqStatus2["APPROVED"] = "approved";
1118
- FaqStatus2["REJECTED"] = "rejected";
1119
- return FaqStatus2;
1120
- })(FaqStatus || {});
1121
- var UserBasicSchema = z3.object({
1122
- id: z3.number(),
1123
- name: z3.string(),
1124
- email: z3.string().email()
1125
- }).nullable();
1126
- var FaqSchema = z3.object({
1127
- type: z3.literal("faq"),
1128
- id: z3.number(),
1129
- company_id: z3.number().nullable(),
1130
- faqable_type: z3.string().nullable(),
1131
- faqable_id: z3.number().nullable(),
1132
- category: z3.string(),
1133
- subcategory: z3.string().nullable(),
1134
- question: z3.string(),
1135
- answer: z3.string().nullable(),
1136
- order: z3.number(),
1137
- is_active: z3.boolean(),
1138
- status: z3.enum(["pending", "approved", "rejected"]),
1139
- submitted_by: z3.number().nullable(),
1140
- reviewed_by: z3.number().nullable(),
1141
- reviewed_at: z3.string().nullable(),
1142
- created_at: z3.string(),
1143
- updated_at: z3.string(),
1144
- submitter: UserBasicSchema.optional(),
1145
- reviewer: UserBasicSchema.optional(),
1146
- is_pending: z3.boolean().optional(),
1147
- is_user_submitted: z3.boolean().optional(),
1148
- can: z3.object({
1149
- view: z3.boolean().optional(),
1150
- update: z3.boolean().optional(),
1151
- delete: z3.boolean().optional(),
1152
- review: z3.boolean().optional(),
1153
- submit: z3.boolean().optional()
1154
- }).optional()
1155
- });
1156
- var SubmitFaqQuestionSchema = z3.object({
1157
- category: z3.string().min(1, "Category is required"),
1158
- subcategory: z3.string().nullable().optional(),
1159
- question: z3.string().min(10, "Question must be at least 10 characters")
1160
- });
1161
- var ReviewFaqSchema = z3.object({
1162
- status: z3.enum(["pending", "approved", "rejected"]),
1163
- answer: z3.string().optional(),
1164
- category: z3.string().optional(),
1165
- subcategory: z3.string().nullable().optional(),
1166
- order: z3.number().optional(),
1167
- is_active: z3.boolean().optional()
1168
- });
1169
-
1170
- // src/schemas/fee.ts
1171
- import { z as z4 } from "zod";
1172
- var FeeSchema = z4.object({
1173
- id: z4.number(),
1174
- type: z4.literal("fee").optional(),
1175
- company_id: z4.number(),
1176
- provider: z4.string().nullable().optional(),
1177
- category: z4.string(),
1178
- subcategory: z4.string().nullable().optional(),
1179
- title: z4.string(),
1180
- internal_title: z4.string().nullable().optional(),
1181
- display_title: z4.string().optional(),
1182
- relation: z4.array(z4.enum(["booking", "flightlog", "invoice", "instructor"])).nullable().optional(),
1183
- payment_per: z4.enum(["perSession", "perFlight", "perBooking", "perHour"]).nullable().optional(),
1184
- price: z4.any().optional(),
1185
- prices: z4.array(z4.any()).optional(),
1186
- can: z4.object({
1187
- update: z4.boolean().optional(),
1188
- delete: z4.boolean().optional()
1189
- }).optional()
1190
- });
1191
- var FeeCategoryOptionsSchema = z4.object({
1192
- categories: z4.array(z4.string()),
1193
- subcategories: z4.record(z4.string(), z4.array(z4.string()))
1194
- });
1195
-
1196
- // src/schemas/safety-report.ts
1197
- import { z as z5 } from "zod";
1198
- var SafetyReportStatusEnum = z5.enum([
1199
- "new",
1200
- "under_review",
1201
- "action_taken",
1202
- "closed"
1203
- ]);
1204
- var SafetyReportCategorySchema = z5.object({
1205
- id: z5.number(),
1206
- name: z5.string(),
1207
- description: z5.string().nullable(),
1208
- color: z5.string(),
1209
- sort_order: z5.number(),
1210
- is_active: z5.boolean(),
1211
- is_global: z5.boolean().optional(),
1212
- created_at: z5.string().optional(),
1213
- updated_at: z5.string().optional()
1214
- });
1215
- var SafetyReportCategoryFormSchema = z5.object({
1216
- name: z5.string().min(1, "Name is required").max(100, "Name must be at most 100 characters"),
1217
- description: z5.string().max(500).nullable().optional(),
1218
- color: z5.string().regex(/^#[0-9A-Fa-f]{6}$/, "Invalid hex color").nullable().optional(),
1219
- sort_order: z5.number().int().min(0).optional(),
1220
- is_active: z5.boolean().optional()
1221
- });
1222
- var SafetyReportMediaSchema = z5.object({
1223
- id: z5.number(),
1224
- file_name: z5.string(),
1225
- mime_type: z5.string(),
1226
- size: z5.number(),
1227
- url: z5.string().nullable()
1228
- });
1229
- var SafetyReportSchema = z5.object({
1230
- id: z5.number(),
1231
- incident_date: z5.string(),
1232
- location: z5.string().nullable(),
1233
- description: z5.string(),
1234
- status: SafetyReportStatusEnum,
1235
- is_archived: z5.boolean(),
1236
- category: SafetyReportCategorySchema.nullable().optional(),
1237
- attachments: z5.array(SafetyReportMediaSchema).optional(),
1238
- attachments_count: z5.number().optional(),
1239
- created_at: z5.string(),
1240
- updated_at: z5.string(),
1241
- can: z5.record(z5.string(), z5.boolean()).optional()
1242
- });
1243
- var SafetyReportListResponseSchema = z5.object({
1244
- data: z5.array(SafetyReportSchema),
1245
- links: z5.object({
1246
- first: z5.string().nullable().optional(),
1247
- last: z5.string().nullable().optional(),
1248
- prev: z5.string().nullable().optional(),
1249
- next: z5.string().nullable().optional()
1250
- }).optional(),
1251
- meta: z5.object({
1252
- current_page: z5.number(),
1253
- from: z5.number().nullable(),
1254
- last_page: z5.number(),
1255
- per_page: z5.number(),
1256
- to: z5.number().nullable(),
1257
- total: z5.number()
1258
- }).optional()
1259
- });
1260
- var SafetyReportFormSchema = z5.object({
1261
- incident_date: z5.string().min(1, "Incident date is required"),
1262
- location: z5.string().max(255).nullable().optional(),
1263
- description: z5.string().min(10, "Description must be at least 10 characters").max(1e4, "Description must be at most 10000 characters")
1264
- });
1265
- var SafetyReportUpdateSchema = z5.object({
1266
- status: SafetyReportStatusEnum.optional(),
1267
- category_id: z5.number().nullable().optional()
1268
- });
1269
- var SafetyReportFilterSchema = z5.object({
1270
- status: SafetyReportStatusEnum.optional(),
1271
- category_id: z5.number().optional(),
1272
- date_from: z5.string().optional(),
1273
- date_to: z5.string().optional(),
1274
- include_archived: z5.boolean().optional(),
1275
- search: z5.string().optional(),
1276
- sort: z5.enum(["incident_date", "created_at", "status"]).optional(),
1277
- direction: z5.enum(["asc", "desc"]).optional(),
1278
- per_page: z5.number().optional(),
1279
- page: z5.number().optional()
1280
- });
1281
- var SafetyReportSubmissionResponseSchema = z5.object({
1282
- message: z5.string(),
1283
- submitted: z5.boolean()
1284
- });
1285
- var SAFETY_REPORT_STATUS_LABELS = {
1286
- new: "New",
1287
- under_review: "Under Review",
1288
- action_taken: "Action Taken",
1289
- closed: "Closed"
1290
- };
1291
- var SAFETY_REPORT_STATUS_COLORS = {
1292
- new: "info",
1293
- under_review: "warning",
1294
- action_taken: "primary",
1295
- closed: "success"
1296
- };
1297
-
1298
- export {
1299
- zNullableBool,
1300
- zNetGross,
1301
- zContactDTO,
1302
- zPhpMoneyObject,
1303
- contactAttributeSchema,
1304
- BaseModel,
1305
- mediaSchema,
1306
- mediaCollection,
1307
- userSchema,
1308
- companySchema,
1309
- baseMembershipSchema,
1310
- membershipSchema,
1311
- documentType,
1312
- priceSchema,
1313
- feeSchema,
1314
- courseFeeSchema,
1315
- airplaneSchema,
1316
- airplaneShareInviteSchema,
1317
- airplanePermissionSchema,
1318
- landingFeeSchema,
1319
- aircraftRatingSchema,
1320
- userAircraftRatingSchema,
1321
- userQualificationSchema,
1322
- airportSchema,
1323
- recurringFlightSchema,
1324
- maintenanceEventSchema,
1325
- maintenanceEventEstimationSchema,
1326
- maintenanceStatusSchema,
1327
- extendedAirplaneSchema,
1328
- availSchema,
1329
- bookingWaypointSchema,
1330
- bookingSchema,
1331
- alertSchema,
1332
- documentSchema,
1333
- documentRequirement,
1334
- documentRequirementGroup,
1335
- documentRequirementGroupAssignment,
1336
- documentComplianceStatus,
1337
- documentShareSchema,
1338
- allowedDocumentTypeSchema,
1339
- flightLogSchema,
1340
- invoiceSchema,
1341
- scheduledFlightSchema,
1342
- qualificationSchema,
1343
- expenseSchema,
1344
- tagSchema,
1345
- courseCheckSyllabusSchema,
1346
- courseSchema,
1347
- courseEnrollmentMetricsSchema,
1348
- courseEnrollmentSchema,
1349
- eventSchema,
1350
- addressSchema,
1351
- roleSchema,
1352
- landingSchema,
1353
- ticketSchema,
1354
- runwaySchema,
1355
- settingSchema,
1356
- postSchema,
1357
- commentSchema,
1358
- airplaneIssueSeverityEnum,
1359
- airplaneIssueStatusEnum,
1360
- airplaneIssueSchema,
1361
- specialFlightSchema,
1362
- prePaidPackageSchema,
1363
- expenseItemSchema,
1364
- waypointSchema,
1365
- approachTypeSchema,
1366
- FaqStatus,
1367
- FaqSchema,
1368
- SubmitFaqQuestionSchema,
1369
- ReviewFaqSchema,
1370
- FeeSchema,
1371
- FeeCategoryOptionsSchema,
1372
- SafetyReportStatusEnum,
1373
- SafetyReportCategorySchema,
1374
- SafetyReportCategoryFormSchema,
1375
- SafetyReportMediaSchema,
1376
- SafetyReportSchema,
1377
- SafetyReportListResponseSchema,
1378
- SafetyReportFormSchema,
1379
- SafetyReportUpdateSchema,
1380
- SafetyReportFilterSchema,
1381
- SafetyReportSubmissionResponseSchema,
1382
- SAFETY_REPORT_STATUS_LABELS,
1383
- SAFETY_REPORT_STATUS_COLORS
1384
- };