fix(proposal events): Add userId to update accepted_by and reorder event to update all objects in time
This commit is contained in:
@@ -120,7 +120,7 @@ const patchProposal = async(req, res) => {
|
|||||||
throw "proposal data not sent";
|
throw "proposal data not sent";
|
||||||
}
|
}
|
||||||
await Model.findByIdAndUpdate( elementId , data );
|
await Model.findByIdAndUpdate( elementId , data );
|
||||||
await onPatchEvent( elementId , data );
|
await onPatchEvent( req.context.userId, elementId, data );
|
||||||
return res.send( await Model.findById( elementId ) );
|
return res.send( await Model.findById( elementId ) );
|
||||||
}catch(error){
|
}catch(error){
|
||||||
console.error( error );
|
console.error( error );
|
||||||
@@ -137,7 +137,7 @@ const postProposal = async(req, res) => {
|
|||||||
const proposal = new Model( data );
|
const proposal = new Model( data );
|
||||||
await proposal.save();
|
await proposal.save();
|
||||||
|
|
||||||
await onPostEvent(proposal.id, data);
|
await onPostEvent( req.context.userId, proposal.id, data);
|
||||||
return res.send( proposal );
|
return res.send( proposal );
|
||||||
}catch(error){
|
}catch(error){
|
||||||
console.error( error );
|
console.error( error );
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ const productsModel = getModel('products');
|
|||||||
/**
|
/**
|
||||||
* When the proposal is created then the load owner should be notified
|
* When the proposal is created then the load owner should be notified
|
||||||
*/
|
*/
|
||||||
async function onProposalCreate( proposal_id ){
|
async function onProposalCreate( userId, proposalId ){
|
||||||
const proposal = await proposalsModel.findById( proposal_id );
|
const proposal = await proposalsModel.findById( proposalId );
|
||||||
const load = await loadsModel.findById( proposal.load );
|
const load = await loadsModel.findById( proposal.load );
|
||||||
const user = await usersModel.findById( load.posted_by );
|
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
|
* When a proposal is removed from the load, it is considered as rejected
|
||||||
*/
|
*/
|
||||||
async function onProposalRejected( proposal_id ){
|
async function onProposalRejected( userId, proposalId ){
|
||||||
const proposal = await proposalsModel.findById( proposal_id );
|
const proposal = await proposalsModel.findById( proposalId );
|
||||||
|
|
||||||
/// Update Proposal:
|
/// Update Proposal:
|
||||||
/// Remove shipper
|
/// Remove shipper
|
||||||
await proposalsModel.findByIdAndUpdate( proposal_id , {
|
await proposalsModel.findByIdAndUpdate( proposalId , {
|
||||||
shipper : null
|
shipper : null,
|
||||||
|
accepted_by : null,
|
||||||
|
accepted_date : null
|
||||||
} );
|
} );
|
||||||
|
|
||||||
/// Update Load:
|
/// Update Load:
|
||||||
@@ -56,19 +58,21 @@ async function onProposalRejected( proposal_id ){
|
|||||||
/**
|
/**
|
||||||
* When a proposal is accepted by the shipper
|
* When a proposal is accepted by the shipper
|
||||||
*/
|
*/
|
||||||
async function onProposalAccepted( proposal_id ){
|
async function onProposalAccepted( userId, proposalId ){
|
||||||
const proposal = await proposalsModel.findById( proposal_id );
|
const shipper_user = await usersModel.findById( userId );
|
||||||
const shipper_user = await usersModel.findById( proposal.accepted_by );
|
|
||||||
const shipper = await companiesModel.findById( shipper_user.company );
|
const shipper = await companiesModel.findById( shipper_user.company );
|
||||||
const vehicle = await vehiclesModel.findById( proposal.vehicle );
|
|
||||||
const load = await loadsModel.findById( proposal.load );
|
|
||||||
|
|
||||||
/// Update Proposal:
|
/// Update Proposal:
|
||||||
/// Adding shipper to proposal
|
/// Adding shipper to proposal
|
||||||
await proposalsModel.findByIdAndUpdate( proposal_id , {
|
await proposalsModel.findByIdAndUpdate( proposalId , {
|
||||||
shipper : shipper.id
|
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:
|
/// Update Load:
|
||||||
/// Add carrier, driver and vehicle
|
/// Add carrier, driver and vehicle
|
||||||
await loadsModel.findByIdAndUpdate( proposal.load, {
|
await loadsModel.findByIdAndUpdate( proposal.load, {
|
||||||
@@ -78,6 +82,7 @@ async function onProposalAccepted( proposal_id ){
|
|||||||
bidder : proposal.bidder // Who created the proposal (carrier user)
|
bidder : proposal.bidder // Who created the proposal (carrier user)
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
const load = await loadsModel.findById( proposal.load );
|
||||||
const carrier = await companiesModel.findById( load.carrier );
|
const carrier = await companiesModel.findById( load.carrier );
|
||||||
const product = await productsModel.findById( load.product );
|
const product = await productsModel.findById( load.product );
|
||||||
const driver = await usersModel.findById( load.driver );
|
const driver = await usersModel.findById( load.driver );
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ const notificationsModel = getModel('notifications');
|
|||||||
* @param {*} newProposalData
|
* @param {*} newProposalData
|
||||||
* @returns
|
* @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
|
/// 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
|
* @param {*} newProposalData
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
async function onPatchEvent( id , newProposalData ){
|
async function onPatchEvent( userId, proposalId , newProposalData ){
|
||||||
if( !newProposalData.is_accepted ){
|
if( !newProposalData.is_accepted ){
|
||||||
ProposalsEvents.onProposalRejected( id );
|
ProposalsEvents.onProposalRejected( userId, proposalId );
|
||||||
}else{
|
}else{
|
||||||
ProposalsEvents.onProposalAccepted( id );
|
ProposalsEvents.onProposalAccepted( userId, proposalId );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user