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' },