UNPKG

@spartacus/core

Version:

Spartacus - the core framework

53 lines 8.71 kB
import { Injectable } from '@angular/core'; import { PRODUCT_NORMALIZER } from '../../../../product/connectors/product/converters'; import * as i0 from "@angular/core"; import * as i1 from "../../../../util/converter.service"; import * as i2 from "./order-entry-promotions-service"; export class OccCartNormalizer { constructor(converter, entryPromotionService) { this.converter = converter; this.entryPromotionService = entryPromotionService; } convert(source, target) { if (target === undefined) { target = Object.assign({}, source); } this.removeDuplicatePromotions(source, target); if (source.entries) { target.entries = source.entries.map((entry) => (Object.assign(Object.assign({}, entry), { product: this.converter.convert(entry.product, PRODUCT_NORMALIZER), promotions: this.entryPromotionService ? this.entryPromotionService.getProductPromotion(entry, target === null || target === void 0 ? void 0 : target.appliedProductPromotions) : [] }))); } return target; } /** * Remove all duplicate promotions */ removeDuplicatePromotions(source, target) { if (source && source.potentialOrderPromotions) { target.potentialOrderPromotions = this.removeDuplicateItems(source.potentialOrderPromotions); } if (source && source.potentialProductPromotions) { target.potentialProductPromotions = this.removeDuplicateItems(source.potentialProductPromotions); } if (source && source.appliedOrderPromotions) { target.appliedOrderPromotions = this.removeDuplicateItems(source.appliedOrderPromotions); } if (source && source.appliedProductPromotions) { target.appliedProductPromotions = this.removeDuplicateItems(source.appliedProductPromotions); } } removeDuplicateItems(itemList) { return itemList.filter((p, i, a) => { const b = a.map((el) => JSON.stringify(el)); return i === b.indexOf(JSON.stringify(p)); }); } } OccCartNormalizer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccCartNormalizer, deps: [{ token: i1.ConverterService }, { token: i2.OrderEntryPromotionsService }], target: i0.ɵɵFactoryTarget.Injectable }); OccCartNormalizer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccCartNormalizer, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccCartNormalizer, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i1.ConverterService }, { type: i2.OrderEntryPromotionsService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjLWNhcnQtbm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL29jYy9hZGFwdGVycy9jYXJ0L2NvbnZlcnRlcnMvb2NjLWNhcnQtbm9ybWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDVSxTQUEyQixFQUMzQixxQkFBbUQ7UUFEbkQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtJQUMxRCxDQUFDO0lBRUosT0FBTyxDQUFDLE1BQWdCLEVBQUUsTUFBYTtRQUNyQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxHQUFHLGtCQUFNLE1BQWMsQ0FBVSxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsaUNBQzFDLEtBQUssS0FDUixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxFQUNsRSxVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtvQkFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FDNUMsS0FBSyxFQUNMLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSx3QkFBd0IsQ0FDakM7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsSUFDTixDQUFDLENBQUM7U0FDTDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QixDQUFDLE1BQVcsRUFBRSxNQUFZO1FBQ3pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtZQUM3QyxNQUFNLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN6RCxNQUFNLENBQUMsd0JBQXdCLENBQ2hDLENBQUM7U0FDSDtRQUVELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQywwQkFBMEIsRUFBRTtZQUMvQyxNQUFNLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUMzRCxNQUFNLENBQUMsMEJBQTBCLENBQ2xDLENBQUM7U0FDSDtRQUVELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTtZQUMzQyxNQUFNLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN2RCxNQUFNLENBQUMsc0JBQXNCLENBQzlCLENBQUM7U0FDSDtRQUVELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtZQUM3QyxNQUFNLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN6RCxNQUFNLENBQUMsd0JBQXdCLENBQ2hDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFlO1FBQzFDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBL0RVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTsyRkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbC9jYXJ0Lm1vZGVsJztcbmltcG9ydCB7IFBST0RVQ1RfTk9STUFMSVpFUiB9IGZyb20gJy4uLy4uLy4uLy4uL3Byb2R1Y3QvY29ubmVjdG9ycy9wcm9kdWN0L2NvbnZlcnRlcnMnO1xuaW1wb3J0IHtcbiAgQ29udmVydGVyLFxuICBDb252ZXJ0ZXJTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL2NvbnZlcnRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9jYyB9IGZyb20gJy4uLy4uLy4uL29jYy1tb2RlbHMvb2NjLm1vZGVscyc7XG5pbXBvcnQgeyBPcmRlckVudHJ5UHJvbW90aW9uc1NlcnZpY2UgfSBmcm9tICcuL29yZGVyLWVudHJ5LXByb21vdGlvbnMtc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT2NjQ2FydE5vcm1hbGl6ZXIgaW1wbGVtZW50cyBDb252ZXJ0ZXI8T2NjLkNhcnQsIENhcnQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb252ZXJ0ZXI6IENvbnZlcnRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnRyeVByb21vdGlvblNlcnZpY2U/OiBPcmRlckVudHJ5UHJvbW90aW9uc1NlcnZpY2VcbiAgKSB7fVxuXG4gIGNvbnZlcnQoc291cmNlOiBPY2MuQ2FydCwgdGFyZ2V0PzogQ2FydCk6IENhcnQge1xuICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0ID0geyAuLi4oc291cmNlIGFzIGFueSkgfSBhcyBDYXJ0O1xuICAgIH1cblxuICAgIHRoaXMucmVtb3ZlRHVwbGljYXRlUHJvbW90aW9ucyhzb3VyY2UsIHRhcmdldCk7XG5cbiAgICBpZiAoc291cmNlLmVudHJpZXMpIHtcbiAgICAgIHRhcmdldC5lbnRyaWVzID0gc291cmNlLmVudHJpZXMubWFwKChlbnRyeSkgPT4gKHtcbiAgICAgICAgLi4uZW50cnksXG4gICAgICAgIHByb2R1Y3Q6IHRoaXMuY29udmVydGVyLmNvbnZlcnQoZW50cnkucHJvZHVjdCwgUFJPRFVDVF9OT1JNQUxJWkVSKSxcbiAgICAgICAgcHJvbW90aW9uczogdGhpcy5lbnRyeVByb21vdGlvblNlcnZpY2VcbiAgICAgICAgICA/IHRoaXMuZW50cnlQcm9tb3Rpb25TZXJ2aWNlLmdldFByb2R1Y3RQcm9tb3Rpb24oXG4gICAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgICB0YXJnZXQ/LmFwcGxpZWRQcm9kdWN0UHJvbW90aW9uc1xuICAgICAgICAgICAgKVxuICAgICAgICAgIDogW10sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGR1cGxpY2F0ZSBwcm9tb3Rpb25zXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZUR1cGxpY2F0ZVByb21vdGlvbnMoc291cmNlOiBhbnksIHRhcmdldDogQ2FydCk6IHZvaWQge1xuICAgIGlmIChzb3VyY2UgJiYgc291cmNlLnBvdGVudGlhbE9yZGVyUHJvbW90aW9ucykge1xuICAgICAgdGFyZ2V0LnBvdGVudGlhbE9yZGVyUHJvbW90aW9ucyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlSXRlbXMoXG4gICAgICAgIHNvdXJjZS5wb3RlbnRpYWxPcmRlclByb21vdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSAmJiBzb3VyY2UucG90ZW50aWFsUHJvZHVjdFByb21vdGlvbnMpIHtcbiAgICAgIHRhcmdldC5wb3RlbnRpYWxQcm9kdWN0UHJvbW90aW9ucyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlSXRlbXMoXG4gICAgICAgIHNvdXJjZS5wb3RlbnRpYWxQcm9kdWN0UHJvbW90aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlICYmIHNvdXJjZS5hcHBsaWVkT3JkZXJQcm9tb3Rpb25zKSB7XG4gICAgICB0YXJnZXQuYXBwbGllZE9yZGVyUHJvbW90aW9ucyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlSXRlbXMoXG4gICAgICAgIHNvdXJjZS5hcHBsaWVkT3JkZXJQcm9tb3Rpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgJiYgc291cmNlLmFwcGxpZWRQcm9kdWN0UHJvbW90aW9ucykge1xuICAgICAgdGFyZ2V0LmFwcGxpZWRQcm9kdWN0UHJvbW90aW9ucyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlSXRlbXMoXG4gICAgICAgIHNvdXJjZS5hcHBsaWVkUHJvZHVjdFByb21vdGlvbnNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVJdGVtcyhpdGVtTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1MaXN0LmZpbHRlcigocCwgaSwgYSkgPT4ge1xuICAgICAgY29uc3QgYiA9IGEubWFwKChlbCkgPT4gSlNPTi5zdHJpbmdpZnkoZWwpKTtcbiAgICAgIHJldHVybiBpID09PSBiLmluZGV4T2YoSlNPTi5zdHJpbmdpZnkocCkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=