Files
tanami-admin-panel/src/Pages/IO_Management/ViewIO/HeaderModal/UpdateIOStatus.jsx

153 lines
4.0 KiB
React
Raw Normal View History

2024-08-02 20:19:41 +05:30
import { ChevronDownIcon } from "@chakra-ui/icons";
2024-08-12 12:22:01 +05:30
import React, { useEffect, useState } from "react";
import {
Badge,
Button,
2024-07-09 19:05:08 +05:30
FormLabel,
Menu,
MenuButton,
MenuItem,
MenuList,
Modal,
ModalBody,
ModalCloseButton,
ModalContent,
ModalFooter,
ModalHeader,
ModalOverlay,
} from "@chakra-ui/react";
import {
2024-08-12 12:22:01 +05:30
useGetIOByIdQuery,
useGetIOprepopulateDataQuery,
useUpdateStatusIoMutation,
} from "../../../../Services/io.service";
import { useParams } from "react-router-dom";
2024-08-12 12:22:01 +05:30
const UpdateIOStatus = ({ isOpen, onClose , status}) => {
const params = useParams();
const id = params?.id;
2024-08-12 12:22:01 +05:30
const [selectedItem, setSelectedItem] = useState(status?.[0]?.statusAdmin);
const [isLoadingg, setIsLoading] = useState(false);
const { data, error, isLoading } = useGetIOprepopulateDataQuery();
2024-08-12 12:22:01 +05:30
const [selectedStatusId, setSelectedStatusId] = useState(status?.[0]?.id);
useEffect(() => {
setSelectedItem(status?.[0]?.statusAdmin)
setSelectedStatusId(status?.[0]?.id)
}, [status])
2024-08-12 12:22:01 +05:30
2024-08-12 12:22:01 +05:30
const [updateStatusIo] = useUpdateStatusIoMutation();
const handleMenuItemClick = (item, id) => {
setSelectedItem(item);
setSelectedStatusId(id);
};
const handleSubmit = async () => {
setIsLoading(true)
try {
const res = await updateStatusIo({
data: {
ioStatus_xid: selectedStatusId,
},
id,
});
console.log(res);
setIsLoading(false)
onClose()
} catch (error) {}
};
return (
<Modal isOpen={isOpen} onClose={onClose}>
<ModalOverlay />
<ModalContent>
<ModalHeader fontSize={"md"}>Update IO Status Transaction</ModalHeader>
<ModalCloseButton />
<ModalBody>
<FormLabel as={"label"} fontSize={"sm"} fontWeight={500}>
Status
</FormLabel>
<Menu>
<MenuButton
as={Button}
rightIcon={<ChevronDownIcon />}
fontSize={"sm"}
fontWeight={500}
w={"100%"}
textAlign={"left"}
>
2024-08-02 20:19:41 +05:30
<Badge
textTransform={"none"}
2024-08-08 19:38:17 +05:30
variant={"subtle"}
2024-08-02 20:19:41 +05:30
colorScheme={
selectedItem === "Draft"
? "blue"
: selectedItem === "Processing"
? "yellow"
: selectedItem === "Open"
? "forestGreen"
2024-08-12 12:22:01 +05:30
: selectedItem === "Closed"
? "red":null
2024-08-02 20:19:41 +05:30
} py={"3px"} px={"8px"}>
2024-08-12 12:22:01 +05:30
{selectedItem ? selectedItem: "No action"}
2024-08-02 20:19:41 +05:30
</Badge>
</MenuButton>
2024-08-12 12:22:01 +05:30
<MenuList w={"400px"}>
2024-08-12 12:22:01 +05:30
{status?.map(({ id, statusAdmin }) => (
<MenuItem
key={id}
fontSize={"sm"}
onClick={() => handleMenuItemClick(statusAdmin, id)}
>
2024-08-02 20:19:41 +05:30
<Badge
textTransform={"none"}
2024-08-08 19:38:17 +05:30
variant={"subtle"}
2024-08-02 20:19:41 +05:30
colorScheme={
statusAdmin === "Draft"
? "blue"
: statusAdmin === "Processing"
? "yellow"
: statusAdmin === "Open"
? "forestGreen"
: "red"
} py={"1px"} px={"8px"}>
{statusAdmin}
</Badge>
</MenuItem>
))}
</MenuList>
</Menu>
</ModalBody>
<ModalFooter>
<Button
2024-08-08 19:38:17 +05:30
// bg={"hsla(139, 100%, 14%, 1)"}
colorScheme="forestGreen"
mr={3}
color={"#fff"}
2024-08-08 19:38:17 +05:30
// _hover={{
// bg: "hsl(139deg 98.99% 26.59%)",
// }}
size={"sm"}
2024-07-09 19:05:08 +05:30
rounded={"sm"}
onClick={handleSubmit}
isLoading={isLoadingg}
>
Save
</Button>
<Button size={"sm"} rounded={"sm"} mr={3} onClick={onClose}>
Close
</Button>
</ModalFooter>
</ModalContent>
</Modal>
);
};
export default UpdateIOStatus;