@infrab4a/connect-angular 5.8.3 → 5.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/eslint.config.js +18 -0
  2. package/index.ts +1 -0
  3. package/karma.conf.js +32 -0
  4. package/ng-package.json +8 -0
  5. package/package.json +4 -24
  6. package/project.json +37 -0
  7. package/src/angular-connect.module.ts +270 -0
  8. package/src/angular-elastic-search.module.ts +23 -0
  9. package/src/angular-firebase-auth.module.ts +101 -0
  10. package/src/angular-firestore.module.ts +407 -0
  11. package/src/angular-hasura-graphql.module.ts +268 -0
  12. package/src/angular-vertex-search.module.ts +23 -0
  13. package/src/consts/backend-url.const.ts +1 -0
  14. package/src/consts/category-structure.ts +1 -0
  15. package/src/consts/default-shop.const.ts +1 -0
  16. package/src/consts/es-config.const.ts +1 -0
  17. package/src/consts/firebase-const.ts +5 -0
  18. package/src/consts/hasura-options.const.ts +1 -0
  19. package/src/consts/index.ts +8 -0
  20. package/src/consts/persistence.const.ts +1 -0
  21. package/src/consts/storage-base-url.const.ts +1 -0
  22. package/src/consts/vertex-config.const.ts +1 -0
  23. package/src/helpers/index.ts +1 -0
  24. package/src/helpers/mobile-operation-system-checker.helper.ts +10 -0
  25. package/src/index.ts +6 -0
  26. package/src/interfaces/catalog-strategies.interface.ts +36 -0
  27. package/src/interfaces/category-facades.interface.ts +7 -0
  28. package/src/interfaces/index.ts +2 -0
  29. package/src/persistence/cookie-data-persistence.ts +21 -0
  30. package/src/persistence/data-persistence.ts +7 -0
  31. package/src/persistence/index.ts +2 -0
  32. package/src/services/auth.service.ts +39 -0
  33. package/src/services/cart/cart-services.facade.ts +14 -0
  34. package/src/services/cart/index.ts +1 -0
  35. package/src/services/cart.service.ts +124 -0
  36. package/src/services/catalog/adapters/category-structure.adapter.ts +5 -0
  37. package/src/services/catalog/adapters/index.ts +3 -0
  38. package/src/services/catalog/adapters/new-category-structure.adapter.ts +42 -0
  39. package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
  40. package/src/services/catalog/catalog.service.ts +153 -0
  41. package/src/services/catalog/category.service.ts +56 -0
  42. package/src/services/catalog/context/catalog-search.context.ts +59 -0
  43. package/src/services/catalog/enums/index.ts +1 -0
  44. package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
  45. package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
  46. package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
  47. package/src/services/catalog/facades/category-repository.facade.ts +10 -0
  48. package/src/services/catalog/facades/category-service.facade.ts +25 -0
  49. package/{services/catalog/facades/index.d.ts → src/services/catalog/facades/index.ts} +5 -5
  50. package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
  51. package/src/services/catalog/helpers/brand-manager.helper.ts +69 -0
  52. package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
  53. package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
  54. package/src/services/catalog/helpers/index.ts +4 -0
  55. package/src/services/catalog/helpers/product-fields.helper.ts +39 -0
  56. package/src/services/catalog/index.ts +7 -0
  57. package/src/services/catalog/models/category-with-tree.model.ts +7 -0
  58. package/src/services/catalog/models/index.ts +1 -0
  59. package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
  60. package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
  61. package/src/services/catalog/services/catalog-repository.service.ts +20 -0
  62. package/{services/catalog/services/index.d.ts → src/services/catalog/services/index.ts} +4 -4
  63. package/src/services/catalog/services/product-management.facade.ts +20 -0
  64. package/src/services/catalog/strategies/category-search.strategy.ts +168 -0
  65. package/src/services/catalog/strategies/index.ts +3 -0
  66. package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
  67. package/src/services/catalog/strategies/term-search.strategy.ts +163 -0
  68. package/src/services/catalog/strategies/types/strategy-params.type.ts +59 -0
  69. package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
  70. package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
  71. package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
  72. package/src/services/catalog/types/index.ts +5 -0
  73. package/src/services/catalog/types/method-params.type.ts +21 -0
  74. package/src/services/catalog/types/product-sort.type.ts +3 -0
  75. package/src/services/catalog/wishlist.service.ts +364 -0
  76. package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
  77. package/src/services/checkout/checkout-repositories.facade.ts +10 -0
  78. package/{services/checkout/index.d.ts → src/services/checkout/index.ts} +2 -2
  79. package/src/services/checkout-subscription.service.ts +76 -0
  80. package/src/services/checkout.service.ts +213 -0
  81. package/src/services/coupon/coupon-repositories.facade.ts +11 -0
  82. package/{services/coupon/index.d.ts → src/services/coupon/index.ts} +1 -1
  83. package/src/services/coupon/types/coupon-params.type.ts +15 -0
  84. package/src/services/coupon.service.ts +347 -0
  85. package/src/services/errors/group-invalid-coupon.error.ts +9 -0
  86. package/src/services/errors/index.ts +2 -0
  87. package/src/services/errors/invalid-coupon.error.ts +7 -0
  88. package/src/services/helpers/index.ts +1 -0
  89. package/src/services/helpers/util.helper.ts +17 -0
  90. package/src/services/home-shop/home-shop-repositories.facade.ts +11 -0
  91. package/{services/home-shop/index.d.ts → src/services/home-shop/index.ts} +1 -1
  92. package/src/services/home-shop.service.ts +210 -0
  93. package/src/services/index.ts +12 -0
  94. package/src/services/order-product-review.service.ts +135 -0
  95. package/src/services/order-recurrence.service.ts +115 -0
  96. package/src/services/order.service.ts +23 -0
  97. package/src/services/shared/configuration.facade.ts +21 -0
  98. package/src/services/shared/index.ts +1 -0
  99. package/src/services/types/index.ts +4 -0
  100. package/src/services/types/pending-product-review.type.ts +12 -0
  101. package/src/services/types/product-review-create.type.ts +15 -0
  102. package/src/services/types/required-checkout-data.type.ts +3 -0
  103. package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
  104. package/src/types/firebase-app-config.type.ts +1 -0
  105. package/src/types/index.ts +1 -0
  106. package/tsconfig.json +17 -0
  107. package/tsconfig.lib.json +13 -0
  108. package/tsconfig.lib.prod.json +13 -0
  109. package/tsconfig.spec.json +17 -0
  110. package/angular-connect.module.d.ts +0 -36
  111. package/angular-elastic-search.module.d.ts +0 -9
  112. package/angular-firebase-auth.module.d.ts +0 -11
  113. package/angular-firestore.module.d.ts +0 -17
  114. package/angular-hasura-graphql.module.d.ts +0 -14
  115. package/angular-vertex-search.module.d.ts +0 -9
  116. package/consts/backend-url.const.d.ts +0 -1
  117. package/consts/category-structure.d.ts +0 -1
  118. package/consts/default-shop.const.d.ts +0 -1
  119. package/consts/es-config.const.d.ts +0 -1
  120. package/consts/firebase-const.d.ts +0 -4
  121. package/consts/hasura-options.const.d.ts +0 -1
  122. package/consts/index.d.ts +0 -8
  123. package/consts/persistence.const.d.ts +0 -1
  124. package/consts/storage-base-url.const.d.ts +0 -1
  125. package/consts/vertex-config.const.d.ts +0 -1
  126. package/esm2020/angular-connect.module.mjs +0 -293
  127. package/esm2020/angular-elastic-search.module.mjs +0 -34
  128. package/esm2020/angular-firebase-auth.module.mjs +0 -141
  129. package/esm2020/angular-firestore.module.mjs +0 -597
  130. package/esm2020/angular-hasura-graphql.module.mjs +0 -421
  131. package/esm2020/angular-vertex-search.module.mjs +0 -34
  132. package/esm2020/consts/backend-url.const.mjs +0 -2
  133. package/esm2020/consts/category-structure.mjs +0 -2
  134. package/esm2020/consts/default-shop.const.mjs +0 -2
  135. package/esm2020/consts/es-config.const.mjs +0 -2
  136. package/esm2020/consts/firebase-const.mjs +0 -5
  137. package/esm2020/consts/hasura-options.const.mjs +0 -2
  138. package/esm2020/consts/index.mjs +0 -9
  139. package/esm2020/consts/persistence.const.mjs +0 -2
  140. package/esm2020/consts/storage-base-url.const.mjs +0 -2
  141. package/esm2020/consts/vertex-config.const.mjs +0 -2
  142. package/esm2020/helpers/index.mjs +0 -2
  143. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  144. package/esm2020/index.mjs +0 -7
  145. package/esm2020/infrab4a-connect-angular.mjs +0 -5
  146. package/esm2020/interfaces/catalog-strategies.interface.mjs +0 -2
  147. package/esm2020/interfaces/category-facades.interface.mjs +0 -2
  148. package/esm2020/interfaces/index.mjs +0 -3
  149. package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
  150. package/esm2020/persistence/data-persistence.mjs +0 -2
  151. package/esm2020/persistence/index.mjs +0 -3
  152. package/esm2020/services/auth.service.mjs +0 -37
  153. package/esm2020/services/cart/cart-services.facade.mjs +0 -21
  154. package/esm2020/services/cart/index.mjs +0 -2
  155. package/esm2020/services/cart.service.mjs +0 -73
  156. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  157. package/esm2020/services/catalog/adapters/index.mjs +0 -4
  158. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  159. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  160. package/esm2020/services/catalog/catalog.service.mjs +0 -111
  161. package/esm2020/services/catalog/category.service.mjs +0 -42
  162. package/esm2020/services/catalog/context/catalog-search.context.mjs +0 -40
  163. package/esm2020/services/catalog/enums/index.mjs +0 -2
  164. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +0 -11
  165. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +0 -32
  166. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +0 -17
  167. package/esm2020/services/catalog/facades/category-repository.facade.mjs +0 -20
  168. package/esm2020/services/catalog/facades/category-service.facade.mjs +0 -30
  169. package/esm2020/services/catalog/facades/index.mjs +0 -6
  170. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +0 -21
  171. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +0 -62
  172. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +0 -44
  173. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +0 -52
  174. package/esm2020/services/catalog/helpers/index.mjs +0 -5
  175. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +0 -43
  176. package/esm2020/services/catalog/index.mjs +0 -8
  177. package/esm2020/services/catalog/models/category-with-tree.model.mjs +0 -10
  178. package/esm2020/services/catalog/models/index.mjs +0 -2
  179. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +0 -33
  180. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +0 -26
  181. package/esm2020/services/catalog/services/catalog-repository.service.mjs +0 -25
  182. package/esm2020/services/catalog/services/index.mjs +0 -5
  183. package/esm2020/services/catalog/services/product-management.facade.mjs +0 -25
  184. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +0 -133
  185. package/esm2020/services/catalog/strategies/index.mjs +0 -4
  186. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +0 -42
  187. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +0 -126
  188. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +0 -2
  189. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +0 -2
  190. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +0 -2
  191. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +0 -2
  192. package/esm2020/services/catalog/types/index.mjs +0 -6
  193. package/esm2020/services/catalog/types/method-params.type.mjs +0 -2
  194. package/esm2020/services/catalog/types/product-sort.type.mjs +0 -2
  195. package/esm2020/services/catalog/wishlist.service.mjs +0 -258
  196. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +0 -20
  197. package/esm2020/services/checkout/checkout-repositories.facade.mjs +0 -20
  198. package/esm2020/services/checkout/index.mjs +0 -3
  199. package/esm2020/services/checkout-subscription.service.mjs +0 -55
  200. package/esm2020/services/checkout.service.mjs +0 -120
  201. package/esm2020/services/coupon/coupon-repositories.facade.mjs +0 -24
  202. package/esm2020/services/coupon/index.mjs +0 -2
  203. package/esm2020/services/coupon/types/coupon-params.type.mjs +0 -2
  204. package/esm2020/services/coupon.service.mjs +0 -248
  205. package/esm2020/services/helpers/index.mjs +0 -2
  206. package/esm2020/services/helpers/util.helper.mjs +0 -18
  207. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +0 -24
  208. package/esm2020/services/home-shop/index.mjs +0 -2
  209. package/esm2020/services/home-shop.service.mjs +0 -119
  210. package/esm2020/services/index.mjs +0 -12
  211. package/esm2020/services/order-product-review.service.mjs +0 -126
  212. package/esm2020/services/order-recurrence.service.mjs +0 -83
  213. package/esm2020/services/order.service.mjs +0 -30
  214. package/esm2020/services/shared/configuration.facade.mjs +0 -29
  215. package/esm2020/services/shared/index.mjs +0 -2
  216. package/esm2020/services/types/index.mjs +0 -5
  217. package/esm2020/services/types/pending-product-review.type.mjs +0 -2
  218. package/esm2020/services/types/product-review-create.type.mjs +0 -2
  219. package/esm2020/services/types/required-checkout-data.type.mjs +0 -2
  220. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +0 -2
  221. package/esm2020/types/firebase-app-config.type.mjs +0 -2
  222. package/esm2020/types/index.mjs +0 -2
  223. package/fesm2015/infrab4a-connect-angular.mjs +0 -3746
  224. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  225. package/fesm2020/infrab4a-connect-angular.mjs +0 -3648
  226. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  227. package/helpers/index.d.ts +0 -1
  228. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  229. package/index.d.ts +0 -6
  230. package/interfaces/catalog-strategies.interface.d.ts +0 -31
  231. package/interfaces/category-facades.interface.d.ts +0 -6
  232. package/interfaces/index.d.ts +0 -2
  233. package/persistence/cookie-data-persistence.d.ts +0 -10
  234. package/persistence/data-persistence.d.ts +0 -6
  235. package/persistence/index.d.ts +0 -2
  236. package/services/auth.service.d.ts +0 -18
  237. package/services/cart/cart-services.facade.d.ts +0 -12
  238. package/services/cart/index.d.ts +0 -1
  239. package/services/cart.service.d.ts +0 -26
  240. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  241. package/services/catalog/adapters/index.d.ts +0 -3
  242. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  243. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  244. package/services/catalog/catalog.service.d.ts +0 -24
  245. package/services/catalog/category.service.d.ts +0 -23
  246. package/services/catalog/context/catalog-search.context.d.ts +0 -14
  247. package/services/catalog/enums/index.d.ts +0 -1
  248. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  249. package/services/catalog/facades/catalog-service.facade.d.ts +0 -15
  250. package/services/catalog/facades/catalog-strategies.facade.d.ts +0 -10
  251. package/services/catalog/facades/category-repository.facade.d.ts +0 -9
  252. package/services/catalog/facades/category-service.facade.d.ts +0 -15
  253. package/services/catalog/facades/product-catalog.facade.d.ts +0 -10
  254. package/services/catalog/helpers/brand-manager.helper.d.ts +0 -14
  255. package/services/catalog/helpers/catalog-filter.helper.d.ts +0 -8
  256. package/services/catalog/helpers/catalog-sort.helper.d.ts +0 -7
  257. package/services/catalog/helpers/index.d.ts +0 -4
  258. package/services/catalog/helpers/product-fields.helper.d.ts +0 -7
  259. package/services/catalog/index.d.ts +0 -7
  260. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  261. package/services/catalog/models/index.d.ts +0 -1
  262. package/services/catalog/services/catalog-helpers.service.d.ts +0 -17
  263. package/services/catalog/services/catalog-operations.facade.d.ts +0 -13
  264. package/services/catalog/services/catalog-repository.service.d.ts +0 -12
  265. package/services/catalog/services/product-management.facade.d.ts +0 -12
  266. package/services/catalog/strategies/category-search.strategy.d.ts +0 -19
  267. package/services/catalog/strategies/index.d.ts +0 -3
  268. package/services/catalog/strategies/profile-search.strategy.d.ts +0 -14
  269. package/services/catalog/strategies/term-search.strategy.d.ts +0 -20
  270. package/services/catalog/strategies/types/strategy-params.type.d.ts +0 -59
  271. package/services/catalog/types/fetch-products-options.type.d.ts +0 -8
  272. package/services/catalog/types/fetch-products-params.type.d.ts +0 -25
  273. package/services/catalog/types/fetch-products-response.type.d.ts +0 -19
  274. package/services/catalog/types/index.d.ts +0 -5
  275. package/services/catalog/types/method-params.type.d.ts +0 -17
  276. package/services/catalog/types/product-sort.type.d.ts +0 -2
  277. package/services/catalog/wishlist.service.d.ts +0 -60
  278. package/services/checkout/checkout-dependencies.facade.d.ts +0 -10
  279. package/services/checkout/checkout-repositories.facade.d.ts +0 -9
  280. package/services/checkout-subscription.service.d.ts +0 -19
  281. package/services/checkout.service.d.ts +0 -31
  282. package/services/coupon/coupon-repositories.facade.d.ts +0 -10
  283. package/services/coupon/types/coupon-params.type.d.ts +0 -13
  284. package/services/coupon.service.d.ts +0 -36
  285. package/services/helpers/index.d.ts +0 -1
  286. package/services/helpers/util.helper.d.ts +0 -3
  287. package/services/home-shop/home-shop-repositories.facade.d.ts +0 -10
  288. package/services/home-shop.service.d.ts +0 -26
  289. package/services/index.d.ts +0 -11
  290. package/services/order-product-review.service.d.ts +0 -18
  291. package/services/order-recurrence.service.d.ts +0 -37
  292. package/services/order.service.d.ts +0 -13
  293. package/services/shared/configuration.facade.d.ts +0 -12
  294. package/services/shared/index.d.ts +0 -1
  295. package/services/types/index.d.ts +0 -4
  296. package/services/types/pending-product-review.type.d.ts +0 -12
  297. package/services/types/product-review-create.type.d.ts +0 -14
  298. package/services/types/required-checkout-data.type.d.ts +0 -2
  299. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  300. package/types/firebase-app-config.type.d.ts +0 -1
  301. package/types/index.d.ts +0 -1
@@ -0,0 +1,135 @@
1
+ import { Inject, Injectable } from '@angular/core'
2
+ import {
3
+ LineItem,
4
+ Order,
5
+ OrderFirestoreRepository,
6
+ OrderStatus,
7
+ ProductReview,
8
+ ProductReviewRepository,
9
+ Shops,
10
+ VariantRepository,
11
+ Where,
12
+ } from '@infrab4a/connect'
13
+
14
+ import { DEFAULT_SHOP } from '../consts'
15
+
16
+ import { PendingProductReview, ProductReviewCreate } from './types'
17
+
18
+ @Injectable()
19
+ export class OrderProductReviewService {
20
+ constructor(
21
+ @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,
22
+ @Inject('ProductReviewRepository') private readonly productReviewRepository: ProductReviewRepository,
23
+ @Inject('VariantRepository') private readonly variantRepository: VariantRepository,
24
+ @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,
25
+ ) {}
26
+
27
+ async getPendingReviewsByEmail(email: string): Promise<PendingProductReview[]> {
28
+ const products: PendingProductReview[] = []
29
+ const orders = await this.getOrdersByEmail(email)
30
+
31
+ if (orders.length) {
32
+ for (const order of orders) {
33
+ const lineItems = order.lineItems.filter((item) => !item.isGift)
34
+
35
+ for (const item of lineItems) {
36
+ const productReview = await this.getProductReview(order, item)
37
+
38
+ if (productReview?.status != null) continue
39
+
40
+ products.push(this.buildProductReview(order, item, productReview))
41
+ }
42
+ }
43
+ }
44
+
45
+ return products
46
+ }
47
+
48
+ private async getOrdersByEmail(email: string): Promise<Order[]> {
49
+ const { data: orders } = await this.orderRepository.find({
50
+ filters: {
51
+ user: {
52
+ email: email,
53
+ },
54
+ shop: this.defaultShop,
55
+ status: OrderStatus.ENTREGUE,
56
+ createdAt: {
57
+ operator: Where.GTE,
58
+ value: new Date(2024, 0, 0, 0, 0, 0).getTime(),
59
+ },
60
+ },
61
+ orderBy: {
62
+ createdAt: 'desc',
63
+ },
64
+ })
65
+
66
+ return orders
67
+ }
68
+
69
+ private async getProductReview(order: Order, item: LineItem) {
70
+ const products: string[] = [item.id]
71
+ const isVariant = await this.variantRepository
72
+ .find({
73
+ filters: {
74
+ id: item.id,
75
+ },
76
+ })
77
+ .then((res) => res.data.at(0))
78
+
79
+ if (isVariant) products.push(isVariant.productId)
80
+ const productReview = await this.productReviewRepository
81
+ .find({
82
+ filters: {
83
+ orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },
84
+ productId: { operator: Where.IN, value: products },
85
+ },
86
+ })
87
+ .then((res) => res.data.at(0))
88
+
89
+ return productReview
90
+ }
91
+
92
+ private buildProductReview(order: Order, item: LineItem, review: ProductReview) {
93
+ return {
94
+ id: item.id,
95
+ orderId: order.id,
96
+ orderNumber: order.orderNumber,
97
+ isEdition: false,
98
+ name: item.name,
99
+ image: item.image,
100
+ deliveryDate: order.deliveredAt || null,
101
+ evaluationInAnalysis: review ? true : false,
102
+ rating: review ? review.rate : null,
103
+ shopProductSlug: item.slug,
104
+ }
105
+ }
106
+
107
+ async createReview(review: ProductReviewCreate): Promise<ProductReview> {
108
+ return this.productReviewRepository.create(
109
+ ProductReview.toInstance({
110
+ productId: review.productId.toString(),
111
+ shop: review.shop,
112
+ rate: review.rate,
113
+ author: review.author,
114
+ email: review.email,
115
+ location: review.location,
116
+ review: review.comment,
117
+ title: review.title,
118
+ personId: review.personId,
119
+ points: review.points,
120
+ orderId: review.orderId,
121
+ }),
122
+ )
123
+ }
124
+
125
+ async verifyReviewProductAndOrder(orderId: string[], productId: string) {
126
+ return this.productReviewRepository
127
+ .find({
128
+ filters: {
129
+ orderId: { operator: Where.IN, value: orderId },
130
+ productId: productId,
131
+ },
132
+ })
133
+ .then((res) => res.data)
134
+ }
135
+ }
@@ -0,0 +1,115 @@
1
+ import { Inject, Injectable } from '@angular/core'
2
+ import {
3
+ CardForPaymentInfo,
4
+ CreateShoppingRecurrencyPayload,
5
+ LineItem,
6
+ ShippingMethodResponse,
7
+ ShoppingRecurrence,
8
+ ShoppingRecurrenceCycle,
9
+ ShoppingRecurrenceFirestoreRepository,
10
+ Shops,
11
+ UserAddress,
12
+ } from '@infrab4a/connect'
13
+ import { from, Observable } from 'rxjs'
14
+
15
+ import { DEFAULT_SHOP } from '../consts'
16
+
17
+ import { CheckoutDependenciesFacade } from './checkout'
18
+ import { ConfigurationFacade } from './shared'
19
+
20
+ @Injectable()
21
+ export class OrderRecurrenceService {
22
+ private checkoutUrl: string = null
23
+
24
+ constructor(
25
+ @Inject('ShoppingRecurrenceRepository')
26
+ private readonly shoppingRecurrenceRepository: ShoppingRecurrenceFirestoreRepository,
27
+ @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,
28
+ private readonly dependenciesFacade: CheckoutDependenciesFacade,
29
+ private readonly configurationFacade: ConfigurationFacade,
30
+ ) {
31
+ this.checkoutUrl = this.configurationFacade.getCheckoutUrl()
32
+ }
33
+
34
+ getRecurrenceOrder(recurrenceId: string): Observable<ShoppingRecurrence> {
35
+ return from(this.shoppingRecurrenceRepository.get({ id: recurrenceId }))
36
+ }
37
+
38
+ createRecurrenceOrder(recurrencePayload: CreateShoppingRecurrencyPayload): Observable<ShoppingRecurrence> {
39
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(`${this.checkoutUrl}/createShoppingRecurrence`, {
40
+ data: recurrencePayload,
41
+ })
42
+ }
43
+
44
+ updatePaymentMethod(data: { recurrenceId: string; cards: CardForPaymentInfo[] }) {
45
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
46
+ `${this.checkoutUrl}/updateShoppingRecurrencePaymentMethod`,
47
+ {
48
+ data,
49
+ },
50
+ )
51
+ }
52
+
53
+ getRecurrenceAvailableShipping(data: { recurrenceId: string; shippingAddress?: UserAddress }) {
54
+ return this.dependenciesFacade.httpClient.post<ShippingMethodResponse[]>(
55
+ `${this.checkoutUrl}/getShoppingRecurrenceAvailableShipping`,
56
+ {
57
+ data,
58
+ },
59
+ )
60
+ }
61
+
62
+ updateShippingAddress(data: { recurrenceId: string; shippingAddress: UserAddress; shippingOption: string }) {
63
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
64
+ `${this.checkoutUrl}/updateShoppingRecurrenceShippingAddress`,
65
+ {
66
+ data,
67
+ },
68
+ )
69
+ }
70
+
71
+ cancelRecurrenceOrder(data: { recurrenceId: string }) {
72
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(`${this.checkoutUrl}/cancelShoppingRecurrence`, {
73
+ data,
74
+ })
75
+ }
76
+
77
+ enableOrDisableRecurrenceOrder(recurrenceId: string, active: boolean) {
78
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
79
+ `${this.checkoutUrl}/enableOrDisableShoppingRecurrence`,
80
+ {
81
+ recurrenceId,
82
+ active,
83
+ },
84
+ )
85
+ }
86
+
87
+ skipRecurrenceOrder(recurrenceEditionId: string) {
88
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
89
+ `${this.checkoutUrl}/skipShoppingRecurrenceEdition`,
90
+ {
91
+ recurrenceEditionId,
92
+ },
93
+ )
94
+ }
95
+
96
+ updateFrequency(recurrenceId: string, frequency: ShoppingRecurrenceCycle) {
97
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
98
+ `${this.checkoutUrl}/updateShoppingRecurrenceFrequency`,
99
+ {
100
+ recurrenceId,
101
+ frequency,
102
+ },
103
+ )
104
+ }
105
+
106
+ updateLineItems(recurrenceId: string, lineItems: LineItem[]) {
107
+ return this.dependenciesFacade.httpClient.post<ShoppingRecurrence>(
108
+ `${this.checkoutUrl}/updateShoppingRecurrenceLineItems`,
109
+ {
110
+ recurrenceId,
111
+ lineItems,
112
+ },
113
+ )
114
+ }
115
+ }
@@ -0,0 +1,23 @@
1
+ import { Injectable, Inject } from '@angular/core'
2
+ import { doc, Firestore, docSnapshots } from '@angular/fire/firestore'
3
+ import { Order, OrderFirestoreRepository } from '@infrab4a/connect'
4
+ import { Subject } from 'rxjs'
5
+ import { map } from 'rxjs/operators'
6
+
7
+ @Injectable()
8
+ export class OrderService {
9
+ orderSubject = new Subject<Order>()
10
+
11
+ constructor(
12
+ private readonly angularFirestore: Firestore,
13
+ @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,
14
+ ) {}
15
+
16
+ getOrder(id: string): Subject<Order> {
17
+ docSnapshots(doc(this.angularFirestore, `${this.orderRepository.collectionName}/${id}`))
18
+ .pipe(map((doc) => Order.toInstance(doc.data())))
19
+ .subscribe((doc) => this.orderSubject.next(doc))
20
+
21
+ return this.orderSubject
22
+ }
23
+ }
@@ -0,0 +1,21 @@
1
+ import { Inject, Injectable } from '@angular/core'
2
+ import { FirebaseOptions } from '@angular/fire/app'
3
+ import { Shops } from '@infrab4a/connect'
4
+
5
+ import { DEFAULT_SHOP, FIREBASE_OPTIONS } from '../../consts'
6
+
7
+ @Injectable()
8
+ export class ConfigurationFacade {
9
+ constructor(
10
+ @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,
11
+ @Inject(FIREBASE_OPTIONS) public readonly firebaseOptions: FirebaseOptions,
12
+ ) {}
13
+
14
+ getCheckoutUrl(): string {
15
+ return `https://southamerica-east1-${this.firebaseOptions.projectId}.cloudfunctions.net`
16
+ }
17
+
18
+ getProjectId(): string {
19
+ return this.firebaseOptions.projectId
20
+ }
21
+ }
@@ -0,0 +1 @@
1
+ export { ConfigurationFacade } from './configuration.facade'
@@ -0,0 +1,4 @@
1
+ export * from './pending-product-review.type'
2
+ export * from './product-review-create.type'
3
+ export * from './required-checkout-data.type'
4
+ export * from './required-checkout-subscription-data.type'
@@ -0,0 +1,12 @@
1
+ export type PendingProductReview = {
2
+ id: string
3
+ isEdition: boolean
4
+ orderId: string
5
+ orderNumber: string
6
+ name: string
7
+ image: string
8
+ deliveryDate: string
9
+ evaluationInAnalysis: boolean
10
+ rating?: number
11
+ shopProductSlug: string
12
+ }
@@ -0,0 +1,15 @@
1
+ import { Shops } from '@infrab4a/connect/src'
2
+
3
+ export type ProductReviewCreate = {
4
+ productId: string
5
+ shop: Shops
6
+ rate: number
7
+ author: string
8
+ email: string
9
+ location: string
10
+ comment: string
11
+ title: string
12
+ personId: number
13
+ points: number
14
+ orderId: string
15
+ }
@@ -0,0 +1,3 @@
1
+ import { Checkout } from '@infrab4a/connect'
2
+
3
+ export type RequiredCheckoutData = Partial<Pick<Checkout, 'id' | 'user' | 'shop' | 'lineItems'>>
@@ -0,0 +1,3 @@
1
+ import { CheckoutSubscription } from '@infrab4a/connect'
2
+
3
+ export type RequiredCheckoutSubscriptionData = Partial<Pick<CheckoutSubscription, 'id'>>
@@ -0,0 +1 @@
1
+ export type FirebaseAppConfig = Record<string, any>
@@ -0,0 +1 @@
1
+ export * from './firebase-app-config.type'
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "declarationMap": true,
5
+ "inlineSources": true,
6
+ "noEmit": true,
7
+ "composite": false,
8
+ "lib": ["es2018", "dom"]
9
+ },
10
+ "exclude": [
11
+ "**/*.spec.ts"
12
+ ],
13
+ "references": [
14
+ { "path": "../connect" }
15
+ ],
16
+ "include": ["./src"]
17
+ }
@@ -0,0 +1,13 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "./tsconfig.json",
4
+ "compilerOptions": {
5
+ "noEmit": false,
6
+ "composite": false
7
+ },
8
+ "angularCompilerOptions": {
9
+ "skipTemplateCodegen": true,
10
+ "strictMetadataEmit": true,
11
+ "enableResourceInlining": true,
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "./tsconfig.lib.json",
4
+ "compilerOptions": {
5
+ "declarationMap": false,
6
+ "importHelpers": true,
7
+ "target": "es2017",
8
+ "module": "es2020"
9
+ },
10
+ "angularCompilerOptions": {
11
+ "compilationMode": "partial"
12
+ }
13
+ }
@@ -0,0 +1,17 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "../../tsconfig.json",
4
+ "compilerOptions": {
5
+ "outDir": "../../dist/spec",
6
+ "types": [
7
+ "jasmine"
8
+ ]
9
+ },
10
+ "files": [
11
+ "src/test.ts"
12
+ ],
13
+ "include": [
14
+ "**/*.spec.ts",
15
+ "**/*.d.ts"
16
+ ]
17
+ }
@@ -1,36 +0,0 @@
1
- import { ModuleWithProviders, Type } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { AppCheckOptions } from '@angular/fire/app-check';
4
- import { AxiosElasticSearchConfig, Shops, VertexSearchConfig } from '@infrab4a/connect';
5
- import { HasuraGraphQLOptions } from './angular-hasura-graphql.module';
6
- import { DataPersistence } from './persistence';
7
- import { FirebaseAppConfig } from './types';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/fire/app";
10
- import * as i2 from "@angular/fire/app-check";
11
- import * as i3 from "@angular/fire/storage";
12
- import * as i4 from "./angular-elastic-search.module";
13
- import * as i5 from "./angular-vertex-search.module";
14
- import * as i6 from "./angular-firebase-auth.module";
15
- import * as i7 from "./angular-firestore.module";
16
- import * as i8 from "./angular-hasura-graphql.module";
17
- export declare class AngularConnectModule {
18
- static initializeApp(defaultShop: Shops, options: {
19
- firebase?: FirebaseOptions;
20
- elasticSearch?: AxiosElasticSearchConfig;
21
- vertexConfig?: VertexSearchConfig;
22
- hasura: HasuraGraphQLOptions;
23
- backendUrl: string;
24
- oldCategoryStructure?: boolean;
25
- storageBaseUrl?: string;
26
- persistenceProvider?: Type<DataPersistence>;
27
- appCheckProvider?: AppCheckOptions['provider'];
28
- }, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularConnectModule>;
29
- private static buildCoreProviders;
30
- private static buildConditionalProviders;
31
- private static selectCategoryStructureAdapter;
32
- private static createProviderIfExists;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularConnectModule, never>;
34
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularConnectModule, never, [typeof i1.FirebaseAppModule, typeof i2.AppCheckModule, typeof i3.StorageModule, typeof i4.AngularElasticSeachModule, typeof i5.AngularVertexSeachModule, typeof i6.AngularFirebaseAuthModule, typeof i7.AngularFirestoreModule, typeof i8.AngularHasuraGraphQLModule], never>;
35
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularConnectModule>;
36
- }
@@ -1,9 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { AxiosElasticSearchConfig } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export declare class AngularElasticSeachModule {
5
- static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularElasticSeachModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularElasticSeachModule, never, never, never>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularElasticSeachModule>;
9
- }
@@ -1,11 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { FirebaseAppConfig } from './types';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/fire/auth";
6
- export declare class AngularFirebaseAuthModule {
7
- static initializeApp(options: FirebaseOptions, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularFirebaseAuthModule>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirebaseAuthModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFirebaseAuthModule, never, [typeof i1.AuthModule], never>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularFirebaseAuthModule>;
11
- }
@@ -1,17 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { AxiosElasticSearchConfig, FirestoreConstructorParams } from '@infrab4a/connect';
4
- import { FirebaseAppConfig } from './types';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./angular-elastic-search.module";
7
- import * as i2 from "@angular/fire/firestore";
8
- export type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>;
9
- export declare class AngularFirestoreModule {
10
- static initializeApp(options: {
11
- firebase: FirebaseOptions;
12
- elasticSearch: AxiosElasticSearchConfig;
13
- }, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularFirestoreModule>;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirestoreModule, never>;
15
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFirestoreModule, never, [typeof i1.AngularElasticSeachModule, typeof i2.FirestoreModule], never>;
16
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularFirestoreModule>;
17
- }
@@ -1,14 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { CacheConfig, HasuraGraphQLAuthOptions } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export type HasuraGraphQLOptions = {
5
- endpoint: string;
6
- credentials?: HasuraGraphQLAuthOptions;
7
- cache?: CacheConfig;
8
- };
9
- export declare class AngularHasuraGraphQLModule {
10
- static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule>;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularHasuraGraphQLModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularHasuraGraphQLModule, never, never, never>;
13
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularHasuraGraphQLModule>;
14
- }
@@ -1,9 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { VertexSearchConfig } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export declare class AngularVertexSeachModule {
5
- static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularVertexSeachModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularVertexSeachModule, never, never, never>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularVertexSeachModule>;
9
- }
@@ -1 +0,0 @@
1
- export declare const BACKEND_URL = "BACKEND_URL";
@@ -1 +0,0 @@
1
- export declare const CATEGORY_STRUCTURE = "CATEGORY_STRUCTURE";
@@ -1 +0,0 @@
1
- export declare const DEFAULT_SHOP = "DEFAULT_SHOP";
@@ -1 +0,0 @@
1
- export declare const ES_CONFIG = "ES_CONFIG";
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export declare const FIREBASE_APP_NAME: InjectionToken<unknown>;
3
- export declare const FIREBASE_OPTIONS: InjectionToken<unknown>;
4
- export declare const APP_CHECK_PROVIDER: InjectionToken<unknown>;
@@ -1 +0,0 @@
1
- export declare const HASURA_OPTIONS = "HASURA_OPTIONS";
package/consts/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * from './backend-url.const';
2
- export * from './category-structure';
3
- export * from './default-shop.const';
4
- export * from './es-config.const';
5
- export * from './firebase-const';
6
- export * from './hasura-options.const';
7
- export * from './persistence.const';
8
- export * from './vertex-config.const';
@@ -1 +0,0 @@
1
- export declare const PERSISTENCE_PROVIDER = "PERSISTENCE_PROVIDER";
@@ -1 +0,0 @@
1
- export declare const STORAGE_BASE_URL = "STORAGE_BASE_URL";
@@ -1 +0,0 @@
1
- export declare const VERTEX_CONFIG = "VERTEX_CONFIG";