89 lines
4.4 KiB
JavaScript
89 lines
4.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.volunteerCreateLocationSchema = exports.volunteerUpdateLocationSchema = exports.adminVisitsSchema = exports.adminActivitySchema = exports.listMyVisitsSchema = exports.walkingRouteSchema = exports.endSessionSchema = exports.startSessionSchema = exports.bulkRecordVisitSchema = exports.recordVisitSchema = void 0;
|
|
const zod_1 = require("zod");
|
|
const client_1 = require("@prisma/client");
|
|
exports.recordVisitSchema = zod_1.z.object({
|
|
addressId: zod_1.z.string().min(1), // Changed from locationId
|
|
outcome: zod_1.z.nativeEnum(client_1.VisitOutcome),
|
|
supportLevel: zod_1.z.nativeEnum(client_1.SupportLevel).optional(),
|
|
signRequested: zod_1.z.boolean().optional().default(false),
|
|
signSize: zod_1.z.string().optional(),
|
|
notes: zod_1.z.string().optional(),
|
|
durationSeconds: zod_1.z.number().int().optional(),
|
|
sessionId: zod_1.z.string().optional(),
|
|
shiftId: zod_1.z.string().optional(),
|
|
updateLocation: zod_1.z.boolean().optional().default(true),
|
|
});
|
|
exports.bulkRecordVisitSchema = zod_1.z.object({
|
|
locationId: zod_1.z.string().min(1), // Building ID
|
|
outcome: zod_1.z.enum(['NOT_HOME', 'REFUSED', 'MOVED']), // Only non-contact outcomes
|
|
notes: zod_1.z.string().optional(),
|
|
sessionId: zod_1.z.string().optional(),
|
|
shiftId: zod_1.z.string().optional(),
|
|
});
|
|
exports.startSessionSchema = zod_1.z.object({
|
|
cutId: zod_1.z.string().min(1),
|
|
shiftId: zod_1.z.string().optional(),
|
|
startLatitude: zod_1.z.number().optional(),
|
|
startLongitude: zod_1.z.number().optional(),
|
|
});
|
|
exports.endSessionSchema = zod_1.z.object({
|
|
// no body required — session id from URL
|
|
});
|
|
exports.walkingRouteSchema = zod_1.z.object({
|
|
excludeVisited: zod_1.z.coerce.boolean().optional().default(false),
|
|
startLatitude: zod_1.z.coerce.number().optional(),
|
|
startLongitude: zod_1.z.coerce.number().optional(),
|
|
});
|
|
exports.listMyVisitsSchema = zod_1.z.object({
|
|
page: zod_1.z.coerce.number().int().positive().default(1),
|
|
limit: zod_1.z.coerce.number().int().positive().max(100).default(20),
|
|
});
|
|
exports.adminActivitySchema = zod_1.z.object({
|
|
page: zod_1.z.coerce.number().int().positive().default(1),
|
|
limit: zod_1.z.coerce.number().int().positive().max(100).default(20),
|
|
cutId: zod_1.z.string().optional(),
|
|
userId: zod_1.z.string().optional(),
|
|
outcome: zod_1.z.nativeEnum(client_1.VisitOutcome).optional(),
|
|
});
|
|
exports.adminVisitsSchema = zod_1.z.object({
|
|
page: zod_1.z.coerce.number().int().positive().default(1),
|
|
limit: zod_1.z.coerce.number().int().positive().max(100).default(50),
|
|
cutId: zod_1.z.string().optional(),
|
|
userId: zod_1.z.string().optional(),
|
|
shiftId: zod_1.z.string().optional(),
|
|
outcome: zod_1.z.nativeEnum(client_1.VisitOutcome).optional(),
|
|
sortBy: zod_1.z.enum(['visitedAt', 'outcome']).optional().default('visitedAt'),
|
|
sortOrder: zod_1.z.enum(['asc', 'desc']).optional().default('desc'),
|
|
});
|
|
exports.volunteerUpdateLocationSchema = zod_1.z.object({
|
|
supportLevel: zod_1.z.nativeEnum(client_1.SupportLevel).nullable().optional(),
|
|
sign: zod_1.z.boolean().optional(),
|
|
signSize: zod_1.z.string().nullable().optional(),
|
|
notes: zod_1.z.string().nullable().optional(),
|
|
// Admin-only fields (stripped by service for non-admins)
|
|
firstName: zod_1.z.string().nullable().optional(),
|
|
lastName: zod_1.z.string().nullable().optional(),
|
|
address: zod_1.z.string().nullable().optional(),
|
|
unitNumber: zod_1.z.string().nullable().optional(),
|
|
email: zod_1.z.string().email().nullable().optional().or(zod_1.z.literal('')),
|
|
phone: zod_1.z.string().nullable().optional(),
|
|
});
|
|
exports.volunteerCreateLocationSchema = zod_1.z.object({
|
|
address: zod_1.z.string().min(1, 'Address is required'),
|
|
latitude: zod_1.z.number().min(-90).max(90),
|
|
longitude: zod_1.z.number().min(-180).max(180),
|
|
unitNumber: zod_1.z.string().optional(),
|
|
// USER+ fields (stripped by route for TEMPs)
|
|
supportLevel: zod_1.z.nativeEnum(client_1.SupportLevel).optional(),
|
|
sign: zod_1.z.boolean().optional().default(false),
|
|
signSize: zod_1.z.string().optional(),
|
|
notes: zod_1.z.string().optional(),
|
|
// Admin-only fields
|
|
firstName: zod_1.z.string().optional(),
|
|
lastName: zod_1.z.string().optional(),
|
|
email: zod_1.z.string().email().optional().or(zod_1.z.literal('')),
|
|
phone: zod_1.z.string().optional(),
|
|
});
|
|
//# sourceMappingURL=canvass.schemas.js.map
|