@spartacus/checkout
Version:
Checkout feature library for Spartacus
59 lines • 8.19 kB
JavaScript
import { Injectable } from '@angular/core';
import { select } from '@ngrx/store';
import { combineLatest } from 'rxjs';
import { filter, map, take } from 'rxjs/operators';
import { CheckoutActions } from '../store/actions/index';
import { CheckoutSelectors } from '../store/selectors/index';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/store";
import * as i2 from "@spartacus/core";
export class CheckoutCostCenterService {
constructor(checkoutStore, activeCartService, userIdService) {
this.checkoutStore = checkoutStore;
this.activeCartService = activeCartService;
this.userIdService = userIdService;
}
/**
* Set cost center to cart
* @param costCenterId : cost center id
*/
setCostCenter(costCenterId) {
let cartId;
this.activeCartService
.getActiveCartId()
.pipe(take(1))
.subscribe((activeCartId) => (cartId = activeCartId));
this.userIdService.takeUserId(true).subscribe((userId) => {
if (cartId) {
this.checkoutStore.dispatch(new CheckoutActions.SetCostCenter({
userId: userId,
cartId: cartId,
costCenterId: costCenterId,
}));
}
}, () => {
// TODO: for future releases, refactor this part to thrown errors
});
}
/**
* Get cost center id from cart
*/
getCostCenter() {
return combineLatest([
this.activeCartService.getActive(),
this.checkoutStore.pipe(select(CheckoutSelectors.getCostCenter)),
]).pipe(filter(([cart]) => Boolean(cart)), map(([cart, costCenterId]) => {
if (costCenterId === undefined && cart.costCenter) {
costCenterId = cart.costCenter.code;
this.checkoutStore.dispatch(new CheckoutActions.SetCostCenterSuccess(cart.costCenter.code));
}
return costCenterId;
}));
}
}
CheckoutCostCenterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutCostCenterService, deps: [{ token: i1.Store }, { token: i2.ActiveCartService }, { token: i2.UserIdService }], target: i0.ɵɵFactoryTarget.Injectable });
CheckoutCostCenterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutCostCenterService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutCostCenterService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ActiveCartService }, { type: i2.UserIdService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtY29zdC1jZW50ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2ZlYXR1cmUtbGlicy9jaGVja291dC9jb3JlL2ZhY2FkZS9jaGVja291dC1jb3N0LWNlbnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUc1QyxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUc3RCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1ksYUFBdUMsRUFDdkMsaUJBQW9DLEVBQ3BDLGFBQTRCO1FBRjVCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ3JDLENBQUM7SUFFSjs7O09BR0c7SUFDSCxhQUFhLENBQUMsWUFBb0I7UUFDaEMsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQjthQUNuQixlQUFlLEVBQUU7YUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQzNDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDVCxJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDekIsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDO29CQUNoQyxNQUFNLEVBQUUsTUFBTTtvQkFDZCxNQUFNLEVBQUUsTUFBTTtvQkFDZCxZQUFZLEVBQUUsWUFBWTtpQkFDM0IsQ0FBQyxDQUNILENBQUM7YUFDSDtRQUNILENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDSCxpRUFBaUU7UUFDbkUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakUsQ0FBQyxDQUFDLElBQUksQ0FDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakQsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDekIsSUFBSSxlQUFlLENBQUMsb0JBQW9CLENBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBYyxDQUMvQixDQUNGLENBQUM7YUFDSDtZQUNELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztzSEF6RFUseUJBQXlCOzBIQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBDaGVja291dENvc3RDZW50ZXJGYWNhZGUgfSBmcm9tICdAc3BhcnRhY3VzL2NoZWNrb3V0L3Jvb3QnO1xuaW1wb3J0IHsgQWN0aXZlQ2FydFNlcnZpY2UsIFVzZXJJZFNlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGVja291dEFjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hY3Rpb25zL2luZGV4JztcbmltcG9ydCB7IFN0YXRlV2l0aENoZWNrb3V0IH0gZnJvbSAnLi4vc3RvcmUvY2hlY2tvdXQtc3RhdGUnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9zZWxlY3RvcnMvaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRDb3N0Q2VudGVyU2VydmljZSBpbXBsZW1lbnRzIENoZWNrb3V0Q29zdENlbnRlckZhY2FkZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjaGVja291dFN0b3JlOiBTdG9yZTxTdGF0ZVdpdGhDaGVja291dD4sXG4gICAgcHJvdGVjdGVkIGFjdGl2ZUNhcnRTZXJ2aWNlOiBBY3RpdmVDYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcklkU2VydmljZTogVXNlcklkU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFNldCBjb3N0IGNlbnRlciB0byBjYXJ0XG4gICAqIEBwYXJhbSBjb3N0Q2VudGVySWQgOiBjb3N0IGNlbnRlciBpZFxuICAgKi9cbiAgc2V0Q29zdENlbnRlcihjb3N0Q2VudGVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjYXJ0SWQ6IHN0cmluZztcbiAgICB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlXG4gICAgICAuZ2V0QWN0aXZlQ2FydElkKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChhY3RpdmVDYXJ0SWQpID0+IChjYXJ0SWQgPSBhY3RpdmVDYXJ0SWQpKTtcblxuICAgIHRoaXMudXNlcklkU2VydmljZS50YWtlVXNlcklkKHRydWUpLnN1YnNjcmliZShcbiAgICAgICh1c2VySWQpID0+IHtcbiAgICAgICAgaWYgKGNhcnRJZCkge1xuICAgICAgICAgIHRoaXMuY2hlY2tvdXRTdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBDaGVja291dEFjdGlvbnMuU2V0Q29zdENlbnRlcih7XG4gICAgICAgICAgICAgIHVzZXJJZDogdXNlcklkLFxuICAgICAgICAgICAgICBjYXJ0SWQ6IGNhcnRJZCxcbiAgICAgICAgICAgICAgY29zdENlbnRlcklkOiBjb3N0Q2VudGVySWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIFRPRE86IGZvciBmdXR1cmUgcmVsZWFzZXMsIHJlZmFjdG9yIHRoaXMgcGFydCB0byB0aHJvd24gZXJyb3JzXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29zdCBjZW50ZXIgaWQgZnJvbSBjYXJ0XG4gICAqL1xuICBnZXRDb3N0Q2VudGVyKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hY3RpdmVDYXJ0U2VydmljZS5nZXRBY3RpdmUoKSxcbiAgICAgIHRoaXMuY2hlY2tvdXRTdG9yZS5waXBlKHNlbGVjdChDaGVja291dFNlbGVjdG9ycy5nZXRDb3N0Q2VudGVyKSksXG4gICAgXSkucGlwZShcbiAgICAgIGZpbHRlcigoW2NhcnRdKSA9PiBCb29sZWFuKGNhcnQpKSxcbiAgICAgIG1hcCgoW2NhcnQsIGNvc3RDZW50ZXJJZF0pID0+IHtcbiAgICAgICAgaWYgKGNvc3RDZW50ZXJJZCA9PT0gdW5kZWZpbmVkICYmIGNhcnQuY29zdENlbnRlcikge1xuICAgICAgICAgIGNvc3RDZW50ZXJJZCA9IGNhcnQuY29zdENlbnRlci5jb2RlO1xuICAgICAgICAgIHRoaXMuY2hlY2tvdXRTdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBDaGVja291dEFjdGlvbnMuU2V0Q29zdENlbnRlclN1Y2Nlc3MoXG4gICAgICAgICAgICAgIGNhcnQuY29zdENlbnRlci5jb2RlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvc3RDZW50ZXJJZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19