Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const lc = require('./log_converters.js')
  2.  
  3. /* Returns a list of objects that contains one field for the store name and the number of times Coopay has been used for the given store */
  4. async function getNumberOfPaymentsByStore (numberOfResults) {
  5.   const tmp = await lc.getPaymentResults()
  6.   const payments = tmp.success
  7.   const resultDataStructure = await lc.structureResultData(payments, 0)
  8.   let result = resultDataStructure.result
  9.   let stores = resultDataStructure.stores
  10.  
  11.   for (let i = 0; i < result.length; i++) {
  12.     let storeName = result[i].storeName
  13.     stores.forEach(e => { if (e === storeName) result[i].data++ })
  14.   }
  15.   result.sort((obj1, obj2) => { return obj2.data - obj1.data })
  16.   return result.slice(0, numberOfResults)
  17. }
  18.  
  19. /* Returns a list of objects that contains one field for the store name and the biggest sum payed with Coopay in that given store */
  20. async function getBiggestShoppingSumByStore (numberOfStores) {
  21.   const tmp = await lc.getPaymentResults()
  22.   const payments = tmp.success
  23.   const removeComma = input => input.replace(/,/g, '')
  24.  
  25.   const storesWithResults = payments.map(root => root.confirmation || root).reduce((aggregate, transaction) => {
  26.     const storeNumber = parseInt(transaction.storeNumber)
  27.     if (!aggregate.hasOwnProperty(storeNumber)) {
  28.       aggregate[storeNumber] = {
  29.         storeName: transaction.storeName.replace(/,/g, ' '),
  30.         storeNumber: storeNumber,
  31.         largestPayment: transaction.totalSum,
  32.         timestamp: transaction.dateTime
  33.       }
  34.     }
  35.     if (parseFloat(removeComma(aggregate[storeNumber].largestPayment)) < parseFloat(removeComma(transaction.totalSum))) {
  36.       aggregate[storeNumber].largestPayment = transaction.totalSum
  37.       aggregate[storeNumber].timestamp = transaction.dateTime
  38.     }
  39.     return aggregate
  40.   }, {})
  41.  
  42.   return Object.values(storesWithResults)
  43.     .sort((a, b) => parseFloat(removeComma(a.largestPayment)) < parseFloat(removeComma(b.largestPayment)) ? 1 : -1)
  44.     .slice(0, numberOfStores)
  45. }
  46.  
  47. /* Returns a numeric value representing number of payments done with Coopay the last hour */
  48. async function getNumberOfPaymentsLastHour () {
  49.   const tmp = await lc.getPaymentResults()
  50.   const currentHour = () => {
  51.     return new Date().getHours() < 10 ? "0" + new Date().getHours().toString() : new Date().getHours().toString()
  52.   }
  53.   const numberOfPaymentsLastHour = []
  54.   tmp.success.forEach(payment => {
  55.     if (payment.dateTime.split(',').pop().substring(0, 2) === currentHour()) numberOfPaymentsLastHour.push(payment)
  56.   })
  57.   return numberOfPaymentsLastHour.length
  58. }
  59.  
  60. /* Returns a numeric value representing the number of failed payments today */
  61. async function getNumberOfFailedTransactionsToday () {
  62.   const result = await lc.getPaymentResults()
  63.   let count = 0
  64.   result.failed.forEach(e => {
  65.     if (e.result === 'TRANSACTION_FAILED') count++
  66.   })
  67.   return count
  68. }
  69.  
  70. module.exports = {
  71.   getNumberOfPaymentsByStore,
  72.   getNumberOfPaymentsLastHour,
  73.   getBiggestShoppingSumByStore,
  74.   getNumberOfFailedTransactionsToday
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement