merge from ecomp a88f0072 - Modern UI
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / relatedVnfMember / relatedVnfMember.reducers.ts
1 import {Action} from "redux";
2 import * as _ from "lodash";
3 import {ServiceState} from "../main.reducer";
4 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
5 import {
6   CreateRelatedVnfMemeberInstanceAction,
7   DeleteActionRelatedVnfMemeberInstanceAction, DeleteRelatedVnfMemebrInstanceAction,
8   RelatedVnfActions,
9   UndoDeleteActionRelatedVnfMemeberInstanceAction
10 } from "./relatedVnfMember.actions";
11
12 export function relatedVnfMemeberReducer(state: ServiceState, action: Action): ServiceState {
13   switch (action.type) {
14
15     case RelatedVnfActions.DELETE_ACTION_RELATED_VNF_MEMBER_INSTANCE : {
16       let newState = _.cloneDeep(state);
17       let relatedVnfMember = newState.serviceInstance[(<DeleteActionRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<DeleteActionRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<DeleteActionRelatedVnfMemeberInstanceAction>action).relatedVnfMemeberStoreKey];
18       let oldAction = relatedVnfMember.action;
19       if(oldAction === ServiceInstanceActions.None_Delete || oldAction === ServiceInstanceActions.Update_Delete) return newState;
20       newState.serviceInstance[(<DeleteActionRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<DeleteActionRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<DeleteActionRelatedVnfMemeberInstanceAction>action).relatedVnfMemeberStoreKey].action = (oldAction + '_Delete') as ServiceInstanceActions;
21       return newState;
22     }
23
24     case RelatedVnfActions.UNDO_DELETE_ACTION_RELATED_VNF_MEMBER_INSTANCE : {
25       let newState = _.cloneDeep(state);
26       let relatedVnfMember = newState.serviceInstance[(<UndoDeleteActionRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<UndoDeleteActionRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<UndoDeleteActionRelatedVnfMemeberInstanceAction>action).relatedVnfMemeberStoreKey];
27       let oldState = relatedVnfMember.action;
28       newState.serviceInstance[(<DeleteActionRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<DeleteActionRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<DeleteActionRelatedVnfMemeberInstanceAction>action).relatedVnfMemeberStoreKey].action = (oldState.split('_')[0]) as ServiceInstanceActions;
29       return newState;
30     }
31
32     case RelatedVnfActions.REMOVE_RELATED_VNF_MEMBER_INSTANCE : {
33       let newState = _.cloneDeep(state);
34       delete newState.serviceInstance[(<DeleteRelatedVnfMemebrInstanceAction>action).serviceId].vnfGroups[(<DeleteRelatedVnfMemebrInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<DeleteRelatedVnfMemebrInstanceAction>action).relatedVnfMemeberStoreKey];
35       return newState;
36     }
37
38     case RelatedVnfActions.CREATE_RELATED_VNF_MEMBER_INSTANCE : {
39       let newState = _.cloneDeep(state);
40       let relatedVnfMember = (<CreateRelatedVnfMemeberInstanceAction>action).relatedVnfMember;
41       relatedVnfMember['action'] = 'Create';
42       relatedVnfMember['vnfStoreKey'] = relatedVnfMember.instanceId;
43       relatedVnfMember['trackById'] = relatedVnfMember.instanceId;
44       relatedVnfMember['instanceName'] = relatedVnfMember.instanceName;
45       if(_.isNil(newState.serviceInstance[(<CreateRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<CreateRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'])){
46         newState.serviceInstance[(<CreateRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<CreateRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'] = {};
47       }
48       newState.serviceInstance[(<CreateRelatedVnfMemeberInstanceAction>action).serviceId].vnfGroups[(<CreateRelatedVnfMemeberInstanceAction>action).vnfGroupStoreKey]['vnfs'][(<CreateRelatedVnfMemeberInstanceAction>action).relatedVnfMember['instanceId']] = relatedVnfMember;
49       newState.serviceInstance[(<CreateRelatedVnfMemeberInstanceAction>action).serviceId].isDirty = true;
50       return newState;
51     }
52   }
53 }
54
55
56
57
58