"use strict"; const { ROOT_PATH, LIB_PATH, MODELS_PATH, HANDLERS_PATH } = process.env; const { getPagination , queryPage } = require( `${ROOT_PATH}/${LIB_PATH}/Misc.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` ); async function getAuthorizationFilter( userId ){ const user = await UserModel.findById( userId ); const companyId = user.company.toString(); return { $or: [ { company : companyId }, { carrier : companyId }, ] }; } const getLoadsList = 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 getLoad = async(req, res) => { const loadId = req.params.id; const CompanyAccessFilter = await getAuthorizationFilter( req.JWT.payload.sub ); const filter = { $and : [ { _id : loadId }, CompanyAccessFilter ] }; const retVal = await Model.findOne( filter ).populate('product').populate('company').populate('carrier') || {}; res.send( retVal ); }; module.exports = { getLoadsList, getLoad };