Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const getPayoutsForCoachByCoachId = async (req, res) => {
- try {
- const payouts = await payoutData.getPayoutsByCoachId(req.user._id);
- const transactions = await transactionHistoryData.getCompletedTransactionsBySellerId(req.user._id);
- const coach = await userData.getById(req.user._id);
- const exchangeRates = await exchangeData.getCurrentRates();
- const currencyConverterInst = CurrencyConverter(exchangeRates);
- payouts.sort((a, b) => {
- if (a.timeOfCreation.getMilliseconds() < b.timeOfCreation.getMilliseconds()) {
- return 1;
- }
- if (a.timeOfCreation.getMilliseconds() > b.timeOfCreation.getMilliseconds()) {
- return -1;
- }
- return 0;
- });
- const currentBalance = transactions.filter(transaction => transaction.timeOfCreation.getMilliseconds() > payouts[0].timeOfCreation.getMilliseconds())
- .reduce((acc, transaction) => {
- if (transaction.priceInMoney.currency === coach.paymentDetails.baseCurrency) {
- acc.value += transaction.priceInMoney.value;
- } else {
- const convertedValue = transaction.priceInMoney.currency === currencies.gbp
- ? currencyConverterInst.convertFromGBP(transaction.priceInMoney.value, coach.paymentDetails.baseCurrency)
- : currencyConverterInst.convertToGBP(transaction.priceInMoney.currency, transaction.priceInMoney.value);
- acc.value += convertedValue;
- }
- return acc;
- }, { value: 0, currency: coach.paymentDetails.baseCurrency });
- const totalPaymentsReceived = payouts.reduce((acc, payout) => {
- if (payout.sellerObtainSum.currency === coach.paymentDetails.baseCurrency) {
- acc.value += payout.sellerObtainSum.value;
- } else {
- const convertedSum = payout.sellerObtainSum.currency === currencies.gbp
- ? currencyConverterInst.convertFromGBP(payout.sellerObtainSum.value, coach.paymentDetails.baseCurrency)
- : currencyConverterInst.convertToGBP(payout.sellerObtainSum.currency, payout.sellerObtainSum.value);
- acc.value += convertedSum;
- }
- }, { value: 0, currency: coach.paymentDetails.baseCurrency });
- return {
- payouts,
- totalPaymentsReceived,
- currentBalance,
- };
- } catch (err) {
- console.log(err);
- res.error({ message: notifMsgs.errors.COULD_NOT_CREATE_PAYOUT });
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement