From 62a5e8419aae7f5202d67d09f8e94e98da30d3b1 Mon Sep 17 00:00:00 2001 From: Josepablo C Date: Sat, 6 Apr 2024 16:39:56 -0600 Subject: [PATCH] feat(Proposals): Add event to update proposal and loads on acceptance --- src/lib/Handlers/Proposals.handler.js | 29 ++++++++++++++++++++++++++- src/lib/Models/proposals.model.js | 4 ++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/lib/Handlers/Proposals.handler.js b/src/lib/Handlers/Proposals.handler.js index da28e8d..2c9f985 100644 --- a/src/lib/Handlers/Proposals.handler.js +++ b/src/lib/Handlers/Proposals.handler.js @@ -1,13 +1,40 @@ 'user strict'; const { getModel } = require( '../Models' ); +const vehiclesModel = require('../Models/vehicles.model'); const proposalsModel = getModel('proposals'); const loadsModel = getModel('loads'); const usersModel = getModel('users'); const companiesModel = getModel('companies'); +/** + * When the proposal is accepted then the load should be updated to have the + * @param {*} id + * @param {*} newProposalData + * @returns + */ async function onPatchEvent( id , newProposalData ){ - console.log( newProposalData ); + if( !newProposalData.is_accepted ){ + return; + } + const proposal = await proposalsModel.findById( id ); + const shipper_user = await usersModel.findById( proposal.accepted_by ); + const shipper = await companiesModel.findById( shipper_user.company ); + const vehicle = await vehiclesModel.findById( proposal.vehicle ); + + /// Update Proposal: + /// Adding shipper to proposal + await proposalsModel.findByIdAndUpdate( id , { + shipper : shipper.id + } ); + + /// Update Load: + /// Add carrier, driver and vehicle + await loadsModel.findByIdAndUpdate( proposal.load, { + carrier : proposal.carrier, + driver : vehicle.driver, + vehicle : proposal.vehicle, + } ); } module.exports = { onPatchEvent }; diff --git a/src/lib/Models/proposals.model.js b/src/lib/Models/proposals.model.js index d86e040..9fc71c6 100644 --- a/src/lib/Models/proposals.model.js +++ b/src/lib/Models/proposals.model.js @@ -3,8 +3,8 @@ const { Schema } = mongoose; const schema = new Schema({ load: { type: Schema.Types.ObjectId, ref: 'loads' }, - shipper: { type: Schema.Types.ObjectId, ref: 'companies' }, // how offers load - carrier: { type: Schema.Types.ObjectId, ref: 'companies' }, // how transport the load + shipper: { type: Schema.Types.ObjectId, ref: 'companies' }, // who offers load + carrier: { type: Schema.Types.ObjectId, ref: 'companies' }, // who transport the load vehicle: { type: Schema.Types.ObjectId, ref: 'vehicles' }, bidder: { type: Schema.Types.ObjectId, ref: 'users' },