removing retain assignments checkbox from upgade vfModule screen
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / vrf / vrf.reducer.ts
1 import {ServiceState} from "../main.reducer";
2 import {Action} from "redux";
3 import * as _ from "lodash";
4 import {
5   AssociateVRFMemberInstanceAction,
6   ClearAssociateVRFMemberInstanceAction,
7   CreateVRFInstanceAction, DeleteActionVrfInstanceAction, UndoDeleteActionVrfInstanceAction,
8   VrfActions
9 } from "./vrf.actions";
10 import {calculateNextUniqueModelName} from "../vnf/vnf.reducers";
11 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
12
13 export function vrfReducer(state: ServiceState, action: Action): ServiceState {
14   switch (action.type) {
15     case VrfActions.CREATE_VRF_INSTANCE: {
16       const createVRFInstanceAction = <CreateVRFInstanceAction>action;
17       const serviceUuid = createVRFInstanceAction.serviceModelId;
18
19       let newState = _.cloneDeep(state);
20
21       const vrfModelName = calculateNextUniqueModelName(createVRFInstanceAction.vrfModel['name'], serviceUuid, newState, 'vrfs');
22       newState.serviceInstance[serviceUuid].vrfs[vrfModelName] = <any>{
23         ...createVRFInstanceAction.vrfModel
24       };
25       return newState;
26     }
27     case VrfActions.VRF_ASSOCIATE_MEMBER: {
28       const associateVRFMemberInstanceAction = <AssociateVRFMemberInstanceAction>action;
29       const serviceUuid = associateVRFMemberInstanceAction.serviceModelId;
30       const member = associateVRFMemberInstanceAction.member;
31       const vrfStoreKey = associateVRFMemberInstanceAction.vrfStoreKey;
32       const memberType = associateVRFMemberInstanceAction.memberType;
33
34       let newState = _.cloneDeep(state);
35
36       if(_.isNil(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType])){
37         newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
38       }
39
40       const numberOfKeys = Object.keys(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType]).length;
41       newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType][`${vrfStoreKey} ${memberType} ${numberOfKeys+1}`] = member;
42
43       return newState;
44     }
45     case VrfActions.VRF_ASSOCIATE_MEMBER: {
46       const associateVRFMemberInstanceAction = <AssociateVRFMemberInstanceAction>action;
47       const serviceUuid = associateVRFMemberInstanceAction.serviceModelId;
48       const member = associateVRFMemberInstanceAction.member;
49       const vrfStoreKey = associateVRFMemberInstanceAction.vrfStoreKey;
50       const memberType = associateVRFMemberInstanceAction.memberType;
51
52       let newState = _.cloneDeep(state);
53
54       if(_.isNil(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType])){
55         newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
56       }
57
58       const numberOfKeys = Object.keys(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType]).length;
59       newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType][`${vrfStoreKey} ${memberType} ${numberOfKeys+1}`] = member;
60
61       return newState;
62     }
63     case VrfActions.CLAER_ASSOCIATE__VRF_MEMBERS: {
64       const clearAssociateVRFMemberInstanceAction = <ClearAssociateVRFMemberInstanceAction>action;
65       const serviceUuid = clearAssociateVRFMemberInstanceAction.serviceModelId;
66       const vrfStoreKey = clearAssociateVRFMemberInstanceAction.vrfStoreKey;
67       const memberType = clearAssociateVRFMemberInstanceAction.memberType;
68
69       let newState = _.cloneDeep(state);
70       newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
71       return newState;
72     }
73     case VrfActions.DELETE_ACTION_VRF_INSTANCE : {
74       let newState = _.cloneDeep(state);
75       let vrf = newState.serviceInstance[(<DeleteActionVrfInstanceAction>action).serviceId].vrfs[(<DeleteActionVrfInstanceAction>action).vrfStoreKey];
76       let oldAction = vrf.action;
77       if(oldAction === ServiceInstanceActions.None_Delete || oldAction === ServiceInstanceActions.Update_Delete) return newState;
78       newState.serviceInstance[(<DeleteActionVrfInstanceAction>action).serviceId].vrfs[(<DeleteActionVrfInstanceAction>action).vrfStoreKey].action = (oldAction + '_Delete') as ServiceInstanceActions;
79       return newState;
80     }
81
82     case VrfActions.UNDO_DELETE_ACTION_VRF_INSTANCE : {
83       let newState = _.cloneDeep(state);
84       let vnf = newState.serviceInstance[(<UndoDeleteActionVrfInstanceAction>action).serviceId].vrfs[(<UndoDeleteActionVrfInstanceAction>action).vrfStoreKey];
85       let oldState = vnf.action;
86       newState.serviceInstance[(<UndoDeleteActionVrfInstanceAction>action).serviceId].vrfs[(<UndoDeleteActionVrfInstanceAction>action).vrfStoreKey].action = (oldState.split('_')[0]) as ServiceInstanceActions;
87       return newState;
88     }
89   }
90 }