Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x | import { Injectable } from '@angular/core';
import { Store, select } from '@ngrx/store';
import { Observable, combineLatest } from 'rxjs';
import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
import { HttpError } from 'ish-core/models/http-error/http-error.model';
import { selectQueryParam } from 'ish-core/store/core/router';
import { decamelizeString } from 'ish-core/utils/functions';
import { whenTruthy } from 'ish-core/utils/operators';
import { CxmlConfiguration } from '../models/cxml-configuration/cxml-configuration.model';
import { OciConfigurationItem } from '../models/oci-configuration-item/oci-configuration-item.model';
import { PunchoutType, PunchoutUser } from '../models/punchout-user/punchout-user.model';
import {
cxmlConfigurationActions,
getCxmlConfiguration,
getCxmlConfigurationError,
getCxmlConfigurationLoading,
} from '../store/cxml-configuration';
import {
getOciConfiguration,
getOciConfigurationError,
getOciConfigurationLoading,
getOciFormatters,
getOciPlaceholders,
ociConfigurationActions,
} from '../store/oci-configuration';
import { transferPunchoutBasket } from '../store/punchout-functions';
import { getPunchoutTypes, getPunchoutTypesError, getPunchoutTypesLoading } from '../store/punchout-types';
import {
addPunchoutUser,
deletePunchoutUser,
getPunchoutError,
getPunchoutLoading,
getPunchoutUsers,
getSelectedPunchoutUser,
updatePunchoutUser,
} from '../store/punchout-users';
/* eslint-disable @typescript-eslint/member-ordering */
@Injectable({ providedIn: 'root' })
export class PunchoutFacade {
constructor(private store: Store) {}
punchoutLoading$ = combineLatest([
this.store.pipe(select(getPunchoutLoading)),
this.store.pipe(select(getPunchoutTypesLoading)),
]).pipe(map(([loading, typesLoading]) => loading || (typesLoading as boolean)));
punchoutError$ = this.store.pipe(select(getPunchoutError));
punchoutTypesError$: Observable<HttpError> = this.store.pipe(select(getPunchoutTypesError));
supportedPunchoutTypes$: Observable<PunchoutType[]> = this.store.pipe(select(getPunchoutTypes));
selectedPunchoutType$ = combineLatest([
this.store.pipe(select(selectQueryParam('format'))),
this.store.pipe(select(getPunchoutTypes)),
]).pipe(
filter(([format, types]) => !!format || types?.length > 0),
map(([format, types]) => (format as PunchoutType) || types[0]),
distinctUntilChanged()
);
punchoutUsersByRoute$() {
return this.selectedPunchoutType$.pipe(
whenTruthy(),
switchMap(type => this.store.pipe(select(getPunchoutUsers(type))))
);
}
selectedPunchoutUser$ = this.store.pipe(select(getSelectedPunchoutUser));
addPunchoutUser(user: PunchoutUser) {
this.store.dispatch(addPunchoutUser({ user }));
}
updatePunchoutUser(user: PunchoutUser) {
this.store.dispatch(updatePunchoutUser({ user }));
}
deletePunchoutUser(user: PunchoutUser) {
this.store.dispatch(deletePunchoutUser({ user }));
}
transferBasket() {
this.store.dispatch(transferPunchoutBasket());
}
ociConfiguration$() {
this.store.dispatch(ociConfigurationActions.loadOCIOptionsAndConfiguration());
return this.store.pipe(select(getOciConfiguration));
}
ociConfigurationLoading$ = this.store.pipe(select(getOciConfigurationLoading));
ociConfigurationError$ = this.store.pipe(select(getOciConfigurationError));
ociFormatterSelectOptions$ = this.store.pipe(
select(getOciFormatters),
whenTruthy(),
map(formatters => formatters.map(f => ({ label: decamelizeString(f), value: f }))),
map(options => {
options.push({
value: '',
label: 'account.punchout.configuration.option.none.label',
});
return options;
})
);
ociPlaceholders$ = this.store.pipe(select(getOciPlaceholders));
updateOciConfiguration(configuration: OciConfigurationItem[]) {
this.store.dispatch(ociConfigurationActions.updateOCIConfiguration({ configuration }));
}
cxmlConfiguration$() {
this.store.dispatch(cxmlConfigurationActions.loadCXMLConfiguration());
return this.store.pipe(select(getCxmlConfiguration));
}
cxmlConfigurationLoading$ = this.store.pipe(select(getCxmlConfigurationLoading));
cxmlConfigurationError$ = this.store.pipe(select(getCxmlConfigurationError));
updateCxmlConfiguration(configuration: CxmlConfiguration[]) {
this.store.dispatch(cxmlConfigurationActions.updateCXMLConfiguration({ configuration }));
}
resetCxmlConfiguration() {
this.store.dispatch(cxmlConfigurationActions.resetCXMLConfiguration());
}
}
|