diff --git a/v1/src/apps/private/proposals/services.js b/v1/src/apps/private/proposals/services.js index e3b3bb5..3844664 100644 --- a/v1/src/apps/private/proposals/services.js +++ b/v1/src/apps/private/proposals/services.js @@ -120,7 +120,7 @@ const patchProposal = async(req, res) => { throw "proposal data not sent"; } await Model.findByIdAndUpdate( elementId , data ); - await onPatchEvent( elementId , data ); + await onPatchEvent( req.context.userId, elementId, data ); return res.send( await Model.findById( elementId ) ); }catch(error){ console.error( error ); @@ -137,7 +137,7 @@ const postProposal = async(req, res) => { const proposal = new Model( data ); await proposal.save(); - await onPostEvent(proposal.id, data); + await onPostEvent( req.context.userId, proposal.id, data); return res.send( proposal ); }catch(error){ console.error( error ); diff --git a/v1/src/lib/Handlers/Events/Proposals/index.js b/v1/src/lib/Handlers/Events/Proposals/index.js index 44c1370..ec1d0b4 100644 --- a/v1/src/lib/Handlers/Events/Proposals/index.js +++ b/v1/src/lib/Handlers/Events/Proposals/index.js @@ -15,8 +15,8 @@ const productsModel = getModel('products'); /** * When the proposal is created then the load owner should be notified */ -async function onProposalCreate( proposal_id ){ - const proposal = await proposalsModel.findById( proposal_id ); +async function onProposalCreate( userId, proposalId ){ + const proposal = await proposalsModel.findById( proposalId ); const load = await loadsModel.findById( proposal.load ); const user = await usersModel.findById( load.posted_by ); @@ -34,13 +34,15 @@ async function onProposalCreate( proposal_id ){ /** * When a proposal is removed from the load, it is considered as rejected */ -async function onProposalRejected( proposal_id ){ - const proposal = await proposalsModel.findById( proposal_id ); +async function onProposalRejected( userId, proposalId ){ + const proposal = await proposalsModel.findById( proposalId ); /// Update Proposal: /// Remove shipper - await proposalsModel.findByIdAndUpdate( proposal_id , { - shipper : null + await proposalsModel.findByIdAndUpdate( proposalId , { + shipper : null, + accepted_by : null, + accepted_date : null } ); /// Update Load: @@ -56,19 +58,21 @@ async function onProposalRejected( proposal_id ){ /** * When a proposal is accepted by the shipper */ -async function onProposalAccepted( proposal_id ){ - const proposal = await proposalsModel.findById( proposal_id ); - const shipper_user = await usersModel.findById( proposal.accepted_by ); +async function onProposalAccepted( userId, proposalId ){ + const shipper_user = await usersModel.findById( userId ); const shipper = await companiesModel.findById( shipper_user.company ); - const vehicle = await vehiclesModel.findById( proposal.vehicle ); - const load = await loadsModel.findById( proposal.load ); /// Update Proposal: /// Adding shipper to proposal - await proposalsModel.findByIdAndUpdate( proposal_id , { - shipper : shipper.id + await proposalsModel.findByIdAndUpdate( proposalId , { + shipper : shipper.id, + accepted_by : userId, + accepted_date : new Date().toISOString() } ); + const proposal = await proposalsModel.findById( proposalId ); + const vehicle = await vehiclesModel.findById( proposal.vehicle ); + /// Update Load: /// Add carrier, driver and vehicle await loadsModel.findByIdAndUpdate( proposal.load, { @@ -78,6 +82,7 @@ async function onProposalAccepted( proposal_id ){ bidder : proposal.bidder // Who created the proposal (carrier user) } ); + const load = await loadsModel.findById( proposal.load ); const carrier = await companiesModel.findById( load.carrier ); const product = await productsModel.findById( load.product ); const driver = await usersModel.findById( load.driver ); diff --git a/v1/src/lib/Handlers/Proposals.handler.js b/v1/src/lib/Handlers/Proposals.handler.js index 00ce276..3bd20cc 100644 --- a/v1/src/lib/Handlers/Proposals.handler.js +++ b/v1/src/lib/Handlers/Proposals.handler.js @@ -16,9 +16,9 @@ const notificationsModel = getModel('notifications'); * @param {*} newProposalData * @returns */ -async function onPostEvent( id , newProposalData ){ +async function onPostEvent( userId, proposalId ,newProposalData ){ /// When a post event happens it is assumed that a proposal is created - ProposalsEvents.onProposalCreate( id ); + ProposalsEvents.onProposalCreate( userId, proposalId ); } /** @@ -28,11 +28,11 @@ async function onPostEvent( id , newProposalData ){ * @param {*} newProposalData * @returns */ -async function onPatchEvent( id , newProposalData ){ +async function onPatchEvent( userId, proposalId , newProposalData ){ if( !newProposalData.is_accepted ){ - ProposalsEvents.onProposalRejected( id ); + ProposalsEvents.onProposalRejected( userId, proposalId ); }else{ - ProposalsEvents.onProposalAccepted( id ); + ProposalsEvents.onProposalAccepted( userId, proposalId ); } }