admin/modules/refund.js

  1. /* ============================================================================ *\
  2. || ########################################################################## ||
  3. || # Auction Software Marketplace Release: 0.6 Build 0.7 # ||
  4. || # ---------------------------------------------------------------------- # ||
  5. || # License # 35YAHCNR9344X6O666C123AB # ||
  6. || # ---------------------------------------------------------------------- # ||
  7. || # Copyright ©2014–2021 Develop Scripts LLC. All Rights Reserved # ||
  8. || # This file may not be redistributed in whole or significant part. # ||
  9. || # ------------- AUCTION SOFTWARE IS NOT FREE SOFTWARE ------------------ # ||
  10. || # http://www.auctionsoftwaremarketplace.com|support@auctionsoftware.com # ||
  11. || # ---------------------------------------------------------------------- # ||
  12. || ########################################################################## ||
  13. \* ============================================================================ */
  14. const dateFormat = require('dateformat')
  15. const md5 = require('md5')
  16. const _ = require('underscore')
  17. const moment = require('moment')
  18. const mysqclass = require('./mysqli').default
  19. /**
  20. * @class class to handle communication functions
  21. */
  22. class adminRefundModule {
  23. /**
  24. * Mark Refund Cart as Paid
  25. * @param {number} cartID cart ID which has to be marked as paid
  26. * @param {number} paid paid status 0 or 1
  27. * @returns {object} sql response
  28. */
  29. static async markReturnCartPaid(cartID, paid) {
  30. const mysql = {}
  31. const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
  32. const escapeData = [paid, dateNow, cartID]
  33. const strQuery = await mysqclass.mysqli(mysql, 'refund_confirm_payment_success_cart')
  34. const dataReturn = await global.mysql.query(strQuery, escapeData)
  35. return dataReturn
  36. }
  37. /**
  38. * Mark Buy Now Refund confirmation
  39. * @param {number} cartID cart ID which has to be marked as paid
  40. * @param {number} paid paid status 0 or 1
  41. * @returns {object} sql response
  42. */
  43. static async markBuyNowRefundConfirm(cartID, paid) {
  44. const mysql = {}
  45. const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
  46. const escapeData = [paid, dateNow, cartID]
  47. const strQuery = await mysqclass.mysqli(mysql, 'refund_update_payment_success_buynow')
  48. const dataReturn = await global.mysql.query(strQuery, escapeData)
  49. return dataReturn
  50. }
  51. /**
  52. * Update Buy Now Appointment
  53. * @param {number} cartID cart ID which has to be marked as paid
  54. * @param {number} aptnID appointment ID which has to be updated
  55. * @returns {object} sql response
  56. */
  57. static async updateBuynowAppointment(cartID, aptnID) {
  58. const mysql = {}
  59. const escapeData = [aptnID, cartID]
  60. const strQuery = await mysqclass.mysqli(mysql, 'update_appointment_success_buynow')
  61. const dataReturn = await global.mysql.query(strQuery, escapeData)
  62. return dataReturn
  63. }
  64. static async addAppointment(apntTime, userID, locationID, aptnDate) {
  65. const mysql = {}
  66. const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
  67. const aptnDateTime = dateFormat(
  68. new Date(`${moment(aptnDate, 'MMM Do YYYY').format('YYYY-MM-DD')} ${apntTime}:00`),
  69. 'yyyy-mm-dd HH:MM:ss',
  70. )
  71. const escapeData = [aptnDateTime, userID, locationID, dateNow, 1]
  72. const strQuery = await mysqclass.mysqli(mysql, 'insert_appointments_table')
  73. const dataReturn = await global.mysql.query(strQuery, escapeData)
  74. return dataReturn
  75. }
  76. static async insertPayLogRequest(cartID, userID, payType, gateWay) {
  77. const mysql = {}
  78. const escapeData = [userID, cartID, gateWay, payType]
  79. const strQuery = await mysqclass.mysqli(mysql, 'insert_payment_request_log')
  80. const dataReturn = await global.mysql.query(strQuery, escapeData)
  81. return dataReturn
  82. }
  83. static async updatePayLogRequest(data, id, type) {
  84. let postData = data
  85. const mysqli = {}
  86. const acceptedObjects = [
  87. 'requested_at',
  88. 'response_at',
  89. 'request',
  90. 'response',
  91. 'transactionID',
  92. 'refTransactionID',
  93. ]
  94. postData = _.omit(postData, (value, key) => {
  95. if (
  96. _.isNull(value) ||
  97. _.isUndefined(value) ||
  98. value === '' ||
  99. !_.contains(acceptedObjects, key)
  100. ) {
  101. return true
  102. }
  103. return false
  104. })
  105. let escapeData = []
  106. postData = _.omit(postData, (value, key, object) => {
  107. if (!_.contains(acceptedObjects, key)) {
  108. return true
  109. }
  110. return false
  111. })
  112. let defaultKeys = []
  113. if (type === 1) {
  114. defaultKeys = ['requested_at']
  115. } else {
  116. defaultKeys = ['response_at']
  117. }
  118. const defaultValues = [dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')]
  119. const keyswithescape = defaultKeys.concat(_.keys(postData))
  120. escapeData = defaultValues.concat(_.values(postData))
  121. mysqli.keys = _.map(keyswithescape, (val) => {
  122. return `${val} = ?`
  123. })
  124. mysqli.log_id = id
  125. const strQuery = await mysqclass.mysqli(mysqli, 'update_payment_log')
  126. console.log('strQuery', strQuery)
  127. console.log('escapeData', escapeData)
  128. const dataPromise = await global.mysql.query(strQuery, escapeData)
  129. return dataPromise
  130. }
  131. /**
  132. * Insert Pay records
  133. * @param {object} cardDetails object of the Cart Details
  134. * @param {object} cartValue object of the Cart Values
  135. * @param {object} data req.body object
  136. * @returns {object} sql response
  137. */
  138. static async authorizeInsertPayRecord(cardDetails, cartValue, data) {
  139. const mysql = {}
  140. const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
  141. const escapeData = [
  142. cartValue.id,
  143. cartValue.user_id,
  144. data.transId,
  145. data.refTransID,
  146. dateNow,
  147. 'authorize',
  148. data.accountNumber,
  149. cardDetails.card_amount,
  150. data.accountType,
  151. ]
  152. const strQuery = await mysqclass.mysqli(mysql, 'insert_refund_record')
  153. const dataReturn = await global.mysql.query(strQuery, escapeData)
  154. return dataReturn
  155. }
  156. static async getMinimumInvoiceID(cardID) {
  157. const mysql = {}
  158. const escapeData = [cardID]
  159. const strQuery = await mysqclass.mysqli(mysql, 'get_minimum_invoiceid')
  160. const dataReturn = await global.mysql.query(strQuery, escapeData)
  161. return dataReturn
  162. }
  163. static async getCartDetails(cartID) {
  164. const mysql = {}
  165. const escapeData = [cartID]
  166. const strQuery = await mysqclass.mysqli(mysql, 'return_get_cart_all_data')
  167. const dataReturn = await global.mysql.query(strQuery, escapeData)
  168. return dataReturn
  169. }
  170. static async allCartItems(req, data, count) {
  171. let mysql = ''
  172. let row = ''
  173. let where = ''
  174. const order = 'p.date_closed asc'
  175. const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
  176. where +=
  177. count === 1
  178. ? `and b.returncart_id = ${req.body.returncart_id}`
  179. : ' and b.returncart_id = 0'
  180. row = 'return_cart_all_item'
  181. let uidc = 0
  182. if (req.user) {
  183. uidc = typeof req.user.id === 'undefined' ? 0 : req.user.id
  184. }
  185. const escapeData = [req.body.invoice_id]
  186. const ordergor = order === '' ? '' : `order by ${order}`
  187. mysql = {
  188. where,
  189. order: ordergor,
  190. dateNow,
  191. userid: uidc,
  192. }
  193. const strQuery = await mysqclass.mysqli(mysql, row)
  194. const dataReturn = await global.mysql.query(strQuery, escapeData)
  195. return dataReturn
  196. }
  197. static async cartLocationDetails(cartID) {
  198. const mysql = {}
  199. const escapeData = [cartID]
  200. const strQuery = await mysqclass.mysqli(mysql, 'return_get_cart_location_data')
  201. const dataReturn = await global.mysql.query(strQuery, escapeData)
  202. return dataReturn
  203. }
  204. /**
  205. * Get Pay records
  206. * @param {number} cartID cart ID which has to be marked as paid
  207. * @returns {object} sql response
  208. */
  209. static async getPayRecords(cartID) {
  210. const mysql = {}
  211. const escapeData = [cartID]
  212. const strQuery = await mysqclass.mysqli(mysql, 'return_get_cart_pay_records')
  213. const dataReturn = await global.mysql.query(strQuery, escapeData)
  214. return dataReturn
  215. }
  216. }
  217. module.exports.default = adminRefundModule