UNPKG

@tmlmobilidade/types

Version:
34 lines (33 loc) 1.75 kB
/* * */ import { CommentSchema } from '../_common/comment.js'; import { DocumentSchema } from '../_common/document.js'; import { gtfsCauseSchema } from '../gtfs/cause-effetcs.js'; import { RideAnalysisSummarySchema } from './ride-analysis.js'; import { z } from 'zod'; /* * */ export const RIDE_ACCEPTANCE_STATUS_OPTIONS = ['justification_required', 'under_review', 'accepted', 'rejected']; export const RideAcceptanceStatusSchema = z.enum(RIDE_ACCEPTANCE_STATUS_OPTIONS); export const RIDE_JUSTIFICATION_SOURCE_OPTIONS = ['MANUAL', 'ALERT']; export const RideJustificationSourceSchema = z.enum(RIDE_JUSTIFICATION_SOURCE_OPTIONS); export const RIDE_JUSTIFICATION_STATUS_TYPE_OPTIONS = ['locked_status', 'acceptance_status', 'pto_message']; export const RideJustificationStatusTypeSchema = z.enum(RIDE_JUSTIFICATION_STATUS_TYPE_OPTIONS); /* * */ export const RideJustificationSchema = DocumentSchema .omit({ _id: true, is_locked: true }) .extend({ justification_cause: gtfsCauseSchema, justification_source: RideJustificationSourceSchema, manual_trip_id: z.string().optional(), pto_message: z.string().min(2).max(5000).default(''), }); /* * */ export const RideAcceptanceSchema = DocumentSchema.extend({ acceptance_status: RideAcceptanceStatusSchema, analysis_summary: RideAnalysisSummarySchema, comments: z.array(CommentSchema).default([]), is_locked: z.boolean().default(false), justification: RideJustificationSchema.nullable(), ride_id: z.string(), }); export const CreateRideAcceptanceSchema = RideAcceptanceSchema.partial({ _id: true }).omit({ created_at: true, updated_at: true }); export const UpdateRideAcceptanceSchema = RideAcceptanceSchema.omit({ created_at: true, created_by: true }).partial();