From 284b5f30993f8c5c1fdc2af8ea475b09074a3119 Mon Sep 17 00:00:00 2001 From: rockyeverlast Date: Tue, 9 Sep 2025 17:30:26 +0530 Subject: [PATCH] Bug fixes and updates --- src/Pages/ManageContact/ManageContact.tsx | 76 +++--- src/Pages/ManageContact/PendingRequests.tsx | 233 +++++++++++------- .../RegisterUsers/AddRegisterUsers.tsx | 15 +- .../RegisterUsers/EditRegisterUsers.tsx | 4 +- .../RegisterUsers/RegisterUsers.tsx | 7 +- .../AgencyMaster/AgencyMaster.tsx | 1 + .../AgencyMaster/EditAgencyMaster.tsx | 49 ++-- src/Pages/MasterModule/JobType/JobType.tsx | 44 ++-- src/Pages/Profile/ChangePassword.tsx | 5 +- .../SubAdmin}/EditSubAdmin.tsx | 32 +-- src/Pages/SubAdmin/SubAdmin.tsx | 23 +- src/Redux/Service/job.type.service.ts | 6 +- src/Redux/Service/manage.contactus.service.ts | 22 +- src/Redux/Service/manage.user.ts | 6 +- 14 files changed, 320 insertions(+), 203 deletions(-) rename src/{components => Pages/SubAdmin}/EditSubAdmin.tsx (94%) diff --git a/src/Pages/ManageContact/ManageContact.tsx b/src/Pages/ManageContact/ManageContact.tsx index 259e6c7..547f05d 100644 --- a/src/Pages/ManageContact/ManageContact.tsx +++ b/src/Pages/ManageContact/ManageContact.tsx @@ -1,19 +1,26 @@ -import { Box, HStack, Input, Text } from "@chakra-ui/react"; +import { Box, HStack, Text } from "@chakra-ui/react"; import MainFrame from "../../components/MainFrame"; import PendingRequests from "../../Pages/ManageContact/PendingRequests"; -import { InputGroup } from "../../components/ui/input-group"; -import { LuSearch } from "react-icons/lu"; +// import { InputGroup } from "../../components/ui/input-group"; +// import { LuSearch } from "react-icons/lu"; import DataTable from "../../components/DataTable"; import { useGetContactQuery } from "../../Redux/Service/manage.contactus.service"; import { useEffect, useState } from "react"; import { Spinner } from "../../components/Sipnner/Spinner"; +import { useDebounce } from "../../components/Hooks/useDebounce"; +import SearchComponent from "../../components/SearchComponent"; // table data const tableHeadRow = ["Sr. No", "Email id", "Name", "Date", "Action"]; const ManageContact = () => { - const { data, isLoading, isError } = useGetContactQuery(); - const [localData, setLocalData] = useState([]); + const [currentPage, setCurrentPage] = useState(1); + const [localData, setLocalData] = useState([]); + const [searchTerm, setSearchTerm] = useState(""); + const debouncedSearchTerm = useDebounce(searchTerm, 500); + const queryArgs = debouncedSearchTerm ? { page: currentPage, search: debouncedSearchTerm } : { page: currentPage }; + const { data, isLoading, isError, refetch, isFetching } = useGetContactQuery(queryArgs); + useEffect(() => { if (data) { @@ -21,6 +28,20 @@ const ManageContact = () => { } }, [data]); + const handlePageChange = (page: number) => { + setCurrentPage(page); + }; + + const handleSearchChange = (value: string) => { + setSearchTerm(value); + setCurrentPage(1); + }; + + const filteredData = localData?.filter((agency) => + agency?.first_name.toLowerCase().includes(searchTerm.toLowerCase()) || + agency?.email.toLowerCase().includes(searchTerm.toLowerCase()) + ); + const formatDateOfBirth = (dob: string): string => { return new Date(dob).toLocaleDateString("en-GB", { day: "2-digit", @@ -29,14 +50,15 @@ const ManageContact = () => { }); }; - const managepost = localData?.map((agency: any, index: number) => ({ + const managepost = filteredData?.map((agency: any, index: number) => ({ "Sr. No": index + 1, // Typically Sr. No starts from 1, not using id which might not be sequential "Email id": agency?.email || "-", Name: agency?.first_name || "-", Date: formatDateOfBirth(agency?.created_at) || "-", - Action: ( - - + Action: ( + + {agency.response_status === 0 ? : 'Resolved'} + {/* */} ), })); @@ -86,35 +108,25 @@ const ManageContact = () => { - - } - color={"#000"} - > - - + diff --git a/src/Pages/ManageContact/PendingRequests.tsx b/src/Pages/ManageContact/PendingRequests.tsx index 9356979..d65c055 100644 --- a/src/Pages/ManageContact/PendingRequests.tsx +++ b/src/Pages/ManageContact/PendingRequests.tsx @@ -10,95 +10,158 @@ import { DialogTrigger, } from "../../components/ui/dialog"; import { Badge, Field, HStack, Input, Stack, Textarea } from "@chakra-ui/react"; -function PendingRequests() { +import { usePendingRequestMutation } from "../../Redux/Service/manage.contactus.service"; +import { useState } from "react"; +import { Toaster, toaster } from "../../components/ui/toaster"; + +function PendingRequests({ data, refetch }: { data: any, refetch: VoidFunction }) { + const [isOpen, setIsOpen] = useState(false); + const [res, setRes] = useState({ + contact_us_xid: data.id, + message: data.message, + solution: '', + }) + const [pendingRequest] = usePendingRequestMutation() + + const handleOpenModal = () => { + setIsOpen(true); + }; + + + const handleSubmit = async (status: string) => { + const payload = { ...res, response_status: status }; + + if(res.solution === ''){ + toaster.create({ + title: "Error", + description: "All fields are required", + type: "error", + }); + return; + } + try { + const response = await pendingRequest(payload).unwrap() + if (response?.status === "success") { + toaster.create({ + title: "Success", + description: "Country updated successfully", + type: "success", + }); + setIsOpen(false); + refetch() + } else { + toaster.create({ + title: "Error", + description: "Failed to update Country", + type: "error", + }); + } + } catch (error) { + toaster.create({ + title: "Error", + description: "Something went wrong", + type: "error", + }); + } + } + return ( - - - - Answer request - - + <> + setIsOpen(open)}> + + + Answer request + + - - - - Pending Requests - - - - - - - - Request Type - - - - - Solution - -