Add collaboration feature

Issue-ID: SDC-767
Change-Id: I14fb4c1f54086ed03a56a7ff7fab9ecd40381795
Signed-off-by: talig <talig@amdocs.com>
diff --git a/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsActionHelper.js
new file mode 100644
index 0000000..c25d93f
--- /dev/null
+++ b/openecomp-ui/src/sdc-app/onboarding/permissions/PermissionsActionHelper.js
@@ -0,0 +1,108 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import i18n from 'nfvo-utils/i18n/i18n.js';
+import {actionTypes as modalActionTypes} from 'nfvo-components/modal/GlobalModalConstants.js';
+import {actionTypes} from './PermissionsConstants.js';
+import {permissionTypes} from './PermissionsConstants.js';
+import {modalContentMapper} from 'sdc-app/common/modal/ModalContentMapper.js';
+import {askForRightsMsg} from './PermissionsManager.jsx';
+import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
+
+const PermissionsActionHelper = {
+	openPermissonsManager(dispatch, {itemId, askForRights}) {
+		if (askForRights) {
+			dispatch({
+				type: modalActionTypes.GLOBAL_MODAL_SHOW,
+				data: {
+					title: i18n('Ask For Contributers Rights'),
+					msg: askForRightsMsg(),
+					confirmationButtonText: i18n('SEND'),
+					onConfirmed: () => 	this.askForContributorRights()
+				}
+			});
+		} else {
+			dispatch({
+				type: modalActionTypes.GLOBAL_MODAL_SHOW,
+				data: {
+					modalComponentName: modalContentMapper.MANAGE_PERMISSIONS,
+					title: i18n('Manage Permissions'),
+					modalComponentProps: {
+						itemId
+					}
+				}
+			});
+		}
+	},
+
+	closePermissionManager(dispatch) {
+		dispatch({
+			type: modalActionTypes.GLOBAL_MODAL_CLOSE
+		});
+	},
+
+	saveItemUsers(dispatch, {itemId, removedUsersIds, addedUsersIds, allUsers}) {
+		return ItemsHelper.updateContributors({itemId, removedUsersIds, addedUsersIds}).then(() =>
+			PermissionsActionHelper.fetchItemUsers(dispatch, {itemId, allUsers})
+		);
+	},
+
+	changeOwner(dispatch, {itemId, newOwnerId, allUsers}) {
+		return ItemsHelper.changeOwner({itemId, ownerId: newOwnerId}).then(() =>
+			PermissionsActionHelper.fetchItemUsers(dispatch, {itemId, allUsers})
+		);
+	},
+
+	fetchItemUsers(dispatch, {itemId, allUsers}) {
+		return ItemsHelper.fetchUsers({itemId}).then(response => {
+
+			let allContributors = response.results;
+
+			let owner = {};
+			let contributors = [];
+			allContributors.map(user => {
+				let userObject = allUsers.find(userObject => userObject.userId === user.userId);
+				if (userObject) {
+					user = {...user, fullName: userObject.fullName, role: userObject.role};
+
+					switch(user.permission) {
+						case permissionTypes.OWNER:
+							owner = user;
+							break;
+						case permissionTypes.CONTRIBUTOR:
+							contributors.push(user);
+							break;
+					}
+				}
+			});
+
+			dispatch({
+				type: actionTypes.ITEM_USERS_LOADED,
+				contributors,
+				owner
+			});
+		});
+	},
+
+	askForContributorRights() {
+		console.log('asked for contributor rights');
+	}
+
+
+
+};
+
+export default PermissionsActionHelper;