blob: 5249cea820a6084c21e91a5f66272ae54e4b4050 [file] [log] [blame]
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()));
}