Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. const getPayoutsForCoachByCoachId = async (req, res) => {
  2. try {
  3. const payouts = await payoutData.getPayoutsByCoachId(req.user._id);
  4. const transactions = await transactionHistoryData.getCompletedTransactionsBySellerId(req.user._id);
  5. const coach = await userData.getById(req.user._id);
  6. const exchangeRates = await exchangeData.getCurrentRates();
  7. const currencyConverterInst = CurrencyConverter(exchangeRates);
  8.  
  9. payouts.sort((a, b) => {
  10. if (a.timeOfCreation.getMilliseconds() < b.timeOfCreation.getMilliseconds()) {
  11. return 1;
  12. }
  13.  
  14. if (a.timeOfCreation.getMilliseconds() > b.timeOfCreation.getMilliseconds()) {
  15. return -1;
  16. }
  17.  
  18. return 0;
  19. });
  20.  
  21. const currentBalance = transactions.filter(transaction => transaction.timeOfCreation.getMilliseconds() > payouts[0].timeOfCreation.getMilliseconds())
  22. .reduce((acc, transaction) => {
  23. if (transaction.priceInMoney.currency === coach.paymentDetails.baseCurrency) {
  24. acc.value += transaction.priceInMoney.value;
  25. } else {
  26. const convertedValue = transaction.priceInMoney.currency === currencies.gbp
  27. ? currencyConverterInst.convertFromGBP(transaction.priceInMoney.value, coach.paymentDetails.baseCurrency)
  28. : currencyConverterInst.convertToGBP(transaction.priceInMoney.currency, transaction.priceInMoney.value);
  29. acc.value += convertedValue;
  30. }
  31.  
  32. return acc;
  33. }, { value: 0, currency: coach.paymentDetails.baseCurrency });
  34.  
  35. const totalPaymentsReceived = payouts.reduce((acc, payout) => {
  36. if (payout.sellerObtainSum.currency === coach.paymentDetails.baseCurrency) {
  37. acc.value += payout.sellerObtainSum.value;
  38. } else {
  39. const convertedSum = payout.sellerObtainSum.currency === currencies.gbp
  40. ? currencyConverterInst.convertFromGBP(payout.sellerObtainSum.value, coach.paymentDetails.baseCurrency)
  41. : currencyConverterInst.convertToGBP(payout.sellerObtainSum.currency, payout.sellerObtainSum.value);
  42. acc.value += convertedSum;
  43. }
  44. }, { value: 0, currency: coach.paymentDetails.baseCurrency });
  45.  
  46. return {
  47. payouts,
  48. totalPaymentsReceived,
  49. currentBalance,
  50. };
  51. } catch (err) {
  52. console.log(err);
  53. res.error({ message: notifMsgs.errors.COULD_NOT_CREATE_PAYOUT });
  54. }
  55. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement