blob: 2b10e426d1037849ad886194b5b5386a0d9c7ff8 [file] [log] [blame]
/*!
* 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 { connect } from 'react-redux';
import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js';
import LicenseModelOverviewView from './LicenseModelOverviewView.jsx';
import {
overviewEditorHeaders,
selectedButton
} from './LicenseModelOverviewConstants.js';
import licenseModelOverviewActionHelper from './licenseModelOverviewActionHelper.js';
export const mapStateToProps = ({
licenseModel: {
licenseModelEditor,
entitlementPool,
licenseAgreement,
featureGroup,
licenseKeyGroup,
licenseModelOverview
}
}) => {
let modalHeader, licensingDataList;
let isDisplayModal = false;
const reduceLicenseKeyGroups = (accum, licenseKeyGroupId) => {
let curLicenseKeyGroup = licenseKeyGroup.licenseKeyGroupsList.find(
item => {
return item.id === licenseKeyGroupId;
}
);
if (curLicenseKeyGroup) {
accum.push({
...curLicenseKeyGroup,
itemType: overviewEditorHeaders.LICENSE_KEY_GROUP
});
}
return accum;
};
const reduceEntitlementPools = (accum, entitlementPoolId) => {
let curEntitlementPool = entitlementPool.entitlementPoolsList.find(
item => {
return item.id === entitlementPoolId;
}
);
if (curEntitlementPool) {
accum.push({
...curEntitlementPool,
itemType: overviewEditorHeaders.ENTITLEMENT_POOL
});
}
return accum;
};
const reduceFeatureGroups = (accum, featureGroupId) => {
let curFeatureGroup = featureGroup.featureGroupsList.find(item => {
return item.id === featureGroupId;
});
if (curFeatureGroup) {
let {
entitlementPoolsIds = [],
licenseKeyGroupsIds = []
} = curFeatureGroup;
accum.push({
...curFeatureGroup,
itemType: overviewEditorHeaders.FEATURE_GROUP,
children: [
...(entitlementPoolsIds.length
? entitlementPoolsIds.reduce(reduceEntitlementPools, [])
: []),
...(licenseKeyGroupsIds.length
? licenseKeyGroupsIds.reduce(reduceLicenseKeyGroups, [])
: [])
]
});
}
return accum;
};
const checkEP = (accum, elem) => {
if (
!elem.referencingFeatureGroups ||
!elem.referencingFeatureGroups.length
) {
accum.push({
...elem,
itemType: overviewEditorHeaders.ENTITLEMENT_POOL
});
}
return accum;
};
const checkLG = (accum, elem) => {
if (
!elem.referencingFeatureGroups ||
!elem.referencingFeatureGroups.length
) {
accum.push({
...elem,
itemType: overviewEditorHeaders.LICENSE_KEY_GROUP
});
}
return accum;
};
const checkFG = (accum, elem) => {
if (
!elem.referencingLicenseAgreements ||
!elem.referencingLicenseAgreements.length
) {
let { entitlementPoolsIds = [], licenseKeyGroupsIds = [] } = elem;
accum.push({
...elem,
itemType: overviewEditorHeaders.FEATURE_GROUP,
children: [
...(entitlementPoolsIds.length
? entitlementPoolsIds.reduce(reduceEntitlementPools, [])
: []),
...(licenseKeyGroupsIds.length
? licenseKeyGroupsIds.reduce(reduceLicenseKeyGroups, [])
: [])
]
});
}
return accum;
};
const mapLicenseAgreementData = licenseAgreement => {
let { featureGroupsIds = [] } = licenseAgreement;
return {
...licenseAgreement,
itemType: overviewEditorHeaders.LICENSE_AGREEMENT,
children: featureGroupsIds.length
? featureGroupsIds.reduce(reduceFeatureGroups, [])
: []
};
};
if (
entitlementPool.entitlementPoolEditor &&
entitlementPool.entitlementPoolEditor.data
) {
modalHeader = overviewEditorHeaders.ENTITLEMENT_POOL;
isDisplayModal = true;
} else if (
licenseAgreement.licenseAgreementEditor &&
licenseAgreement.licenseAgreementEditor.data
) {
modalHeader = overviewEditorHeaders.LICENSE_AGREEMENT;
isDisplayModal = true;
} else if (
featureGroup.featureGroupEditor &&
featureGroup.featureGroupEditor.data
) {
modalHeader = overviewEditorHeaders.FEATURE_GROUP;
isDisplayModal = true;
} else if (
licenseKeyGroup.licenseKeyGroupsEditor &&
licenseKeyGroup.licenseKeyGroupsEditor.data
) {
modalHeader = overviewEditorHeaders.LICENSE_KEY_GROUP;
isDisplayModal = true;
}
let orphanDataList = [
...featureGroup.featureGroupsList.reduce(checkFG, []),
...entitlementPool.entitlementPoolsList.reduce(checkEP, []),
...licenseKeyGroup.licenseKeyGroupsList.reduce(checkLG, [])
];
licensingDataList =
licenseAgreement.licenseAgreementList &&
licenseAgreement.licenseAgreementList.length
? licenseAgreement.licenseAgreementList.map(mapLicenseAgreementData)
: [];
let selectedTab = licenseModelOverview.selectedTab;
// on first entry, we will decide what tab to open depending on data. if there are no connections, we will open the orphans
if (selectedTab === null) {
selectedTab = licensingDataList.length
? selectedButton.VLM_LIST_VIEW
: selectedButton.NOT_IN_USE;
}
return {
isDisplayModal,
modalHeader,
licenseModelId: licenseModelEditor.data.id,
version: licenseModelEditor.data.version,
licensingDataList,
orphanDataList,
selectedTab
};
};
const mapActionsToProps = (dispatch, { licenseModelId }) => {
return {
onCallVCAction: action => {
LicenseModelActionHelper.performVCAction(dispatch, {
licenseModelId,
action
});
},
onTabSelect: buttonTab =>
licenseModelOverviewActionHelper.selectVLMListView(dispatch, {
buttonTab
})
};
};
export default connect(mapStateToProps, mapActionsToProps)(
LicenseModelOverviewView
);