import {updateServiceInstance} from './../../service.actions'; import {Injectable} from '@angular/core'; import {createEpicMiddleware} from 'redux-observable'; import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/startWith'; import { LOAD_PRODUCT_FAMILIES, LOAD_LCP_TENANT, LOAD_AIC_ZONES, LOAD_CATEGORY_PARAMETERS, LOAD_SERVICE_MDOEL_BY_UUID, LOAD_NETWORK_ACCORDING_TO_NF, LOAD_USER_ID } from "./aai.actions"; import {AaiService} from "./aai.service"; import { updateAicZones, updateCategoryParameters, updateLcpRegionsAndTenants, updateNetworkCollectionFunction, updateProductFamilies, updateUserId } from "../../service.actions"; import {AppState} from "../../store/reducers"; const notFetchedAlready = (state: AppState): boolean => state.service.productFamilies !== null; @Injectable() export class AAIEpics { constructor(private aaiService: AaiService) { } public createEpic() { return [createEpicMiddleware(this.loadProductFamiliesEpic) , createEpicMiddleware(this.loadLcpTenants) , createEpicMiddleware(this.loadAicZones) , createEpicMiddleware(this.loadCategoryParameters) , createEpicMiddleware(this.loadServiceAccordingToUuid) , createEpicMiddleware(this.loadNetworkAccordingToNetworkFunction) , createEpicMiddleware(this.loadUserId) ]; } private loadLcpTenants = (action$, store) => action$ .ofType(LOAD_LCP_TENANT) .switchMap(() => this .aaiService .getLcpRegionsAndTenants('e433710f-9217-458d-a79d-1c7aff376d89', 'VIRTUAL USP') .map(data => updateLcpRegionsAndTenants(data))); private loadProductFamiliesEpic = (action$, store) => action$ .ofType(LOAD_PRODUCT_FAMILIES) .switchMap(() => this.aaiService.getProductFamilies().map(data => updateProductFamilies(data))); private loadCategoryParameters = (action$, store) => action$ .ofType(LOAD_CATEGORY_PARAMETERS) .switchMap(() => this.aaiService.getCategoryParameters(null).map(data => updateCategoryParameters(data))); private loadNetworkAccordingToNetworkFunction = (action$, store) => action$ .ofType(LOAD_NETWORK_ACCORDING_TO_NF) .flatMap((action) => this.aaiService.getCRAccordingToNetworkFunctionId(action.networkFunctions, action.cloudOwner, action.cloudRegionId).map((res) => updateNetworkCollectionFunction(action.networkFunctions, res))); private loadServiceAccordingToUuid = (action$, store) => action$ .ofType(LOAD_SERVICE_MDOEL_BY_UUID) .switchMap((action) => this.aaiService.getServiceModelById(action.modelId) .map(data => updateServiceInstance(action.uuid, data))); private loadUserId = (action$, store) => action$ .ofType(LOAD_USER_ID) .switchMap(() => this.aaiService.getUserId() .map(res => updateUserId(res))); private loadAicZones = (action$, store) => action$ .ofType(LOAD_AIC_ZONES) .switchMap(() => this.aaiService.getAicZones().map(data => updateAicZones(data))); // .catch(response => of(this.actions.loadFailed(status))) // .startWith(this.actions.loadStarted())); }