@spartacus/core
Version:
Spartacus - the core framework
53 lines • 8.71 kB
JavaScript
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=