Wallet.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { appApi } from 'src/boot/axios.js'
  2. import APIRepository from '../classes/APIRepository.js'
  3. import { Wallet, WalletList } from 'src/models/Wallet.js'
  4. export default class WalletAPI extends APIRepository {
  5. constructor() {
  6. super('wallets', appApi)
  7. this.APIAdresses = {
  8. base: '/accounting/wallets',
  9. deposit: '/accounting/transactions/deposit'
  10. }
  11. this.restUrl = (id) => this.url + '/' + id
  12. /* Setting the callback functions for the CRUD operations. */
  13. this.setCrudCallbacks({
  14. get: (response) => { return new Wallet(response.data) },
  15. post: (response) => { return new Wallet(response.data) },
  16. put: (response) => { return new Wallet(response.data) },
  17. delete: (response) => { return response.data }
  18. })
  19. }
  20. index(data) {
  21. return this.sendRequest({
  22. apiMethod: 'get',
  23. api: this.api,
  24. request: this.APIAdresses.base,
  25. data: this.getNormalizedSendData({
  26. owner: null, // Number
  27. page: 1 // Number
  28. }, data),
  29. resolveCallback: (response) => {
  30. const paginate = response.data
  31. const results = response.data.results
  32. delete paginate.results
  33. return {
  34. list: new WalletList(results),
  35. paginate
  36. // {
  37. // "count": 1,
  38. // "num_pages": 1,
  39. // "per_page": 10,
  40. // "current": 1,
  41. // "next": null,
  42. // "previous": null,
  43. // }
  44. }
  45. },
  46. rejectCallback: (error) => {
  47. return error
  48. }
  49. })
  50. }
  51. deposit(data) {
  52. const amount = data.amount ? data.amount : 0
  53. const invoice = data.invoice ? data.invoice : null
  54. const instalment = data.instalment ? data.instalment : null
  55. const sendData = { amount }
  56. if (invoice) {
  57. sendData.invoice = invoice
  58. }
  59. if (instalment) {
  60. sendData.instalment = instalment
  61. }
  62. return this.sendRequest({
  63. apiMethod: 'post',
  64. api: this.api,
  65. request: this.APIAdresses.deposit,
  66. data: sendData,
  67. resolveCallback: (response) => {
  68. return response.data.url // String -> redirect url // thankyou
  69. },
  70. rejectCallback: (error) => {
  71. return error
  72. }
  73. })
  74. }
  75. getMyWallet (userId) {
  76. return this.sendRequest({
  77. apiMethod: 'get',
  78. api: this.api,
  79. request: this.APIAdresses.base,
  80. data: { owner: userId },
  81. resolveCallback: (response) => {
  82. return new Wallet(response.data.results[0])
  83. },
  84. rejectCallback: (error) => {
  85. return error
  86. }
  87. })
  88. }
  89. }