@infrab4a/connect-angular 4.0.0-beta.29 → 4.0.0-beta.30
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/esm2020/services/catalog/catalog.service.mjs +32 -7
- package/esm2020/services/catalog/category.service.mjs +24 -4
- package/fesm2015/infrab4a-connect-angular.mjs +57 -7
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
- package/fesm2020/infrab4a-connect-angular.mjs +49 -9
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/services/catalog/catalog.service.d.ts +12 -5
- package/services/catalog/category.service.d.ts +8 -3
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Where } from '@infrab4a/connect';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
1
4
|
export class CatalogService {
|
|
2
|
-
constructor() {
|
|
5
|
+
constructor(productRepository, categoryRepository) {
|
|
6
|
+
this.productRepository = productRepository;
|
|
7
|
+
this.categoryRepository = categoryRepository;
|
|
3
8
|
this.buildFilterQuery = (category, filters) => { };
|
|
4
9
|
this.buildSortQuery = (sort) => {
|
|
5
10
|
const query = {
|
|
@@ -16,11 +21,31 @@ export class CatalogService {
|
|
|
16
21
|
};
|
|
17
22
|
};
|
|
18
23
|
}
|
|
19
|
-
fetchProducts(category, options) {
|
|
20
|
-
|
|
21
|
-
products
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
async fetchProducts(category, options) {
|
|
25
|
+
const productsIds = category.products.length
|
|
26
|
+
? category.products
|
|
27
|
+
: await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products);
|
|
28
|
+
const limits = this.buildLimitQuery(options);
|
|
29
|
+
return await this.productRepository
|
|
30
|
+
.find({
|
|
31
|
+
filters: {
|
|
32
|
+
id: { operator: Where.IN, value: productsIds },
|
|
33
|
+
published: true,
|
|
34
|
+
},
|
|
35
|
+
limits,
|
|
36
|
+
})
|
|
37
|
+
.then(({ data, count: total }) => ({ products: data, pages: Math.ceil(total / limits.limit), total }));
|
|
24
38
|
}
|
|
25
39
|
}
|
|
26
|
-
|
|
40
|
+
CatalogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
CatalogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, decorators: [{
|
|
43
|
+
type: Injectable
|
|
44
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
45
|
+
type: Inject,
|
|
46
|
+
args: ['ProductRepository']
|
|
47
|
+
}] }, { type: undefined, decorators: [{
|
|
48
|
+
type: Inject,
|
|
49
|
+
args: ['CategoryRepository']
|
|
50
|
+
}] }]; } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQStFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUl0SCxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNnRCxpQkFBb0MsRUFDbkMsa0JBQXNDO1FBRHZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXVCL0UscUJBQWdCLEdBQUcsQ0FBQyxRQUFrQixFQUFFLE9BQWlCLEVBQU8sRUFBRSxHQUFFLENBQUMsQ0FBQTtRQUVyRSxtQkFBYyxHQUFHLENBQUMsSUFBaUIsRUFBOEIsRUFBRTtZQUN6RSxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxLQUFLO2FBQ2QsQ0FBQTtZQUVELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQyxDQUFBO1FBRU8sb0JBQWUsR0FBRyxDQUFDLE9BQTRDLEVBQXVDLEVBQUU7WUFDOUcsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUE7WUFFcEMsT0FBTztnQkFDTCxLQUFLO2dCQUNMLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLO2FBQzNDLENBQUE7UUFDSCxDQUFDLENBQUE7SUF4Q0UsQ0FBQztJQUVKLEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQWtCLEVBQ2xCLE9BQXFGO1FBRXJGLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUMxQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDbkIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMxRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTVDLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCO2FBQ2hDLElBQUksQ0FBQztZQUNKLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUM5QyxTQUFTLEVBQUUsSUFBSTthQUNoQjtZQUNELE1BQU07U0FDUCxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxRyxDQUFDOzsyR0F4QlUsY0FBYyxrQkFFZixtQkFBbUIsYUFDbkIsb0JBQW9COytHQUhuQixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENhdGVnb3J5UmVwb3NpdG9yeSwgUHJvZHVjdCwgUHJvZHVjdFJlcG9zaXRvcnksIFJlcG9zaXRvcnlPcmRlckJ5LCBXaGVyZSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgUHJvZHVjdFNvcnQgfSBmcm9tICcuL3R5cGVzL3Byb2R1Y3Qtc29ydC50eXBlJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2F0YWxvZ1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICkge31cblxuICBhc3luYyBmZXRjaFByb2R1Y3RzKFxuICAgIGNhdGVnb3J5OiBDYXRlZ29yeSxcbiAgICBvcHRpb25zPzogeyBwYWdlPzogbnVtYmVyOyBwZXJQYWdlPzogbnVtYmVyOyBmaWx0ZXJzPzogc3RyaW5nW107IHNvcnQ/OiBQcm9kdWN0U29ydCB9LFxuICApOiBQcm9taXNlPHsgcHJvZHVjdHM6IFByb2R1Y3RbXTsgcGFnZXM6IG51bWJlcjsgdG90YWw6IG51bWJlciB9PiB7XG4gICAgY29uc3QgcHJvZHVjdHNJZHMgPSBjYXRlZ29yeS5wcm9kdWN0cy5sZW5ndGhcbiAgICAgID8gY2F0ZWdvcnkucHJvZHVjdHNcbiAgICAgIDogYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNhdGVnb3J5LmlkIH0pLnRoZW4oKGNhdGVnb3J5Rm91bmQpID0+IGNhdGVnb3J5Rm91bmQucHJvZHVjdHMpXG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XG4gICAgICAuZmluZCh7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0c0lkcyB9LFxuICAgICAgICAgIHB1Ymxpc2hlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXRzLFxuICAgICAgfSlcbiAgICAgIC50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCB9KSA9PiAoeyBwcm9kdWN0czogZGF0YSwgcGFnZXM6IE1hdGguY2VpbCh0b3RhbCAvIGxpbWl0cy5saW1pdCksIHRvdGFsIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZpbHRlclF1ZXJ5ID0gKGNhdGVnb3J5OiBDYXRlZ29yeSwgZmlsdGVyczogc3RyaW5nW10pOiBhbnkgPT4ge31cblxuICBwcml2YXRlIGJ1aWxkU29ydFF1ZXJ5ID0gKHNvcnQ6IFByb2R1Y3RTb3J0KTogUmVwb3NpdG9yeU9yZGVyQnk8UHJvZHVjdD4gPT4ge1xuICAgIGNvbnN0IHF1ZXJ5OiBSZXBvc2l0b3J5T3JkZXJCeTxQcm9kdWN0PiA9IHtcbiAgICAgIHN0b2NrOiAnZGVzYycsXG4gICAgICBnZW5kZXI6ICdhc2MnLFxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExpbWl0UXVlcnkgPSAob3B0aW9uczogeyBwYWdlPzogbnVtYmVyOyBwZXJQYWdlPzogbnVtYmVyIH0pOiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBvcHRpb25zPy5wZXJQYWdlIHx8IDIwXG5cbiAgICByZXR1cm4ge1xuICAgICAgbGltaXQsXG4gICAgICBvZmZzZXQ6ICgob3B0aW9ucz8ucGFnZSB8fCAxKSAtIDEpICogbGltaXQsXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
1
3
|
export class CategoryService {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
+
constructor(categoryFilterRepository) {
|
|
5
|
+
this.categoryFilterRepository = categoryFilterRepository;
|
|
4
6
|
}
|
|
5
|
-
|
|
7
|
+
async fetchSubCategories(category) {
|
|
6
8
|
return [];
|
|
7
9
|
}
|
|
10
|
+
async fetchFilterOptions(category, filters) {
|
|
11
|
+
const categoryFilters = category.filters && category.filters.length
|
|
12
|
+
? category.filters
|
|
13
|
+
: await this.categoryFilterRepository
|
|
14
|
+
.find({ filters: { categoryId: +category.id } })
|
|
15
|
+
.then(({ data }) => data.map((categoryFilter) => categoryFilter.filter));
|
|
16
|
+
return filters?.length
|
|
17
|
+
? categoryFilters.filter((categoryFilter) => !filters || !filters.length || categoryFilter.options.some((option) => filters.includes(option.id)))
|
|
18
|
+
: categoryFilters;
|
|
19
|
+
}
|
|
8
20
|
}
|
|
9
|
-
|
|
21
|
+
CategoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService, deps: [{ token: 'CategoryFilterRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
CategoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
26
|
+
type: Inject,
|
|
27
|
+
args: ['CategoryFilterRepository']
|
|
28
|
+
}] }]; } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy9jYXRlZ29yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQU1sRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUN1RCx3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUN0RyxDQUFDO0lBRUosS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQWtCO1FBQ3pDLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFrQixFQUFFLE9BQWtCO1FBQzdELE1BQU0sZUFBZSxHQUNuQixRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUN6QyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDbEIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QjtpQkFDaEMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRWhGLE9BQU8sT0FBTyxFQUFFLE1BQU07WUFDcEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3BCLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FDakIsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN0RztZQUNILENBQUMsQ0FBQyxlQUFlLENBQUE7SUFDckIsQ0FBQzs7NEdBdkJVLGVBQWUsa0JBRWhCLDBCQUEwQjtnSEFGekIsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFHTixNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRlZ29yeSwgQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5LCBGaWx0ZXIgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcblxuaW1wb3J0IHsgQ2F0ZWdvcnlXaXRoVHJlZSB9IGZyb20gJy4vbW9kZWxzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeSxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoU3ViQ2F0ZWdvcmllcyhjYXRlZ29yeTogQ2F0ZWdvcnkpOiBQcm9taXNlPENhdGVnb3J5V2l0aFRyZWVbXT4ge1xuICAgIHJldHVybiBbXVxuICB9XG5cbiAgYXN5bmMgZmV0Y2hGaWx0ZXJPcHRpb25zKGNhdGVnb3J5OiBDYXRlZ29yeSwgZmlsdGVycz86IHN0cmluZ1tdKTogUHJvbWlzZTxGaWx0ZXJbXT4ge1xuICAgIGNvbnN0IGNhdGVnb3J5RmlsdGVycyA9XG4gICAgICBjYXRlZ29yeS5maWx0ZXJzICYmIGNhdGVnb3J5LmZpbHRlcnMubGVuZ3RoXG4gICAgICAgID8gY2F0ZWdvcnkuZmlsdGVyc1xuICAgICAgICA6IGF3YWl0IHRoaXMuY2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5XG4gICAgICAgICAgICAuZmluZCh7IGZpbHRlcnM6IHsgY2F0ZWdvcnlJZDogK2NhdGVnb3J5LmlkIH0gfSlcbiAgICAgICAgICAgIC50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YS5tYXAoKGNhdGVnb3J5RmlsdGVyKSA9PiBjYXRlZ29yeUZpbHRlci5maWx0ZXIpKVxuXG4gICAgcmV0dXJuIGZpbHRlcnM/Lmxlbmd0aFxuICAgICAgPyBjYXRlZ29yeUZpbHRlcnMuZmlsdGVyKFxuICAgICAgICAgIChjYXRlZ29yeUZpbHRlcikgPT5cbiAgICAgICAgICAgICFmaWx0ZXJzIHx8ICFmaWx0ZXJzLmxlbmd0aCB8fCBjYXRlZ29yeUZpbHRlci5vcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gZmlsdGVycy5pbmNsdWRlcyhvcHRpb24uaWQpKSxcbiAgICAgICAgKVxuICAgICAgOiBjYXRlZ29yeUZpbHRlcnNcbiAgfVxufVxuIl19
|
|
@@ -1418,7 +1418,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
1418
1418
|
} });
|
|
1419
1419
|
|
|
1420
1420
|
class CatalogService {
|
|
1421
|
-
constructor() {
|
|
1421
|
+
constructor(productRepository, categoryRepository) {
|
|
1422
|
+
this.productRepository = productRepository;
|
|
1423
|
+
this.categoryRepository = categoryRepository;
|
|
1422
1424
|
this.buildFilterQuery = (category, filters) => { };
|
|
1423
1425
|
this.buildSortQuery = (sort) => {
|
|
1424
1426
|
const query = {
|
|
@@ -1436,21 +1438,69 @@ class CatalogService {
|
|
|
1436
1438
|
};
|
|
1437
1439
|
}
|
|
1438
1440
|
fetchProducts(category, options) {
|
|
1439
|
-
return {
|
|
1440
|
-
products
|
|
1441
|
-
|
|
1442
|
-
|
|
1441
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1442
|
+
const productsIds = category.products.length
|
|
1443
|
+
? category.products
|
|
1444
|
+
: yield this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products);
|
|
1445
|
+
const limits = this.buildLimitQuery(options);
|
|
1446
|
+
return yield this.productRepository
|
|
1447
|
+
.find({
|
|
1448
|
+
filters: {
|
|
1449
|
+
id: { operator: Where.IN, value: productsIds },
|
|
1450
|
+
published: true,
|
|
1451
|
+
},
|
|
1452
|
+
limits,
|
|
1453
|
+
})
|
|
1454
|
+
.then(({ data, count: total }) => ({ products: data, pages: Math.ceil(total / limits.limit), total }));
|
|
1455
|
+
});
|
|
1443
1456
|
}
|
|
1444
1457
|
}
|
|
1458
|
+
CatalogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1459
|
+
CatalogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService });
|
|
1460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, decorators: [{
|
|
1461
|
+
type: Injectable
|
|
1462
|
+
}], ctorParameters: function () {
|
|
1463
|
+
return [{ type: undefined, decorators: [{
|
|
1464
|
+
type: Inject,
|
|
1465
|
+
args: ['ProductRepository']
|
|
1466
|
+
}] }, { type: undefined, decorators: [{
|
|
1467
|
+
type: Inject,
|
|
1468
|
+
args: ['CategoryRepository']
|
|
1469
|
+
}] }];
|
|
1470
|
+
} });
|
|
1445
1471
|
|
|
1446
1472
|
class CategoryService {
|
|
1473
|
+
constructor(categoryFilterRepository) {
|
|
1474
|
+
this.categoryFilterRepository = categoryFilterRepository;
|
|
1475
|
+
}
|
|
1447
1476
|
fetchSubCategories(category) {
|
|
1448
|
-
return
|
|
1477
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1478
|
+
return [];
|
|
1479
|
+
});
|
|
1449
1480
|
}
|
|
1450
1481
|
fetchFilterOptions(category, filters) {
|
|
1451
|
-
return
|
|
1482
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1483
|
+
const categoryFilters = category.filters && category.filters.length
|
|
1484
|
+
? category.filters
|
|
1485
|
+
: yield this.categoryFilterRepository
|
|
1486
|
+
.find({ filters: { categoryId: +category.id } })
|
|
1487
|
+
.then(({ data }) => data.map((categoryFilter) => categoryFilter.filter));
|
|
1488
|
+
return (filters === null || filters === void 0 ? void 0 : filters.length)
|
|
1489
|
+
? categoryFilters.filter((categoryFilter) => !filters || !filters.length || categoryFilter.options.some((option) => filters.includes(option.id)))
|
|
1490
|
+
: categoryFilters;
|
|
1491
|
+
});
|
|
1452
1492
|
}
|
|
1453
1493
|
}
|
|
1494
|
+
CategoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService, deps: [{ token: 'CategoryFilterRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1495
|
+
CategoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService });
|
|
1496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategoryService, decorators: [{
|
|
1497
|
+
type: Injectable
|
|
1498
|
+
}], ctorParameters: function () {
|
|
1499
|
+
return [{ type: undefined, decorators: [{
|
|
1500
|
+
type: Inject,
|
|
1501
|
+
args: ['CategoryFilterRepository']
|
|
1502
|
+
}] }];
|
|
1503
|
+
} });
|
|
1454
1504
|
|
|
1455
1505
|
var ProductSorts;
|
|
1456
1506
|
(function (ProductSorts) {
|