Basket.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. import { appApi } from 'src/boot/axios.js'
  2. import { Invoice } from 'src/models/Invoice.js'
  3. import APIRepository from '../classes/APIRepository.js'
  4. import { Basket, BasketList } from 'src/models/Basket.js'
  5. export default class BasketAPI extends APIRepository {
  6. constructor() {
  7. super('package', appApi)
  8. this.APIAdresses = {
  9. base: '/store/baskets',
  10. checkoutReview: '/store/baskets/checkout_review',
  11. listOrders: '/store/baskets/list_orders',
  12. byId: (id) => '/store/baskets/' + id,
  13. send: (id) => '/store/baskets/' + id + '/send',
  14. setAddress: (id) => '/store/baskets/' + id + '/set_address',
  15. createInvoice: (id) => '/store/baskets/' + id + '/create_invoice',
  16. submitDiscountCode: (id) => '/store/baskets/' + id + '/submit_discount_code',
  17. removeDiscountCode: (id) => '/store/baskets/' + id + '/remove_discount_code'
  18. }
  19. this.CacheList = {
  20. base: this.name + this.APIAdresses.base
  21. }
  22. this.restUrl = (id) => this.APIAdresses.base + '/' + id
  23. /* Setting the callback functions for the CRUD operations. */
  24. this.setCrudCallbacks({
  25. get: (response) => { return new Basket(response.data) },
  26. post: (response) => { return new Basket(response.data) },
  27. put: (response) => { return new Basket(response.data) },
  28. delete: (response) => { return response.data }
  29. })
  30. }
  31. index(data) {
  32. return this.sendRequest({
  33. apiMethod: 'get',
  34. api: this.api,
  35. request: this.APIAdresses.base,
  36. data: this.getNormalizedSendData({
  37. category: null, // Number
  38. per_page: 10, // Number
  39. page: 1 // Number
  40. }, data),
  41. resolveCallback: (response) => {
  42. const paginate = response.data
  43. const results = response.data.results
  44. delete paginate.results
  45. return {
  46. list: new BasketList(results),
  47. paginate
  48. // {
  49. // "count": 1,
  50. // "num_pages": 1,
  51. // "per_page": 10,
  52. // "current": 1,
  53. // "next": null,
  54. // "previous": null,
  55. // }
  56. }
  57. },
  58. rejectCallback: (error) => {
  59. return error
  60. }
  61. })
  62. }
  63. listOrders(data) {
  64. return this.sendRequest({
  65. apiMethod: 'get',
  66. api: this.api,
  67. request: this.APIAdresses.listOrders,
  68. data: this.getNormalizedSendData({
  69. category: null, // Number
  70. per_page: 10, // Number
  71. page: 1 // Number
  72. }, data),
  73. resolveCallback: (response) => {
  74. const paginate = response.data
  75. const results = response.data.results
  76. delete paginate.results
  77. return {
  78. list: new BasketList(results),
  79. paginate
  80. // {
  81. // "count": 1,
  82. // "num_pages": 1,
  83. // "per_page": 10,
  84. // "current": 1,
  85. // "next": null,
  86. // "previous": null,
  87. // }
  88. }
  89. },
  90. rejectCallback: (error) => {
  91. return error
  92. }
  93. })
  94. }
  95. get (id) {
  96. return this.sendRequest({
  97. apiMethod: 'get',
  98. api: this.api,
  99. request: this.APIAdresses.byId(id),
  100. resolveCallback: (response) => {
  101. return new Basket(response.data)
  102. },
  103. rejectCallback: (error) => {
  104. return error
  105. }
  106. })
  107. }
  108. checkoutReview () {
  109. return this.sendRequest({
  110. apiMethod: 'get',
  111. api: this.api,
  112. request: this.APIAdresses.checkoutReview,
  113. resolveCallback: (response) => {
  114. return new Basket(response.data)
  115. },
  116. rejectCallback: (error) => {
  117. return error
  118. }
  119. })
  120. }
  121. setAddress (basketId, addressData) {
  122. return this.sendRequest({
  123. apiMethod: 'put',
  124. api: this.api,
  125. request: this.APIAdresses.setAddress(basketId),
  126. data: this.getNormalizedSendData({
  127. province: null, // String
  128. city: null, // String
  129. address: null, // String
  130. postal_code: null // String
  131. }, addressData),
  132. resolveCallback: (response) => {
  133. return new Basket(response.data)
  134. },
  135. rejectCallback: (error) => {
  136. return error
  137. }
  138. })
  139. }
  140. submitDiscountCode (basketId, code) {
  141. return this.sendRequest({
  142. apiMethod: 'put',
  143. api: this.api,
  144. request: this.APIAdresses.submitDiscountCode(basketId),
  145. data: this.getNormalizedSendData({
  146. code: null // String
  147. }, { code }),
  148. resolveCallback: (response) => {
  149. return new Basket(response.data)
  150. },
  151. rejectCallback: (error) => {
  152. return error
  153. }
  154. })
  155. }
  156. removeDiscountCode (basketId) {
  157. return this.sendRequest({
  158. apiMethod: 'put',
  159. api: this.api,
  160. request: this.APIAdresses.removeDiscountCode(basketId),
  161. resolveCallback: (response) => {
  162. return new Basket(response.data)
  163. },
  164. rejectCallback: (error) => {
  165. return error
  166. }
  167. })
  168. }
  169. send (basketId) {
  170. return this.sendRequest({
  171. apiMethod: 'put',
  172. api: this.api,
  173. request: this.APIAdresses.send(basketId),
  174. resolveCallback: (response) => {
  175. return new Basket(response.data)
  176. },
  177. rejectCallback: (error) => {
  178. return error
  179. }
  180. })
  181. }
  182. createInvoice (basketId, owner) {
  183. return this.sendRequest({
  184. apiMethod: 'put',
  185. api: this.api,
  186. request: this.APIAdresses.createInvoice(basketId),
  187. data: this.getNormalizedSendData({
  188. owner: null // String
  189. }, { owner }),
  190. resolveCallback: (response) => {
  191. return new Invoice(response.data)
  192. },
  193. rejectCallback: (error) => {
  194. return error
  195. }
  196. })
  197. }
  198. }