VendorController.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { Request, Response } from 'express';
  2. import { VendorCollection } from '../../resources/admin/vendor/VendorCollection';
  3. import { VendorResource } from '../../resources/admin/vendor/VendorResource';
  4. import * as VendorService from '../../services/admin/VendorService';
  5. import { PaginationParam } from '../../utils/PaginationParams';
  6. import { errorResponse, messageSuccessResponse } from '../../utils/Response';
  7. import { validateStoreVendorRequest, validateUpdateVendorRequest } from '../../validators/admin/vendor/VendorValidators';
  8. import { CustomRequest } from '../../types/token/CustomRequest';
  9. import { HttpException } from '../../utils/HttpException';
  10. export const getAllVendor = async (req: Request, res: Response): Promise<Response> => {
  11. try {
  12. const { page, limit, search, sortBy, orderBy } = PaginationParam(req);
  13. const { vendors, total } = await VendorService.getAllVendorService({
  14. page, limit, search, sortBy, orderBy
  15. });
  16. return VendorCollection(req, res, vendors, total, page, limit, 'Vendor data successfully retrieved');
  17. } catch (err) {
  18. return errorResponse(res, err);
  19. }
  20. };
  21. export const showVendor = async (req: Request, res: Response): Promise<Response> => {
  22. try {
  23. const id: string = req.params.id;
  24. const { vendor } = await VendorService.showVendorService(id);
  25. return VendorResource(res, vendor, 'Success show vendor');
  26. } catch (err) {
  27. return errorResponse(res, err);
  28. }
  29. };
  30. export const storeVendor = async (req: Request, res: Response): Promise<Response> => {
  31. try {
  32. const validatedData = validateStoreVendorRequest(req.body);
  33. await VendorService.storeVendorService(validatedData, req as CustomRequest);
  34. return messageSuccessResponse(res, 'Success added vendor', 201);
  35. } catch (err) {
  36. return errorResponse(res, err);
  37. }
  38. };
  39. export const updateVendor = async (req: Request, res: Response): Promise<Response> => {
  40. try {
  41. const validatedData = validateUpdateVendorRequest(req.body);
  42. await VendorService.updateVendorService(validatedData, req as CustomRequest);
  43. return messageSuccessResponse(res, 'Success update vendor');
  44. } catch (err) {
  45. return errorResponse(res, err);
  46. }
  47. };
  48. export const deleteVendor = async (req: Request, res: Response): Promise<Response> => {
  49. try {
  50. const id: string = req.params.id;
  51. await VendorService.deleteVendorService(id, req as CustomRequest);
  52. return messageSuccessResponse(res, 'Success delete vendor');
  53. } catch (err) {
  54. return errorResponse(res, err);
  55. }
  56. };
  57. export const importVendor = async (req: Request, res: Response): Promise<Response> => {
  58. try {
  59. if (!req.file) {
  60. throw new HttpException("No file uploaded", 400);
  61. }
  62. await VendorService.importVendorService(req.file, req as CustomRequest);
  63. return messageSuccessResponse(res, "Success import vendor", 201);
  64. } catch (err) {
  65. return errorResponse(res, err);
  66. }
  67. };