import { ILogger, ModuleParams, validateRequest } from "@erp/core/api"; import { Application, NextFunction, Request, Response, Router } from "express"; import { Sequelize } from "sequelize"; import { CreateCustomerCommandSchema, CustomerListCriteriaSchema, DeleteCustomerByIdQuerySchema, GetCustomerByIdQuerySchema, } from "../../../common/dto"; import { buildCreateCustomersController, buildDeleteCustomerController, buildGetCustomerController, buildListCustomersController, } from "../../controllers"; export const customersRouter = (params: ModuleParams) => { const { app, database, baseRoutePath, logger } = params as { app: Application; database: Sequelize; baseRoutePath: string; logger: ILogger; }; const routes: Router = Router({ mergeParams: true }); routes.get( "/", //checkTabContext, //checkUser, validateRequest(CustomerListCriteriaSchema, "params"), (req: Request, res: Response, next: NextFunction) => { buildListCustomersController(database).execute(req, res, next); } ); routes.get( "/:id", //checkTabContext, //checkUser, validateRequest(GetCustomerByIdQuerySchema, "params"), (req: Request, res: Response, next: NextFunction) => { buildGetCustomerController(database).execute(req, res, next); } ); routes.post( "/", //checkTabContext, //checkUser, validateRequest(CreateCustomerCommandSchema), (req: Request, res: Response, next: NextFunction) => { buildCreateCustomersController(database).execute(req, res, next); } ); /*routes.put( "/:customerId", validateAndParseBody(IUpdateCustomerRequestSchema), checkTabContext, //checkUser, (req: Request, res: Response, next: NextFunction) => { buildUpdateCustomerController().execute(req, res, next); } );*/ routes.delete( "/:id", //checkTabContext, //checkUser, validateRequest(DeleteCustomerByIdQuerySchema, "params"), (req: Request, res: Response, next: NextFunction) => { buildDeleteCustomerController(database).execute(req, res, next); } ); app.use(`${baseRoutePath}/customers`, routes); };