Files
tanami-admin-panel/src/Pages/BankDepositRequest/RejectModal.jsx

140 lines
3.4 KiB
React
Raw Normal View History

2025-01-16 15:55:42 +05:30
import {
Box,
Button,
FormControl,
FormLabel,
Modal,
ModalBody,
ModalCloseButton,
ModalContent,
ModalFooter,
ModalHeader,
ModalOverlay,
Text,
Textarea,
2025-01-17 16:02:01 +05:30
useToast,
2025-01-16 15:55:42 +05:30
} from "@chakra-ui/react";
2025-01-17 16:02:01 +05:30
import React, { useState } from "react";
2025-01-16 15:55:42 +05:30
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup";
import { useForm } from "react-hook-form";
2025-01-17 16:02:01 +05:30
import { useRejectbankDepositRequestMutation } from "../../Services/bankdeposit.request.service";
import ToastBox from "../../Components/ToastBox";
2025-01-16 15:55:42 +05:30
export const conformModalSchema = yup.object().shape({
2025-01-17 16:02:01 +05:30
comments: yup.string().required("Comment is required"),
2025-01-16 15:55:42 +05:30
});
2025-01-17 16:02:01 +05:30
const RejectModal = ({ isOpen, onClose, firstField ,id}) => {
const [isBtnLoading , setIsBtnLoading] = useState(false)
const toast = useToast()
2025-01-16 15:55:42 +05:30
const {
2025-01-17 16:02:01 +05:30
register,
reset,
2025-01-16 15:55:42 +05:30
handleSubmit,
formState: { errors },
} = useForm({
resolver: yupResolver(conformModalSchema),
});
2025-01-17 16:02:01 +05:30
const [ rejectbankDepositRequest ] = useRejectbankDepositRequestMutation()
2025-01-16 15:55:42 +05:30
2025-01-17 16:02:01 +05:30
const onSubmit = async(data) => {
console.log(id);
setIsBtnLoading(true)
try {
const res = await rejectbankDepositRequest({ id ,data})
console.log(res);
if (res?.error) {
toast({
render: () => (
<ToastBox message={res?.error?.data?.message} status={"error"} />
),
});
heandleOnClose()
}else if(res?.data) {
toast({
render: () => (
<ToastBox message={res?.data?.success} />
),
});
heandleOnClose()
}
} catch (error) {
console.log(error);
}
2025-01-16 15:55:42 +05:30
};
2025-01-17 16:02:01 +05:30
const heandleOnClose = () =>{
reset()
onClose()
setIsBtnLoading(false)
}
2025-01-16 15:55:42 +05:30
return (
2025-01-17 16:02:01 +05:30
<Modal isOpen={isOpen} onClose={heandleOnClose} initialFocusRef={firstField}>
2025-01-16 15:55:42 +05:30
<ModalOverlay />
<ModalContent pb={4}>
<ModalHeader fontSize={"md"}>Reject</ModalHeader>
<ModalCloseButton />
<Box as="form" onSubmit={handleSubmit(onSubmit)}>
<ModalBody>
<FormControl mb={4} isRequired>
<FormLabel fontSize="sm">Comment</FormLabel>
2025-01-17 16:02:01 +05:30
<Textarea
rows={6}
focusBorderColor="green.400"
name="comments"
{...register("comments")}
2025-01-16 15:55:42 +05:30
fontSize="sm"
type="textarea"
size="md"
placeholder={"Enter your comments...."}
2025-01-17 16:02:01 +05:30
rounded={"md"}
resize={"none"}
2025-01-16 15:55:42 +05:30
/>
2025-01-17 16:02:01 +05:30
{errors.comments && (
2025-01-16 15:55:42 +05:30
<Text fontSize="xs" color="red">
2025-01-17 16:02:01 +05:30
{errors.comments.message}
2025-01-16 15:55:42 +05:30
</Text>
)}
</FormControl>
</ModalBody>
<ModalFooter>
2025-01-17 16:02:01 +05:30
<Button
colorScheme="gray"
mr={3}
onClick={onClose}
size={"sm"}
rounded={"sm"}
>
2025-01-16 15:55:42 +05:30
Cancel
</Button>
2025-01-17 16:02:01 +05:30
<Button
colorScheme="forestGreen"
variant="solid"
size={"sm"}
rounded={"sm"}
isLoading={isBtnLoading}
type="submit"
fontWeight={400}
>
2025-01-16 15:55:42 +05:30
Send
</Button>
</ModalFooter>
</Box>
</ModalContent>
</Modal>
);
};
export default RejectModal;