@tmlmobilidade/types
Version:
52 lines (51 loc) • 1.7 kB
JavaScript
import { OperationalDateSchema } from '@tmlmobilidade/go-types-shared';
import { z } from 'zod';
/* * */
export const VkmCalculationMethodValues = [
'rolling_year',
'fixed_range',
];
export const VkmCalculationMethodSchema = z.enum(VkmCalculationMethodValues);
export const VkmExtensionSourceValues = [
'go',
'stop_times',
];
export const VkmExtensionSourceSchema = z.enum(VkmExtensionSourceValues);
export const LegacyVkmDayTypeSchema = z.enum(['1', '2', '3']);
/* * */
export const CalculateVkmSchema = z.object({
agency_id: z.string(),
calculation_method: VkmCalculationMethodSchema,
end_date: OperationalDateSchema.nullable().optional(),
extension_source: VkmExtensionSourceSchema,
start_date: OperationalDateSchema,
});
export const VkmCalculationInputsSchema = z.object({
agency_id: z.string(),
agency_name: z.string(),
calculation_method: VkmCalculationMethodSchema,
end_date: OperationalDateSchema,
price_per_km: z.number(),
start_date: OperationalDateSchema,
total_vkm_per_year: z.number(),
});
export const VkmPeriodResultSchema = z.object({
code: z.string().nullable(),
day_type_one: z.number(),
day_type_three: z.number(),
day_type_two: z.number(),
id: z.string().nullable(),
name: z.string(),
total: z.number(),
});
export const VkmCalculationResultSchema = z.object({
day_type_one: z.number(),
day_type_three: z.number(),
day_type_two: z.number(),
inputs: VkmCalculationInputsSchema,
periods: z.array(VkmPeriodResultSchema),
total_from_distance: z.number(),
total_from_shape: z.number(),
total_in_euros: z.number(),
total_relative_to_contract: z.number(),
});