Professional Documents
Culture Documents
Editorg
Editorg
const getProductList = (
productEnablements,
metaDataValues,
productsMetadata
) => {
if (!productEnablements) {
return [];
}
const list = [];
for (let i = 0; i < productCatalog.length; i++) {
const product = productEnablements.find(
(el) =>
el.productID === productCatalog[i].id &&
productCatalog[i].packageStatus !== "COMING_SOON"
);
if (product) {
let contractEndDt = "";
if (allowedActions["view/metadata/Product"]) {
const prodMetadata = productsMetadata.find((el) => {
return el.id === productCatalog[i].id;
});
let endDateMetaData =
prodMetadata.metadata &&
prodMetadata.metadata.filter(
(el) => el.code === "cdg-contract-end-date"
);
let contractEndDtId =
endDateMetaData.length > 0 ? endDateMetaData[0].id : null;
// if (orgDetails) {
// console.log("updateOrganization");
// updateOrganization(updateValues, orgDetails.id)
// .then((result) => {
// console.log("result updateOrganization ", result);
// orgDetails.formattedModifiedAt =
// result.updateOrganization && result.updateOrganization.modifiedAt;
// setOrgDetails({
// ...orgDetails,
// metadataValues: result.updateMetadataValuesForOrganization
// });
// closeInnerModal();
// showMessageToast("success", apiSuccessMsg.ORG_UPDATED);
// })
// .catch((el) => showMessageToast("error", apiErrorMsg[el]))
// .finally(() => {
// setApiCall(false);
// });
// }
// if (orgDetails) {
// console.log("clling delte api");
// deleteOrganization(deleteValues, orgDetails.id)
// .then((result) => {
// console.log("res after delte", result);
// orgDetails.formattedModifiedAt =
// result.updateOrganization && result.updateOrganization.modifiedAt;
// setOrgDetails({
// ...orgDetails,
// metadataValues: result.updateMetadataValuesForOrganization
// });
// closeInnerModal();
// showMessageToast("success", apiSuccessMsg.ORG_UPDATED);
// })
// .catch((el) => showMessageToast("error", apiErrorMsg[el]))
// .finally(() => {
// setApiCall(false);
// });
// }
if (orgDetails) {
const deleteOrgDetails = deleteValues.length > 0 &&
deleteOrganization(deleteValues, orgDetails.id);
const updateOrgDetails = updateValues.length > 0 &&
updateOrganization(updateValues, orgDetails.id);
let callArray = [deleteOrgDetails, updateOrgDetails];
// if (deleteValues.length > 0) {
// // callArray = [deleteOrgDetails];
// callArray.push(deleteOrgDetails);
Promise.all(callArray)
.then((result) => {
console.log("result updateOrganization ", result);
// orgDetails.formattedModifiedAt =
// // result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// setOrgDetails({
// ...orgDetails,
// metadataValues: result[0].updateMetadataValuesForOrganization
// });
// if (result.length == 2) {
// orgDetails.formattedModifiedAt =
// // result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// result[1].updateOrganization &&
result[1].updateOrganization.modifiedAt;
// setOrgDetails({
// ...orgDetails,
// metadataValues: result[1].putMetadataValuesForOrg
// });
// closeInnerModal();
// showMessageToast("success", apiSuccessMsg.ORG_UPDATED);
// }
// else {
// orgDetails.formattedModifiedAt =
// // result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// setOrgDetails({
// ...orgDetails,
// metadataValues: result[0].deleteMetadataValuesForOrg
// });
// closeInnerModal();
// showMessageToast("success", apiSuccessMsg.ORG_UPDATED);
orgDetails.formattedModifiedAt = result[1] ?
(result[1].updateOrganization && result[1].updateOrganization.modifiedAt) :
result[0].updateOrganization && result[0].updateOrganization.modifiedAt;
// result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt;
// (result[1].updateOrganization &&
result[1].updateOrganization.modifiedAt) || (result[0].updateOrganization &&
result[0].updateOrganization.modifiedAt);
};
const getOrgUsersCall = () => {
setIsUsersLoader(true);
getOrgUsers(orgDetails.id)
.then((result) => {
if (componentIsMounted.current) {
setUsersList([...result]);
}
})
.catch((el) => showMessageToast("error", apiErrorMsg[el]))
.finally(() => {
if (componentIsMounted.current) {
setIsUsersLoader(false);
}
});
};
useEffect(() => {
setApiCall(true);
const isMetaDataExist = orgMetaData && !!orgMetaData.length;
if (orgDetails) {
const fetchOrgs = fetchOrgDetails(orgDetails.id, isMetaDataExist);
const productsMetadataCall =
!productCatalog[0].metadata && getProductsMetaData();
let callArray = [fetchOrgs];
if (!productCatalog[0].metadata) {
callArray = [...callArray, productsMetadataCall];
}
Promise.all(callArray)
.then((result) => {
if (componentIsMounted.current) {
const { organization } = result[0];
if (organization) {
setOrgDetails({
...orgDetails,
...doRequiredOrgModification(organization)
});
const productsMetadata = result[1] ? result[1] : productCatalog;
setProductList(
getProductList(
organization.productEnablements,
organization.metadataValues,
productsMetadata
)
);
}
}
})
.catch((err) => {
console.error(err);
})
.finally(() => {
if (componentIsMounted.current) {
setApiCall(false);
}
});
}
return () => {
componentIsMounted.current = false;
};
//eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
<>
<Row className={classes["heading-data"]}>
<Col md={12} sm={12} justify={"flex-start"} className="admin-header">
{allowedActions["api/graphql/query/allOrganizations"] ? (
<div className="back-button">
<ActionButton
type="button"
variant="text"
onClick={() => {
closeModal();
setShowEdit(false);
}}
aria-label="Back to all orgs"
>
<Svg svgtype="custom-svg-icon" name={BackButton} />
</ActionButton>
</div>
) : (
<div style={{ width: "35px" }}></div>
)}
<Typography variant="h2" className="page-name">
{orgDetails.name}
</Typography>
{allowedActions[
"api/graphql/mutation/updateMetadataValuesForOrganization"
] &&
!isApiCall && (
<ActionButton
type="button"
size="small"
onClick={() => openModal("additional-infoOrg")}
className="edit-org-btn"
>
Edit
</ActionButton>
)}
</Col>
</Row>
<div className={classes["edit-org"]}>
{isApiCall ? (
<Loading position="absolute" background={false} />
) : (
<>
<Row className="org-data">
<Col md={12} sm={12} className="org-details">
<OrganizationForm
afterSubmit={onSubmit}
isEdit={true}
orgData={modifyReadableData()}
formId="editOrgForm"
/>
</Col>
</Row>
<Row className="tab-data">
<Col md={12} sm={12}>
<Tabs
id="edit-org-tabs"
value={tabState}
onChange={handleChange}
aria-label="admin-tabs"
tabsList={tabsList}
/>
</Col>
</Row>
{tabState === 0 && (
<TabPanel
tabsType="edit-org-tabs"
value={tabState}
index={0}
maxWidth={false}
>
<Row className="scrollable-data-section products-tab">
<Col lg={12} md={12} sm={12} className={`scrollable-data`}>
<AdminTableWrapper
isSorting={true}
defaultSortField={"name"}
headers={
allowedActions["view/metadata/Product"]
? productHeaderJITP["viewMetaData"]
: productHeaderJITP["hideMetaData"]
}
data={productsList}
showLoading={false}
mapDataConfig={
allowedActions["view/metadata/Product"]
? productMapJITP["viewMetaData"]
: productMapJITP["hideMetaData"]
}
liveSorting={true}
actions={{
link: (productData) =>
openModal("edit-product", productData),
button: (productData) =>
openModal("edit-product", productData)
}}
/>
</Col>
</Row>
</TabPanel>
)}
{tabState === 1 && (
<TabPanel
tabsType="edit-org-tabs"
value={tabState}
index={1}
maxWidth={false}
>
{(allowedActions["api/graphql/mutation/createUser"] ||
allowedActions[
`api/graphql/mutation/organization/$
{loggedInUser.organization.id}/createUser`
]) && (
<Row className="add-user-section">
<Col md={12} sm={12} justify={"flex-start"}>
<ActionButton
type="button"
variant="contained"
color="primary"
title={"Add User"}
className={"add-user-button"}
onClick={() => openModal("add-user", null)}
>
<i className="fa fa-plus" id="add-user-icon"></i>
<Typography variant="caption" id="add-user-text">
{"Add a User"}
</Typography>
</ActionButton>
</Col>
</Row>
)}
<Row className="scrollable-data-section">
<Col md={12} sm={12} className="scrollable-data">
<AdminTableWrapper
isSorting={true}
defaultSortField={"email"}
headers={userDataHeader}
data={usersList}
mapDataConfig={userMapp}
showLoading={isUsersLoader}
actions={{
link: (userDetails) =>
openModal("add-user", userDetails, true)
}}
/>
</Col>
</Row>
</TabPanel>
)}
</>
)}
</div>
{modalStatus.open && (
<ModalWrapper
openDialog={modalStatus.open}
maxWidth="lg"
onUtilityEvent={() => closeInnerModal}
className={nestModalClassName}
>
{renderModalContent()}
</ModalWrapper>
)}
</>
);
};
const mapDispatchToProps = {
fetchOrgDetails,
updateOrganization,
deleteOrganization,
getProductsMetaData,
getOrgUsers
};