From 6f900cc45d7dd7f97430812b86b5c1d1693c8ae3 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Wed, 29 Aug 2018 17:01:32 +0300 Subject: merge from ecomp a88f0072 - Modern UI Issue-ID: VID-378 Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6 Signed-off-by: Ittay Stern --- .../app/shared/services/aaiService/aai.epics.ts | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 vid-webpack-master/src/app/shared/services/aaiService/aai.epics.ts (limited to 'vid-webpack-master/src/app/shared/services/aaiService/aai.epics.ts') diff --git a/vid-webpack-master/src/app/shared/services/aaiService/aai.epics.ts b/vid-webpack-master/src/app/shared/services/aaiService/aai.epics.ts new file mode 100644 index 000000000..a850d55da --- /dev/null +++ b/vid-webpack-master/src/app/shared/services/aaiService/aai.epics.ts @@ -0,0 +1,81 @@ +import {Injectable} from '@angular/core'; +import {combineEpics, createEpicMiddleware, ofType} 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 {AppState} from "../../store/reducers"; +import { + updateAicZones, updateCategoryParameters, + updateLcpRegionsAndTenants, + updateNetworkCollectionFunction, + updateProductFamilies, updateUserId +} from "../../storeUtil/utils/general/general.actions"; +import {createServiceInstance} from "../../storeUtil/utils/service/service.actions"; +import {delay, mapTo} from "rxjs/operators"; + +const notFetchedAlready = (state: AppState): boolean => state.service.productFamilies !== null; + +@Injectable() +export class AAIEpics { + constructor(private aaiService: AaiService) { + } + + public createEpic() { + return combineEpics( + this.loadProductFamiliesEpic + , this.loadLcpTenants + , this.loadAicZones + , this.loadCategoryParameters + , this.loadServiceAccordingToUuid + , this.loadNetworkAccordingToNetworkFunction + , this.loadUserId) + } + + private loadLcpTenants = (action$, store) => + action$.ofType(LOAD_LCP_TENANT) + .switchMap((action) => this.aaiService.getLcpRegionsAndTenants(action.subscriberId, action.serviceType) + .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 => createServiceInstance(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())); + +} -- cgit 1.2.3-korg