@@ -27,6 +27,10 @@ import type {
2727 UploadDocumentBody ,
2828 UploadPhotoBody ,
2929 CreateDisputeBody ,
30+ CreateShipmentInput ,
31+ ShipmentIdParam ,
32+ ShipmentPatchBody ,
33+ ShipmentStatusInput ,
3034} from './shipments.validation.js' ;
3135import { AppError , ErrorCodes } from '../../shared/http/errors.js' ;
3236
@@ -112,7 +116,7 @@ export const getShipments = async (req: Request, res: Response) => {
112116 * @throws {AppError } 400 VALIDATION_ERROR — when the id param is invalid.
113117 */
114118export const getShipmentById = async ( req : Request , res : Response ) => {
115- const { id } = req . params ;
119+ const { id } = req . params as unknown as ShipmentIdParam ;
116120 const shipment = await getShipmentByIdService ( id , {
117121 organizationId : req . user ?. organizationId ,
118122 role : req . user ?. role ,
@@ -134,7 +138,7 @@ export const getShipmentById = async (req: Request, res: Response) => {
134138 * @throws {AppError } 400 VALIDATION_ERROR — when params/query validation fails.
135139 */
136140export const getShipmentTimeline = async ( req : Request , res : Response ) => {
137- const { id } = req . params ;
141+ const { id } = req . params as unknown as ShipmentIdParam ;
138142 const query = req . query as unknown as ShipmentTimelineQuery ;
139143 const { cursor, limit = 20 } = query ;
140144 const { data, nextCursor, hasMore } = await getShipmentTimelineService ( id , {
@@ -161,7 +165,8 @@ export const getShipmentTimeline = async (req: Request, res: Response) => {
161165 * @throws {AppError } 400 VALIDATION_ERROR — when body validation fails.
162166 */
163167export const createShipment = async ( req : Request , res : Response ) => {
164- const shipment = await createShipmentService ( { ...req . body , actorUserId : req . user ?. userId } ) ;
168+ const body = req . body as CreateShipmentInput ;
169+ const shipment = await createShipmentService ( { ...body , actorUserId : req . user ?. userId } ) ;
165170 sendResponse ( res , 201 , true , 'Shipment created' , shipment ) ;
166171} ;
167172
@@ -176,8 +181,8 @@ export const createShipment = async (req: Request, res: Response) => {
176181 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
177182 */
178183export const patchShipment = async ( req : Request , res : Response ) => {
179- const { id } = req . params ;
180- const { offChainMetadata } = req . body ;
184+ const { id } = req . params as unknown as ShipmentIdParam ;
185+ const { offChainMetadata } = req . body as ShipmentPatchBody ;
181186 const shipment = await patchShipmentService ( id , offChainMetadata ) ;
182187 if ( ! shipment ) {
183188 sendResponse ( res , 404 , false , 'Shipment not found' , null ) ;
@@ -198,8 +203,8 @@ export const patchShipment = async (req: Request, res: Response) => {
198203 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
199204 */
200205export const patchShipmentStatus = async ( req : Request , res : Response ) => {
201- const { id } = req . params ;
202- const { status } = req . body ;
206+ const { id } = req . params as unknown as ShipmentIdParam ;
207+ const { status } = req . body as ShipmentStatusInput ;
203208
204209 if ( ! status || typeof status !== 'string' ) {
205210 sendResponse ( res , 400 , false , 'Missing status' , null ) ;
@@ -238,7 +243,7 @@ export const patchShipmentStatus = async (req: Request, res: Response) => {
238243 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
239244 */
240245export const uploadShipmentProof = async ( req : Request , res : Response ) => {
241- const { id } = req . params ;
246+ const { id } = req . params as unknown as ShipmentIdParam ;
242247 const { recipientSignatureName, notes } = req . body as ShipmentProofBody ;
243248 const file = req . file ;
244249
@@ -272,7 +277,7 @@ export const uploadShipmentProof = async (req: Request, res: Response) => {
272277 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
273278 */
274279export const uploadShipmentDocument = async ( req : Request , res : Response ) => {
275- const { id } = req . params ;
280+ const { id } = req . params as unknown as ShipmentIdParam ;
276281 const { type } = req . body as UploadDocumentBody ;
277282 const file = req . file ;
278283
@@ -318,7 +323,7 @@ export const uploadShipmentDocument = async (req: Request, res: Response) => {
318323 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
319324 */
320325export const uploadShipmentPhoto = async ( req : Request , res : Response ) => {
321- const { id } = req . params ;
326+ const { id } = req . params as unknown as ShipmentIdParam ;
322327 const { caption } = req . body as UploadPhotoBody ;
323328 const file = req . file ;
324329
@@ -361,7 +366,7 @@ export const uploadShipmentPhoto = async (req: Request, res: Response) => {
361366 * @throws {AppError } 400 VALIDATION_ERROR — when params/body validation fails.
362367 */
363368export const createDispute = async ( req : Request , res : Response ) => {
364- const { id } = req . params ;
369+ const { id } = req . params as unknown as ShipmentIdParam ;
365370 const { type, description } = req . body as CreateDisputeBody ;
366371 const file = req . file ;
367372
@@ -427,7 +432,7 @@ export const exportShipments = async (req: Request, res: Response) => {
427432 * @throws {AppError } 400 VALIDATION_ERROR — when the id param is invalid.
428433 */
429434export const deleteShipment = async ( req : Request , res : Response ) => {
430- const { id } = req . params ;
435+ const { id } = req . params as unknown as ShipmentIdParam ;
431436 const shipment = await deleteShipmentService ( id ) ;
432437
433438 if ( ! shipment ) {
@@ -451,7 +456,7 @@ export const deleteShipment = async (req: Request, res: Response) => {
451456 * @throws {AppError } 400 VALIDATION_ERROR — when the id param is invalid.
452457 */
453458export const getShipmentEta = async ( req : Request , res : Response ) => {
454- const { id } = req . params ;
459+ const { id } = req . params as unknown as ShipmentIdParam ;
455460 const eta = await getShipmentEtaService ( id ) ;
456461 sendResponse ( res , 200 , true , 'Shipment ETA retrieved' , eta ) ;
457462} ;
0 commit comments