summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/services/aaiService/aai.epics.ts
blob: 5249cea820a6084c21e91a5f66272ae54e4b4050 (plain)
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
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()));

}