import React, { useState, useEffect, useMemo } from "react";
import { AddIcon, InfoIcon } from "@chakra-ui/icons";
import {
Modal,
ModalOverlay,
ModalContent,
ModalHeader,
ModalBody,
ModalCloseButton,
useDisclosure,
Button,
Text,
FormControl,
FormLabel,
Input,
Tooltip,
Icon,
Stack,
Alert,
Flex,
useToast,
} from "@chakra-ui/react";
import { Select } from "chakra-react-select";
import { __ } from "@wordpress/i18n";
import { addManagerRole } from "./RoleAndPermissionAPI";
const UserDisplayModal = ({ wp_roles, context = "", value = {}, setUserAdded=false }) => {
const { isOpen, onOpen, onClose } = useDisclosure();
const [userEmail, setUserEmail] = useState("");
const [permissions, setPermissions] = useState([]);
const [errors, setErrors] = useState([]);
const toast = useToast();
useEffect(() => {
if (context === "edit") {
setUserEmail(value.email || "");
setPermissions(value.permission || []);
}
}, [context, value]);
const selectedPermissions = useMemo(() => {
return (
permissions?.map((val) => ({
value: val,
label: value.permission_details?.[val],
})) || []
);
}, [permissions, value.permission_details]);
const all_permissions = useMemo(() => {
return Object.entries(wp_roles).map(([key, label]) => ({
label: label,
value: key,
}));
}, [wp_roles]);
const handleMultiplePermission = (selectedOptions) => {
const selectedValues = selectedOptions
? selectedOptions.map((option) => option.value)
: [];
setPermissions(selectedValues);
};
const handleAddManager = (email, assignedPermissions) => {
addManagerRole(email, assignedPermissions).then((res) => {
setErrors([]);
if (!res.success) {
const errorList = Object.entries(res.message).map(
([key, message]) => ({ key, message })
);
setErrors(errorList);
} else {
setUserAdded(true);
onClose();
toast({
title: res.message,
status: "success",
duration: 3000,
});
}
});
};
const addButtonStyles = {
width: "113px",
height: "41px",
backgroundColor: "#7545BB",
padding: "10px 16px",
gap: "6px",
fontWeight: "500",
lineHeight: "21px",
fontSize: "14px",
color: "#FFFFFF",
};
const editButtonStyle = {
color: "#475BB2",
fontWeight: "400",
fontSize: "13px",
backgroundColor: "#ffffff",
padding: 0,
};
return (
<>
{context === "edit" ? "Edit User" : "Add User"}
View and manage the list of current managers, their assigned roles,
and permissions.
User Email
setUserEmail(e.target.value)}
/>
{errors.map((error, index) =>
error.key === "user_email" ? (
{error.message}
) : null
)}
User Permission
>
);
};
export default UserDisplayModal;