const ProductProvider = require('../../provider/productProvider'); const { sendOK, sendError } = require('../../helper/response'); class product { constructor() { this.producProvider = new ProductProvider() } init(router) { const self = this; console.log("route") router .route("") .get(async function (req, res, next) { await self.getProducts(req, res, next); }); router .route("/:code") .get(async function (req, res, next) { await self.getByCode(req, res, next); }); router .route("") .post(async function (req, res, next) { await self.createProduct(req, res, next); }); router .route("/:code") .put(async function (req, res, next) { await self.updateProduct(req, res, next); }); router .route("/:code") .delete(async function (req, res, next) { await self.deleteProduct(req, res, next); }); } async getProducts(req, res, next) { const self = this; try { const currentPage = parseInt(req.query.currentPage) || 1 const pageSize = parseInt(req.query.pageSize) || 10 // sort & dir let sort = req.query.sort || "id" let dir = req.query.dir || "asc" const lstResult = await self.producProvider.getAll(currentPage, pageSize, sort, dir); lstResult['totalPages'] = Math.ceil(lstResult['count'] / pageSize); lstResult['currentPage'] = currentPage return res.status(200).json(sendOK(lstResult)); } catch (error) { console.log(error); res.status(500).json(sendError(error.message)) } } async getByCode(req, res, next) { const self = this; try { const result = await self.producProvider.getByCode(req.params); return res.status(200).json(sendOK(result)); } catch (error) { console.log(error); res.status(500).json(sendError(error.message)) } } async createProduct(req, res, next) { const self = this; try { let body = req.body; body.createdAt = new Date; const result = await self.producProvider.post(body); return res.status(200).json(sendOK(result)); } catch (error) { console.log(error); res.status(500).json(sendError(error.message)) } } async updateProduct(req, res, next) { const self = this; try { let body = req.body; body.updatedAt = new Date; const result = await self.producProvider.put(body, req.params.code); return res.status(200).json(sendOK(result)); } catch (error) { console.log(error); res.status(500).json(sendError(error.message)) } } async deleteProduct(req, res, next) { const self = this; try { const result = await self.producProvider.delete(req.params.code); return res.status(200).json(sendOK(result)); } catch (error) { console.log(error); res.status(500).json(sendError(error.message)) } } } module.exports = product;