UNPKG

@tmlmobilidade/types

Version:
33 lines (32 loc) 1.72 kB
/* * */ import { AlertCauseSchema } from '../../alerts/cause.js'; import { RideAnalysisSummarySchema } from './ride-analysis.js'; import { CommentSchema, DocumentSchema } from '@tmlmobilidade/go-types-shared'; 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: AlertCauseSchema, 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();