From b3d3af91fbf14c08089d5770c86ff87dcfb93a5f Mon Sep 17 00:00:00 2001 From: "Josepablo C." Date: Tue, 10 Oct 2023 21:08:55 -0600 Subject: [PATCH] feat: Adding no_of_proposals to loads --- src/apps/private/loads/routes.js | 4 ++-- src/apps/private/loads/services.js | 33 +++++++++++++++++------------ src/lib/Handlers/Generic.handler.js | 5 ++++- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/apps/private/loads/routes.js b/src/apps/private/loads/routes.js index 5e5634d..edc6e25 100644 --- a/src/apps/private/loads/routes.js +++ b/src/apps/private/loads/routes.js @@ -2,7 +2,7 @@ const router = require('express').Router(); const services= require('./services.js'); -router.get('/', services.getLoadsList); -router.get('/:id', services.getLoad); +router.get('/', services.getList); +router.get('/:id', services.getById); module.exports = router; diff --git a/src/apps/private/loads/services.js b/src/apps/private/loads/services.js index a77f2e5..a342a5b 100644 --- a/src/apps/private/loads/services.js +++ b/src/apps/private/loads/services.js @@ -1,9 +1,15 @@ "use strict"; const { ROOT_PATH, LIB_PATH, MODELS_PATH, HANDLERS_PATH } = process.env; const { getPagination , queryPage } = require( `${ROOT_PATH}/${LIB_PATH}/Misc.js` ); +const { GenericHandler } = require( `${ROOT_PATH}/${HANDLERS_PATH}/Generic.handler.js` ); const Model = require( `${ROOT_PATH}/${MODELS_PATH}/loads.model.js` ); const UserModel = require( `${ROOT_PATH}/${MODELS_PATH}/users.model.js` ); const CompaniesModel = require( `${ROOT_PATH}/${MODELS_PATH}/companies.model.js` ); +const VehiclesModel = require( `${ROOT_PATH}/${MODELS_PATH}/vehicles.model.js` ); +const ProposalsModel = require( `${ROOT_PATH}/${MODELS_PATH}/proposals.model.js` ); + +const populate_list = ['product', 'company', 'carrier', 'vehicle']; +const generic = new GenericHandler( Model, null, populate_list ); async function getAuthorizationFilter( userId ){ const user = await UserModel.findById( userId ); @@ -16,22 +22,21 @@ async function getAuthorizationFilter( userId ){ }; } -const getLoadsList = async(req, res) => { +const getList = async(req, res) => { const filter = await getAuthorizationFilter( req.JWT.payload.sub ); const { page , elements } = getPagination( req.query ); - const query = await queryPage( page , elements, Model, filter ); - const list = await query.query.populate('product') - .populate('company') - .populate('carrier'); - res.send({ - total : query.total, - limit : elements, - skip : query.skip, - data : list - }); + const retVal = await generic.getList(page , elements, filter ); + const load_list = retVal.data; + for(let i=0; i { +const getById = async(req, res) => { const loadId = req.params.id; const CompanyAccessFilter = await getAuthorizationFilter( req.JWT.payload.sub ); const filter = { @@ -40,8 +45,8 @@ const getLoad = async(req, res) => { CompanyAccessFilter ] }; - const retVal = await Model.findOne( filter ).populate('product').populate('company').populate('carrier') || {}; + const retVal = await Model.findOne( filter ).populate( populate_list ) || {}; res.send( retVal ); }; -module.exports = { getLoadsList, getLoad }; +module.exports = { getList, getById }; diff --git a/src/lib/Handlers/Generic.handler.js b/src/lib/Handlers/Generic.handler.js index 5c7d9f2..9463be5 100644 --- a/src/lib/Handlers/Generic.handler.js +++ b/src/lib/Handlers/Generic.handler.js @@ -24,7 +24,7 @@ async function getPageQuery(page, elements, Model, filter=null, projection=null) } class GenericHandler{ - constructor( Model, search_param, populate_list=null ) { + constructor( Model, search_param=null, populate_list=null ) { this.Model = Model; this.search_param = search_param; this.populate_list = populate_list || []; @@ -49,6 +49,9 @@ class GenericHandler{ } async findList( find_string, page, elements, projection=null ){ + if( !this.search_param ){ + throw new Error( "No search parameter setted up" ); + } const search_param = this.search_param; const re = new RegExp( find_string ); const filter = {};