Thanks a-lot for explaining I am stuck now in one place in the investors array of object its receivedMoney is not updates what api i have implemented let me share but its not working properly
The paymentSchedule is working but the investor field is not updating.
const payMonthlyInstallment = async (req, res) => {
const contractDetails = await Contract.findOneAndUpdate(
{ _id: ObjectId(req.params.id),"paymentschedule._id": ObjectId(req.body.month) },
{
$set: { "paymentschedule.$.paid": true,"paymentschedule.$.paymentRecieveDate": new Date()},
},
).populate("customer").populate({
path : 'product',
populate : {
path : 'category'
}
});
contractDetails.investor.map(async item => {
let monthlyInstallment;
switch(contractDetails?.product?.category?.profit){
case 70: monthlyInstallment = ((((((contractDetails?.product?.price - contractDetails?.downPayment) * 25)/100) + (contractDetails?.product?.price - contractDetails?.downPayment)) / contractDetails?.planOfInstallment) ); break;
case 30: monthlyInstallment = ((((((contractDetails?.product?.price - contractDetails?.downPayment) * 15)/100) + (contractDetails?.product?.price - contractDetails?.downPayment)) / contractDetails?.planOfInstallment) ); break;
case 15: monthlyInstallment = ((((((contractDetails?.product?.price - contractDetails?.downPayment) * 5)/100) + (contractDetails?.product?.price - contractDetails?.downPayment)) / contractDetails?.planOfInstallment) ); break;
default: monthlyInstallment = ((((((contractDetails?.product?.price - contractDetails?.downPayment) * 5)/100) + (contractDetails?.product?.price - contractDetails?.downPayment)) / contractDetails?.planOfInstallment) ) ; break;
}
const investorPercentage = ((item?.money/(contractDetails?.product?.price - contractDetails?.downPayment)) * 100)
const amount = monthlyInstallment * investorPercentage / 100
const updateContract = await Contract.findOneAndUpdate(
{ _id: ObjectId(req.params.id),"investor._id": ObjectId(item?._id) },
{
$set: {
"investor.$.moneyRecieved": {$add: [ "investor.$.moneyRecieved", amount ]},
}
}
)
console.log("contractDetails",updateContract)
})
res.send(contractDetails)
}