@infrab4a/connect-angular 6.0.0-beta.0 → 6.0.0-beta.10
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.
- package/esm2022/services/catalog/catalog.service.mjs +7 -1
- package/esm2022/services/catalog/category.service.mjs +4 -1
- package/esm2022/services/catalog/helpers/brand-manager.helper.mjs +24 -7
- package/esm2022/services/catalog/helpers/catalog-filter.helper.mjs +3 -3
- package/esm2022/services/catalog/helpers/product-fields.helper.mjs +3 -2
- package/esm2022/services/catalog/strategies/category-search.strategy.mjs +4 -3
- package/esm2022/services/catalog/strategies/profile-search.strategy.mjs +2 -2
- package/esm2022/services/checkout.service.mjs +3 -3
- package/esm2022/services/order-product-review.service.mjs +51 -22
- package/esm2022/services/types/pending-product-review.type.mjs +1 -1
- package/fesm2022/infrab4a-connect-angular.mjs +84 -31
- package/fesm2022/infrab4a-connect-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/services/catalog/category.service.d.ts +1 -0
- package/services/catalog/helpers/brand-manager.helper.d.ts +5 -1
- package/services/checkout.service.d.ts +1 -1
- package/services/order-product-review.service.d.ts +5 -2
- package/services/types/pending-product-review.type.d.ts +3 -1
|
@@ -3,51 +3,77 @@ import { OrderFirestoreRepository, OrderStatus, ProductReview, Where, } from '@i
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@infrab4a/connect";
|
|
5
5
|
export class OrderProductReviewService {
|
|
6
|
-
constructor(orderRepository, productReviewRepository) {
|
|
6
|
+
constructor(orderRepository, productReviewRepository, variantRepository) {
|
|
7
7
|
this.orderRepository = orderRepository;
|
|
8
8
|
this.productReviewRepository = productReviewRepository;
|
|
9
|
+
this.variantRepository = variantRepository;
|
|
9
10
|
}
|
|
10
11
|
async getPendingReviewsByEmail(email) {
|
|
11
12
|
const products = [];
|
|
13
|
+
const orders = await this.getOrdersByEmail(email);
|
|
14
|
+
if (orders.length) {
|
|
15
|
+
for (const order of orders) {
|
|
16
|
+
const lineItems = order.lineItems.filter((item) => !item.isGift);
|
|
17
|
+
for (const item of lineItems) {
|
|
18
|
+
const productReview = await this.getProductReview(order, item);
|
|
19
|
+
if (productReview?.status != null)
|
|
20
|
+
continue;
|
|
21
|
+
products.push(this.buildProductReview(order, item, productReview));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return products;
|
|
26
|
+
}
|
|
27
|
+
async getOrdersByEmail(email) {
|
|
12
28
|
const { data: orders } = await this.orderRepository.find({
|
|
13
29
|
filters: {
|
|
14
30
|
user: {
|
|
15
31
|
email: email,
|
|
16
32
|
},
|
|
17
33
|
status: OrderStatus.ENTREGUE,
|
|
34
|
+
createdAt: {
|
|
35
|
+
operator: Where.GTE,
|
|
36
|
+
value: new Date(2024, 0, 0, 0, 0, 0).getTime(),
|
|
37
|
+
},
|
|
18
38
|
},
|
|
19
39
|
orderBy: {
|
|
20
40
|
createdAt: 'desc',
|
|
21
41
|
},
|
|
22
42
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
return orders;
|
|
44
|
+
}
|
|
45
|
+
async getProductReview(order, item) {
|
|
46
|
+
const products = [item.id];
|
|
47
|
+
const isVariant = await this.variantRepository
|
|
48
|
+
.find({
|
|
49
|
+
filters: {
|
|
50
|
+
id: item.id,
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
.then((res) => res.data.at(0));
|
|
54
|
+
if (isVariant)
|
|
55
|
+
products.push(isVariant.productId);
|
|
56
|
+
const productReview = await this.productReviewRepository
|
|
57
|
+
.find({
|
|
58
|
+
filters: {
|
|
59
|
+
orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },
|
|
60
|
+
productId: { operator: Where.IN, value: products },
|
|
61
|
+
},
|
|
62
|
+
})
|
|
63
|
+
.then((res) => res.data.at(0));
|
|
64
|
+
return productReview;
|
|
41
65
|
}
|
|
42
66
|
buildProductReview(order, item, review) {
|
|
43
67
|
return {
|
|
44
68
|
id: item.id,
|
|
45
|
-
|
|
69
|
+
orderId: order.id,
|
|
70
|
+
orderNumber: order.orderNumber,
|
|
46
71
|
isEdition: false,
|
|
47
72
|
name: item.name,
|
|
48
73
|
image: item.image,
|
|
49
74
|
deliveryDate: order.deliveredAt || null,
|
|
50
75
|
evaluationInAnalysis: review ? true : false,
|
|
76
|
+
rating: review ? review.rate : null,
|
|
51
77
|
shopProductSlug: item.slug,
|
|
52
78
|
};
|
|
53
79
|
}
|
|
@@ -66,7 +92,7 @@ export class OrderProductReviewService {
|
|
|
66
92
|
orderId: review.orderId,
|
|
67
93
|
}));
|
|
68
94
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, deps: [{ token: 'OrderRepository' }, { token: 'ProductReviewRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, deps: [{ token: 'OrderRepository' }, { token: 'ProductReviewRepository' }, { token: 'VariantRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
70
96
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService }); }
|
|
71
97
|
}
|
|
72
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, decorators: [{
|
|
@@ -77,5 +103,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
|
|
|
77
103
|
}] }, { type: undefined, decorators: [{
|
|
78
104
|
type: Inject,
|
|
79
105
|
args: ['ProductReviewRepository']
|
|
106
|
+
}] }, { type: undefined, decorators: [{
|
|
107
|
+
type: Inject,
|
|
108
|
+
args: ['VariantRepository']
|
|
80
109
|
}] }] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcHJvZHVjdC1yZXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvb3JkZXItcHJvZHVjdC1yZXZpZXcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBR0wsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7OztBQUsxQixNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQzhDLGVBQXlDLEVBQ2pDLHVCQUFnRCxFQUN0RCxpQkFBb0M7UUFGdEMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ2pDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDdEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUNqRixDQUFDO0lBRUosS0FBSyxDQUFDLHdCQUF3QixDQUFDLEtBQWE7UUFDMUMsTUFBTSxRQUFRLEdBQTJCLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQzFCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFaEUsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUU7b0JBQzVCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtv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QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQ3hDLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDdkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3RDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3RCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7OEdBdEdVLHlCQUF5QixrQkFFMUIsaUJBQWlCLGFBQ2pCLHlCQUF5QixhQUN6QixtQkFBbUI7a0hBSmxCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQ2hDLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBMaW5lSXRlbSxcclxuICBPcmRlcixcclxuICBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgT3JkZXJTdGF0dXMsXHJcbiAgUHJvZHVjdFJldmlldyxcclxuICBQcm9kdWN0UmV2aWV3UmVwb3NpdG9yeSxcclxuICBWYXJpYW50UmVwb3NpdG9yeSxcclxuICBXaGVyZSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IFBlbmRpbmdQcm9kdWN0UmV2aWV3LCBQcm9kdWN0UmV2aWV3Q3JlYXRlIH0gZnJvbSAnLi90eXBlcydcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE9yZGVyUHJvZHVjdFJldmlld1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnT3JkZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBvcmRlclJlcG9zaXRvcnk6IE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXZpZXdSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmV2aWV3UmVwb3NpdG9yeTogUHJvZHVjdFJldmlld1JlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdWYXJpYW50UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFudFJlcG9zaXRvcnk6IFZhcmlhbnRSZXBvc2l0b3J5LFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZ2V0UGVuZGluZ1Jldmlld3NCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPFBlbmRpbmdQcm9kdWN0UmV2aWV3W10+IHtcclxuICAgIGNvbnN0IHByb2R1Y3RzOiBQZW5kaW5nUHJvZHVjdFJldmlld1tdID0gW11cclxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMuZ2V0T3JkZXJzQnlFbWFpbChlbWFpbClcclxuXHJcbiAgICBpZiAob3JkZXJzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xyXG4gICAgICAgIGNvbnN0IGxpbmVJdGVtcyA9IG9yZGVyLmxpbmVJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzR2lmdClcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGxpbmVJdGVtcykge1xyXG4gICAgICAgICAgY29uc3QgcHJvZHVjdFJldmlldyA9IGF3YWl0IHRoaXMuZ2V0UHJvZHVjdFJldmlldyhvcmRlciwgaXRlbSlcclxuXHJcbiAgICAgICAgICBpZiAocHJvZHVjdFJldmlldz8uc3RhdHVzICE9IG51bGwpIGNvbnRpbnVlXHJcblxyXG4gICAgICAgICAgcHJvZHVjdHMucHVzaCh0aGlzLmJ1aWxkUHJvZHVjdFJldmlldyhvcmRlciwgaXRlbSwgcHJvZHVjdFJldmlldykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHByb2R1Y3RzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldE9yZGVyc0J5RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8T3JkZXJbXT4ge1xyXG4gICAgY29uc3QgeyBkYXRhOiBvcmRlcnMgfSA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RhdHVzOiBPcmRlclN0YXR1cy5FTlRSRUdVRSxcclxuICAgICAgICBjcmVhdGVkQXQ6IHtcclxuICAgICAgICAgIG9wZXJhdG9yOiBXaGVyZS5HVEUsXHJcbiAgICAgICAgICB2YWx1ZTogbmV3IERhdGUoMjAyNCwgMCwgMCwgMCwgMCwgMCkuZ2V0VGltZSgpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9yZGVyQnk6IHtcclxuICAgICAgICBjcmVhdGVkQXQ6ICdkZXNjJyxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIG9yZGVyc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0UmV2aWV3KG9yZGVyOiBPcmRlciwgaXRlbTogTGluZUl0ZW0pIHtcclxuICAgIGNvbnN0IHByb2R1Y3RzOiBzdHJpbmdbXSA9IFtpdGVtLmlkXVxyXG4gICAgY29uc3QgaXNWYXJpYW50ID0gYXdhaXQgdGhpcy52YXJpYW50UmVwb3NpdG9yeVxyXG4gICAgICAuZmluZCh7XHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEuYXQoMCkpXHJcblxyXG4gICAgaWYgKGlzVmFyaWFudCkgcHJvZHVjdHMucHVzaChpc1ZhcmlhbnQucHJvZHVjdElkKVxyXG4gICAgY29uc3QgcHJvZHVjdFJldmlldyA9IGF3YWl0IHRoaXMucHJvZHVjdFJldmlld1JlcG9zaXRvcnlcclxuICAgICAgLmZpbmQoe1xyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIG9yZGVySWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogW29yZGVyLmlkLCBvcmRlci5vcmRlck51bWJlcl0uZmlsdGVyKEJvb2xlYW4pIH0sXHJcbiAgICAgICAgICBwcm9kdWN0SWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdHMgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YS5hdCgwKSlcclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdFJldmlld1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFByb2R1Y3RSZXZpZXcob3JkZXI6IE9yZGVyLCBpdGVtOiBMaW5lSXRlbSwgcmV2aWV3OiBQcm9kdWN0UmV2aWV3KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXHJcbiAgICAgIG9yZGVyTnVtYmVyOiBvcmRlci5vcmRlck51bWJlcixcclxuICAgICAgaXNFZGl0aW9uOiBmYWxzZSxcclxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICBpbWFnZTogaXRlbS5pbWFnZSxcclxuICAgICAgZGVsaXZlcnlEYXRlOiBvcmRlci5kZWxpdmVyZWRBdCB8fCBudWxsLFxyXG4gICAgICBldmFsdWF0aW9uSW5BbmFseXNpczogcmV2aWV3ID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICByYXRpbmc6IHJldmlldyA/IHJldmlldy5yYXRlIDogbnVsbCxcclxuICAgICAgc2hvcFByb2R1Y3RTbHVnOiBpdGVtLnNsdWcsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVSZXZpZXcocmV2aWV3OiBQcm9kdWN0UmV2aWV3Q3JlYXRlKTogUHJvbWlzZTxQcm9kdWN0UmV2aWV3PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmV2aWV3UmVwb3NpdG9yeS5jcmVhdGUoXHJcbiAgICAgIFByb2R1Y3RSZXZpZXcudG9JbnN0YW5jZSh7XHJcbiAgICAgICAgcHJvZHVjdElkOiByZXZpZXcucHJvZHVjdElkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgc2hvcDogcmV2aWV3LnNob3AsXHJcbiAgICAgICAgcmF0ZTogcmV2aWV3LnJhdGUsXHJcbiAgICAgICAgYXV0aG9yOiByZXZpZXcuYXV0aG9yLFxyXG4gICAgICAgIGVtYWlsOiByZXZpZXcuZW1haWwsXHJcbiAgICAgICAgbG9jYXRpb246IHJldmlldy5sb2NhdGlvbixcclxuICAgICAgICByZXZpZXc6IHJldmlldy5jb21tZW50LFxyXG4gICAgICAgIHRpdGxlOiByZXZpZXcudGl0bGUsXHJcbiAgICAgICAgcGVyc29uSWQ6IHJldmlldy5wZXJzb25JZCxcclxuICAgICAgICBwb2ludHM6IHJldmlldy5wb2ludHMsXHJcbiAgICAgICAgb3JkZXJJZDogcmV2aWV3Lm9yZGVySWQsXHJcbiAgICAgIH0pLFxyXG4gICAgKVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1wcm9kdWN0LXJldmlldy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy90eXBlcy9wZW5kaW5nLXByb2R1Y3QtcmV2aWV3LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBlbmRpbmdQcm9kdWN0UmV2aWV3ID0ge1xyXG4gIGlkOiBzdHJpbmdcclxuICBpc0VkaXRpb246IGJvb2xlYW5cclxuICBvcmRlcklkOiBzdHJpbmdcclxuICBvcmRlck51bWJlcjogc3RyaW5nXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgaW1hZ2U6IHN0cmluZ1xyXG4gIGRlbGl2ZXJ5RGF0ZTogc3RyaW5nXHJcbiAgZXZhbHVhdGlvbkluQW5hbHlzaXM6IGJvb2xlYW5cclxuICByYXRpbmc/OiBudW1iZXJcclxuICBzaG9wUHJvZHVjdFNsdWc6IHN0cmluZ1xyXG59XHJcbiJdfQ==
|
|
@@ -7,7 +7,7 @@ import { provideAppCheck, initializeAppCheck } from '@angular/fire/app-check';
|
|
|
7
7
|
import * as i3$1 from '@angular/fire/storage';
|
|
8
8
|
import { Storage, provideStorage, getStorage } from '@angular/fire/storage';
|
|
9
9
|
import * as i3 from '@infrab4a/connect';
|
|
10
|
-
import { ProductsIndex, AxiosAdapter, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ConnectFirestoreService, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, CampaignHashtagFirestoreRepository, CampaignDashboardFirestoreRepository, SubscriptionEditionFirestoreRepository, GroupFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionSummaryFirestoreRepository, ProductVariantFirestoreRepository, OrderBlockedFirestoreRepository, LogFirestoreRepository, SequenceFirestoreRepository, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, ProductReviewHasuraGraphQLRepository, VariantHasuraGraphQLRepository, ProductStockNotificationHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, FilterHasuraGraphQLRepository, CategoryCollectionChildrenHasuraGraphQLRepository, CategoryProductHasuraGraphQLRepository, WishlistHasuraGraphQLRepository, ProductErrorsHasuraGraphQLRepository, ProductsVertexSearch, VertexAxiosAdapter, isNil, NotFoundError, Checkout, pick, LineItem, Where,
|
|
10
|
+
import { ProductsIndex, AxiosAdapter, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ConnectFirestoreService, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, CampaignHashtagFirestoreRepository, CampaignDashboardFirestoreRepository, SubscriptionEditionFirestoreRepository, GroupFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionSummaryFirestoreRepository, ProductVariantFirestoreRepository, OrderBlockedFirestoreRepository, LogFirestoreRepository, SequenceFirestoreRepository, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, ProductReviewHasuraGraphQLRepository, VariantHasuraGraphQLRepository, ProductStockNotificationHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, FilterHasuraGraphQLRepository, CategoryCollectionChildrenHasuraGraphQLRepository, CategoryProductHasuraGraphQLRepository, WishlistHasuraGraphQLRepository, ProductErrorsHasuraGraphQLRepository, ProductsVertexSearch, VertexAxiosAdapter, isNil, NotFoundError, Checkout, pick, LineItem, Where, Shops, isEmpty, set, InvalidArgumentError, RoundProductPricesHelper, Category, WishlistLogType, PersonTypes, Wishlist, CheckoutTypes, CouponTypes, Exclusivities, OrderStatus, CheckoutSubscription, Product, RequiredArgumentError, add, ProductReview, Order, UpdateUserImage, FirebaseFileUploaderService } from '@infrab4a/connect';
|
|
11
11
|
import * as i1 from '@angular/fire/auth';
|
|
12
12
|
import { Auth, provideAuth, initializeAuth, indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence, getAuth, getIdToken, authState } from '@angular/fire/auth';
|
|
13
13
|
import { isPlatformBrowser, isPlatformServer } from '@angular/common';
|
|
@@ -1278,7 +1278,7 @@ class CheckoutService {
|
|
|
1278
1278
|
})), concatMap(() => this.getCheckout()));
|
|
1279
1279
|
}
|
|
1280
1280
|
createOrder(checkoutPayload, paymentProvider, applicationVersion) {
|
|
1281
|
-
return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/
|
|
1281
|
+
return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutV5`, {
|
|
1282
1282
|
data: {
|
|
1283
1283
|
...checkoutPayload,
|
|
1284
1284
|
applicationVersion,
|
|
@@ -1577,7 +1577,8 @@ class CategorySearchStrategy {
|
|
|
1577
1577
|
options: {
|
|
1578
1578
|
minimal: ['price'],
|
|
1579
1579
|
maximum: ['price'],
|
|
1580
|
-
|
|
1580
|
+
distinct: ['brand'],
|
|
1581
|
+
// ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),
|
|
1581
1582
|
},
|
|
1582
1583
|
}, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
|
|
1583
1584
|
return this.sortProductsByRelevance(totalResult, mostRelevants, limits);
|
|
@@ -1624,7 +1625,7 @@ class ProfileSearchStrategy {
|
|
|
1624
1625
|
const repoParams = {
|
|
1625
1626
|
fields: fieldsHelper.getStandardFields(),
|
|
1626
1627
|
filters: {
|
|
1627
|
-
|
|
1628
|
+
tagsProfile: { operator: Where.LIKE, value: profile },
|
|
1628
1629
|
...filterHelper.buildFilterQuery(filters || {}),
|
|
1629
1630
|
},
|
|
1630
1631
|
...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),
|
|
@@ -1831,6 +1832,9 @@ class CategoryService {
|
|
|
1831
1832
|
.find({ filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } }, optionsCache)
|
|
1832
1833
|
.then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)));
|
|
1833
1834
|
}
|
|
1835
|
+
async getMenuBrands() {
|
|
1836
|
+
return this.categoryFacade.categoryRepository.getBrandsWithProducts();
|
|
1837
|
+
}
|
|
1834
1838
|
async fetchFilterOptions(category, optionsCache) {
|
|
1835
1839
|
return await this.categoryFacade.categoryFilterRepository
|
|
1836
1840
|
.find({ filters: { categoryId: +category.id } }, optionsCache)
|
|
@@ -1885,11 +1889,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
|
|
|
1885
1889
|
}] }] });
|
|
1886
1890
|
|
|
1887
1891
|
class BrandManagerHelper {
|
|
1888
|
-
constructor(productCatalog) {
|
|
1892
|
+
constructor(productCatalog, searchContext, shop) {
|
|
1889
1893
|
this.productCatalog = productCatalog;
|
|
1894
|
+
this.searchContext = searchContext;
|
|
1895
|
+
this.shop = shop;
|
|
1890
1896
|
this.brandsList = {};
|
|
1891
1897
|
}
|
|
1892
1898
|
async setBrandsList(options, brands) {
|
|
1899
|
+
// eslint-disable-next-line no-console
|
|
1900
|
+
console.log('setBrandsList', brands);
|
|
1893
1901
|
const filterBrands = options.filters?.brands;
|
|
1894
1902
|
const indexKey = this.buildIndexBrands(options);
|
|
1895
1903
|
if (isEmpty(brands) && options.filters) {
|
|
@@ -1897,6 +1905,8 @@ class BrandManagerHelper {
|
|
|
1897
1905
|
}
|
|
1898
1906
|
this.brandsList[indexKey] = this.brandsList[indexKey] || brands || (await this.fetchBrandsOnly(options));
|
|
1899
1907
|
this.brandsList[indexKey] = this.brandsList[indexKey].filter(Boolean);
|
|
1908
|
+
// eslint-disable-next-line no-console
|
|
1909
|
+
console.log('setBrandsList indexKey', this.brandsList[indexKey]);
|
|
1900
1910
|
if (options.filters) {
|
|
1901
1911
|
options.filters = {
|
|
1902
1912
|
...options.filters,
|
|
@@ -1916,7 +1926,11 @@ class BrandManagerHelper {
|
|
|
1916
1926
|
return `profile-${options.profile.join(',')}`;
|
|
1917
1927
|
return '';
|
|
1918
1928
|
}
|
|
1919
|
-
async fetchBrandsOnly(options) {
|
|
1929
|
+
async fetchBrandsOnly(options, optionsCache) {
|
|
1930
|
+
if (options.category) {
|
|
1931
|
+
const { distinct } = await this.searchContext.executeSearch(options, this.shop, optionsCache);
|
|
1932
|
+
return distinct.brand;
|
|
1933
|
+
}
|
|
1920
1934
|
return this.productCatalog.productRepository
|
|
1921
1935
|
.findCatalog({
|
|
1922
1936
|
fields: ['id'],
|
|
@@ -1929,12 +1943,15 @@ class BrandManagerHelper {
|
|
|
1929
1943
|
}, options.mainGender)
|
|
1930
1944
|
.then((result) => result.distinct.brand);
|
|
1931
1945
|
}
|
|
1932
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: BrandManagerHelper, deps: [{ token: ProductCatalogFacade }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1946
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: BrandManagerHelper, deps: [{ token: ProductCatalogFacade }, { token: CatalogSearchContext }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1933
1947
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: BrandManagerHelper }); }
|
|
1934
1948
|
}
|
|
1935
1949
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: BrandManagerHelper, decorators: [{
|
|
1936
1950
|
type: Injectable
|
|
1937
|
-
}], ctorParameters: () => [{ type: ProductCatalogFacade }
|
|
1951
|
+
}], ctorParameters: () => [{ type: ProductCatalogFacade }, { type: CatalogSearchContext }, { type: i3.Shops, decorators: [{
|
|
1952
|
+
type: Inject,
|
|
1953
|
+
args: [DEFAULT_SHOP]
|
|
1954
|
+
}] }] });
|
|
1938
1955
|
|
|
1939
1956
|
class CatalogFilterHelper {
|
|
1940
1957
|
buildFilterQuery(filters) {
|
|
@@ -1963,7 +1980,7 @@ class CatalogFilterHelper {
|
|
|
1963
1980
|
filterQuery.rate = { operator: Where.GTE, value: filters.rate };
|
|
1964
1981
|
}
|
|
1965
1982
|
if (filters.tags?.length) {
|
|
1966
|
-
filterQuery.
|
|
1983
|
+
filterQuery.tagsProfile = { operator: Where.LIKE, value: filters.tags };
|
|
1967
1984
|
}
|
|
1968
1985
|
if (filters.customOptions?.length) {
|
|
1969
1986
|
filterQuery.filters = { operator: Where.LIKE, value: filters.customOptions };
|
|
@@ -2047,7 +2064,8 @@ class ProductFieldsHelper {
|
|
|
2047
2064
|
'isKit',
|
|
2048
2065
|
'sku',
|
|
2049
2066
|
'rate',
|
|
2050
|
-
'
|
|
2067
|
+
'tagsProfile',
|
|
2068
|
+
'tagsCollection',
|
|
2051
2069
|
'type',
|
|
2052
2070
|
'shoppingCount',
|
|
2053
2071
|
'gender',
|
|
@@ -2164,8 +2182,14 @@ class CatalogService {
|
|
|
2164
2182
|
async fetchProducts(options, optionsCache) {
|
|
2165
2183
|
this.validateRequest(options);
|
|
2166
2184
|
const searchParams = this.buildSearchParams(options);
|
|
2185
|
+
// eslint-disable-next-line no-console
|
|
2186
|
+
console.log('searchParams', searchParams);
|
|
2167
2187
|
const { data, count: total, maximum, minimal, distinct, } = await this.searchContext.executeSearch(searchParams, this.shop, optionsCache);
|
|
2188
|
+
// eslint-disable-next-line no-console
|
|
2189
|
+
console.log('distinct', distinct);
|
|
2168
2190
|
await this.helpersService.getBrandManager().setBrandsList(searchParams, distinct?.brand);
|
|
2191
|
+
// eslint-disable-next-line no-console
|
|
2192
|
+
console.log('searchParams 2', searchParams);
|
|
2169
2193
|
return this.buildResponse({
|
|
2170
2194
|
data,
|
|
2171
2195
|
total,
|
|
@@ -2984,51 +3008,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
|
|
|
2984
3008
|
}], ctorParameters: () => [{ type: HomeShopRepositoriesFacade }, { type: ConfigurationFacade }] });
|
|
2985
3009
|
|
|
2986
3010
|
class OrderProductReviewService {
|
|
2987
|
-
constructor(orderRepository, productReviewRepository) {
|
|
3011
|
+
constructor(orderRepository, productReviewRepository, variantRepository) {
|
|
2988
3012
|
this.orderRepository = orderRepository;
|
|
2989
3013
|
this.productReviewRepository = productReviewRepository;
|
|
3014
|
+
this.variantRepository = variantRepository;
|
|
2990
3015
|
}
|
|
2991
3016
|
async getPendingReviewsByEmail(email) {
|
|
2992
3017
|
const products = [];
|
|
3018
|
+
const orders = await this.getOrdersByEmail(email);
|
|
3019
|
+
if (orders.length) {
|
|
3020
|
+
for (const order of orders) {
|
|
3021
|
+
const lineItems = order.lineItems.filter((item) => !item.isGift);
|
|
3022
|
+
for (const item of lineItems) {
|
|
3023
|
+
const productReview = await this.getProductReview(order, item);
|
|
3024
|
+
if (productReview?.status != null)
|
|
3025
|
+
continue;
|
|
3026
|
+
products.push(this.buildProductReview(order, item, productReview));
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
3030
|
+
return products;
|
|
3031
|
+
}
|
|
3032
|
+
async getOrdersByEmail(email) {
|
|
2993
3033
|
const { data: orders } = await this.orderRepository.find({
|
|
2994
3034
|
filters: {
|
|
2995
3035
|
user: {
|
|
2996
3036
|
email: email,
|
|
2997
3037
|
},
|
|
2998
3038
|
status: OrderStatus.ENTREGUE,
|
|
3039
|
+
createdAt: {
|
|
3040
|
+
operator: Where.GTE,
|
|
3041
|
+
value: new Date(2024, 0, 0, 0, 0, 0).getTime(),
|
|
3042
|
+
},
|
|
2999
3043
|
},
|
|
3000
3044
|
orderBy: {
|
|
3001
3045
|
createdAt: 'desc',
|
|
3002
3046
|
},
|
|
3003
3047
|
});
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3048
|
+
return orders;
|
|
3049
|
+
}
|
|
3050
|
+
async getProductReview(order, item) {
|
|
3051
|
+
const products = [item.id];
|
|
3052
|
+
const isVariant = await this.variantRepository
|
|
3053
|
+
.find({
|
|
3054
|
+
filters: {
|
|
3055
|
+
id: item.id,
|
|
3056
|
+
},
|
|
3057
|
+
})
|
|
3058
|
+
.then((res) => res.data.at(0));
|
|
3059
|
+
if (isVariant)
|
|
3060
|
+
products.push(isVariant.productId);
|
|
3061
|
+
const productReview = await this.productReviewRepository
|
|
3062
|
+
.find({
|
|
3063
|
+
filters: {
|
|
3064
|
+
orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },
|
|
3065
|
+
productId: { operator: Where.IN, value: products },
|
|
3066
|
+
},
|
|
3067
|
+
})
|
|
3068
|
+
.then((res) => res.data.at(0));
|
|
3069
|
+
return productReview;
|
|
3022
3070
|
}
|
|
3023
3071
|
buildProductReview(order, item, review) {
|
|
3024
3072
|
return {
|
|
3025
3073
|
id: item.id,
|
|
3026
|
-
|
|
3074
|
+
orderId: order.id,
|
|
3075
|
+
orderNumber: order.orderNumber,
|
|
3027
3076
|
isEdition: false,
|
|
3028
3077
|
name: item.name,
|
|
3029
3078
|
image: item.image,
|
|
3030
3079
|
deliveryDate: order.deliveredAt || null,
|
|
3031
3080
|
evaluationInAnalysis: review ? true : false,
|
|
3081
|
+
rating: review ? review.rate : null,
|
|
3032
3082
|
shopProductSlug: item.slug,
|
|
3033
3083
|
};
|
|
3034
3084
|
}
|
|
@@ -3047,7 +3097,7 @@ class OrderProductReviewService {
|
|
|
3047
3097
|
orderId: review.orderId,
|
|
3048
3098
|
}));
|
|
3049
3099
|
}
|
|
3050
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, deps: [{ token: 'OrderRepository' }, { token: 'ProductReviewRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, deps: [{ token: 'OrderRepository' }, { token: 'ProductReviewRepository' }, { token: 'VariantRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3051
3101
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService }); }
|
|
3052
3102
|
}
|
|
3053
3103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OrderProductReviewService, decorators: [{
|
|
@@ -3058,6 +3108,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
|
|
|
3058
3108
|
}] }, { type: undefined, decorators: [{
|
|
3059
3109
|
type: Inject,
|
|
3060
3110
|
args: ['ProductReviewRepository']
|
|
3111
|
+
}] }, { type: undefined, decorators: [{
|
|
3112
|
+
type: Inject,
|
|
3113
|
+
args: ['VariantRepository']
|
|
3061
3114
|
}] }] });
|
|
3062
3115
|
|
|
3063
3116
|
class OrderService {
|