diff --git a/dev-dist/sw.js b/dev-dist/sw.js
index 866f8a6..013b755 100644
--- a/dev-dist/sw.js
+++ b/dev-dist/sw.js
@@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812"
}, {
"url": "index.html",
- "revision": "0.p75md0vraj"
+ "revision": "0.73grfmd27h8"
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
diff --git a/index.html b/index.html
index 58b50b9..cd3d9f3 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,8 @@
-
+
+
SEO Admin
diff --git a/src/Pages/ManageCMS/FAQ/FAQ.tsx b/src/Pages/ManageCMS/FAQ/FAQ.tsx
index c1def1d..c146c8a 100644
--- a/src/Pages/ManageCMS/FAQ/FAQ.tsx
+++ b/src/Pages/ManageCMS/FAQ/FAQ.tsx
@@ -160,7 +160,7 @@ const FAQ = () => {
handleDeleteFaq(selectedFaqId);
}
}}
- />
+ />
Add
-
+
diff --git a/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx b/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
index 5d0e1eb..ea303e5 100644
--- a/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
+++ b/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
@@ -1,4 +1,4 @@
-import { Badge, HStack, Text, VStack } from "@chakra-ui/react";
+import { Badge, HStack, Stack, Text, VStack } from "@chakra-ui/react";
import { useGetPrivacyPolicyQuery } from "../../../Redux/Service/privacy.policy.service";
import MainFrame from "../../../components/MainFrame";
import { Spinner } from "../../../components/Sipnner/Spinner";
@@ -6,54 +6,77 @@ import PrivacyPolicyAddModel from "./PrivacyPolicyAddModel";
import GlobalStateContext from "../../../Contexts/GlobalStateContext";
import { useContext, useEffect } from "react";
-
const PrivacyPolicy = () => {
const { data, isLoading, isFetching, refetch } = useGetPrivacyPolicyQuery();
- console.log('PRIVACY', data?.data);
-
+ console.log("PRIVACY", data?.data);
const context = useContext(GlobalStateContext);
- if (!context) throw new Error('App must be used within a GlobalStateProvider');
+ if (!context)
+ throw new Error("App must be used within a GlobalStateProvider");
const { setIsBarLoading } = context;
useEffect(() => {
- setIsBarLoading(isFetching)
- }, [data])
+ setIsBarLoading(isFetching);
+ }, [data]);
-console.log('Privacy Policy Data:', data?.data);
+ console.log("Privacy Policy Data:", data?.data);
return (
-
- {isLoading || isFetching ?
- : data?.data?.map(({ id, content, privacy_language }) =>
-
+
+ Privacy Policy
+
+
+
+ {isLoading || isFetching ? (
+
+ ) : (
+ data?.data?.map(({ id, content, privacy_language }) => (
+
-
- Privacy Policy π {privacy_language?.language_name}
-
+
+
+
+ π {privacy_language?.language_name}
+
+
-
-
-
-
- )}
+
+
+
+
+ ))
+ )}
);
};
-export default PrivacyPolicy;
\ No newline at end of file
+export default PrivacyPolicy;
diff --git a/src/Pages/ManageCMS/TermsAndConditions/TermsAndConditions.tsx b/src/Pages/ManageCMS/TermsAndConditions/TermsAndConditions.tsx
index cff201b..16b796a 100644
--- a/src/Pages/ManageCMS/TermsAndConditions/TermsAndConditions.tsx
+++ b/src/Pages/ManageCMS/TermsAndConditions/TermsAndConditions.tsx
@@ -1,59 +1,67 @@
import { Badge, HStack, Spinner, Stack, Text, VStack } from "@chakra-ui/react";
-import MainFrame from "../../../components/MainFrame"
+import MainFrame from "../../../components/MainFrame";
import TermsAndConditionsAddModel from "./TermsAndConditionsAddModel";
import { useGetTermsQuery } from "../../../Redux/Service/terms.and.condition.service";
-
const TermsAndConditions = () => {
- const { data, refetch, isLoading, isFetching } = useGetTermsQuery()
+ const { data, refetch, isLoading, isFetching } = useGetTermsQuery();
+
+ console.log(data);
return (
+
+
+
+
+ Terms and Conditions
+
+
-
-
-
- Terms and Conditions
-
-
- {isLoading || isFetching ? (
-
- ) : (
- data?.data?.map(({ id, content, terms_cond_language }) => (
-
-
-
-
-
- π {terms_cond_language?.language_name}
-
-
-
- {/* Pass Data to AboutUsAddModel */}
-
-
-
- {/* {content} */}
-
+ {isLoading || isFetching ? (
+
+ ) : (
+ data?.data?.map(({ id, content, terms_cond_language }) => (
+
+
+
+
+ π {terms_cond_language?.language_name}
+
-
- ))
- )}
-
-
-
- )
-}
-export default TermsAndConditions
\ No newline at end of file
+
+ {/* Pass Data to AboutUsAddModel */}
+
+
+
+ {/* {content} */}
+
+
+
+ ))
+ )}
+
+
+ );
+};
+export default TermsAndConditions;
diff --git a/src/Pages/ManageContact/ManageContact.tsx b/src/Pages/ManageContact/ManageContact.tsx
index 9861955..259e6c7 100644
--- a/src/Pages/ManageContact/ManageContact.tsx
+++ b/src/Pages/ManageContact/ManageContact.tsx
@@ -1,38 +1,77 @@
import { Box, HStack, Input, Text } from "@chakra-ui/react";
-import MainFrame from "../../components/MainFrame"
-import PendingRequests from "../../Pages/ManageContact/PendingRequests"
+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 DataTable from "../../components/DataTable";
-
+import { useGetContactQuery } from "../../Redux/Service/manage.contactus.service";
+import { useEffect, useState } from "react";
+import { Spinner } from "../../components/Sipnner/Spinner";
// table data
+const tableHeadRow = ["Sr. No", "Email id", "Name", "Date", "Action"];
-const tableHeadRow = [
- "Sr. No",
- "Email id",
- "Name",
- "Date",
- "Action",
-];
+const ManageContact = () => {
+ const { data, isLoading, isError } = useGetContactQuery();
+ const [localData, setLocalData] = useState([]);
-const managepost: any[] = [
- ...Array.from({ length: 12 }, (_, i) => ({
- "Sr. No": i + 1,
- "Email id": "ABC@gmail.com",
- "Name": "Pooja",
- "Date": "11/02/1989",
- "Action": (
+ useEffect(() => {
+ if (data) {
+ setLocalData((data as any)?.data?.data || []);
+ }
+ }, [data]);
+
+ const formatDateOfBirth = (dob: string): string => {
+ return new Date(dob).toLocaleDateString("en-GB", {
+ day: "2-digit",
+ month: "2-digit",
+ year: "numeric",
+ });
+ };
+
+ const managepost = localData?.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: (
),
- })),
-];
+ }));
+
+ if (isLoading) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ if (isError) {
+ return (
+
+
+ Error loading data
+
+
+ );
+ }
-const ManageContact = () => {
return (
-
{
px={3}
>
- Contact Requests
+ Contact Requests
-
-
+
+
}
color={"#000"}
>
@@ -63,20 +105,20 @@ const ManageContact = () => {
size={"xs"}
fontSize={"sm"}
placeholder="Search..."
- bgColor={'#EEEEEE'}
+ bgColor={"#EEEEEE"}
ps={8}
/>
- {/* Add */}
-
+
- )
-}
-export default ManageContact
\ No newline at end of file
+ );
+};
+
+export default ManageContact;
diff --git a/src/Pages/ManageGroups/ManageGroups.tsx b/src/Pages/ManageGroups/ManageGroups.tsx
index 86f0570..fc57d8b 100644
--- a/src/Pages/ManageGroups/ManageGroups.tsx
+++ b/src/Pages/ManageGroups/ManageGroups.tsx
@@ -48,6 +48,9 @@ const managepost: any[] = [
),
})),
];
+
+
+
const ManageGroups = () => {
return (
diff --git a/src/Pages/ManageJobs/ManageJobs.tsx b/src/Pages/ManageJobs/ManageJobs.tsx
index 744fd6e..ce55ef5 100644
--- a/src/Pages/ManageJobs/ManageJobs.tsx
+++ b/src/Pages/ManageJobs/ManageJobs.tsx
@@ -1,7 +1,10 @@
import {
- Box, HStack,
- // Image,
- Input, Text
+ Box,
+ HStack,
+ Image,
+ // Image,
+ Input,
+ Text,
} from "@chakra-ui/react";
import { LuSearch } from "react-icons/lu";
// import { RiDeleteBin5Line } from "react-icons/ri";
@@ -11,6 +14,15 @@ import MainFrame from "../../components/MainFrame";
import { InputGroup } from "../../components/ui/input-group";
import ManageJobsAdd from "./ManageJobsAdd";
import ViewManageJob from "./ViewManageJob";
+import {
+ useDeleteJobsPostMutation,
+ useGetManageJobsQuery,
+} from "../../Redux/Service/manage.jobs.service";
+import { useEffect, useState } from "react";
+import { Spinner } from "../../components/Sipnner/Spinner";
+import Delete from "../../components/ActionIcons/Delete";
+import { toaster } from "../../components/ui/toaster";
+import AlertDailog from "../../components/AlertDailog";
// import { useState } from "react";
// import { useGetManageJobsQuery } from "../../Redux/Service/manage.jobs.service";
// import Delete from "../../components/ActionIcons/Delete";
@@ -27,36 +39,93 @@ const tableHeadRow = [
"Action",
];
-const managepost: any[] = [
- ...Array.from({ length: 12 }, (_, i) => ({
- "Sr. No": i + 1,
- "Job Title": "Freelance content writer",
- "Workspace mode": "Onsite",
- Category: "IT",
- "Sub-category": "Flutter dev",
- Salary: "3.5 LPA",
+const ManageJobs = () => {
+ const [currentPage] = useState(1);
+ const [localData, setLocalData] = useState([]);
+ const { data, refetch, isLoading } = useGetManageJobsQuery(currentPage);
+ const [deleteJobsPost] = useDeleteJobsPostMutation();
+ const [deleteModal, setDeleteModal] = useState(false);
+ const [selectedJobsId, setSelectedJobsId] = useState(null);
+
+ useEffect(() => {
+ if (data) {
+ setLocalData((data as any)?.data?.data || []);
+ }
+ }, [data]);
+ console.log(data?.data.data);
+
+ const handleDeleteJobs = async (jobsId: number) => {
+ try {
+ const response = await deleteJobsPost({ id: jobsId }).unwrap();
+ if (response?.status === "success") {
+ toaster.create({
+ title: "Success",
+ description: "Jobs deleted successfully",
+ type: "Success",
+ });
+ refetch();
+ }
+ } catch (error) {
+ console.error("Error deleting FAQ:", error);
+ toaster.create({
+ title: "Error",
+ description: "Something went wrong",
+ type: "error",
+ });
+ }
+ };
+
+ const managepost = localData?.map((agency: any, index: number) => ({
+ "Sr. No": index + 1,
+ "Job Title": agency?.job_title,
+ "Workspace mode": agency?.workspace?.en_name,
+ Category: agency?.industry?.en_name,
+ "Sub-category": agency?.department?.en_name,
+ Salary: agency?.ctc_amount,
Action: (
- {/* }
- alertText="Delete Users"
+ (
+ {
+ setSelectedJobsId(agency.id);
+ setDeleteModal(true);
+ }}
+ />
+ )}
+ alertText="Delete FAQ"
alertIcon={ }
alertCaption="are you sure you want to delete ?"
+ onClose={() => setDeleteModal(false)}
onConfirm={() => {
- console.log("User deleted:", i + 1);
+ // console.log("Deleting FAQ with ID:", selectedFaqId); // Correct ID
+ if (selectedJobsId) {
+ setDeleteModal(false);
+ handleDeleteJobs(selectedJobsId);
+ }
}}
- /> */}
+ />
),
- })),
-];
+ }));
-const ManageJobs = () => {
- // const [currentPage, setCurrentPage] = useState(1);
- // const { data, refetch } = useGetManageJobsQuery(currentPage)
- // console.log(data?.data.data);
+ if (isLoading) {
+ return (
+
+
+
+
+
+ );
+ }
return (
diff --git a/src/Pages/ManageJobs/ViewManageJob.tsx b/src/Pages/ManageJobs/ViewManageJob.tsx
index bb3edc4..ed9536e 100644
--- a/src/Pages/ManageJobs/ViewManageJob.tsx
+++ b/src/Pages/ManageJobs/ViewManageJob.tsx
@@ -27,6 +27,7 @@ import {
SelectTrigger,
} from "../../components/ui/select";
import View from "../../components/ActionIcons/View";
+import { useLazyViewJobsQuery } from "../../Redux/Service/manage.jobs.service";
const frameworks = createListCollection({
items: [
@@ -37,238 +38,258 @@ const frameworks = createListCollection({
],
});
function ViewManageJob() {
+ const [ data ] = useLazyViewJobsQuery();
+
+ console.log(data);
+
+ // const handleView = () => {
+ // trigger(id);
+ // };
+
+ // const viewJobs = data;
+
+ console.log();
+
return (
-
+
+
+
-
-
-
- Add Details
-
-
+ {/* {viewJobs?.map((data: any) => ( */}
+
+
+
+ Add Details
+
+
-
-
-
-
- Job title
-
-
-
-
-
- Workspace mode
-
-
-
-
-
- Category
-
-
-
-
-
- Sub-Category
-
-
-
-
-
- Salary
-
-
-
-
-
- Experience
-
-
-
-
-
- Job Location
-
-
-
- {/* Country Selection
- */}
-
-
- Country Selection
-
-
-
+
+
+
+ Job title
+
+
-
-
- {frameworks.items.map((movie) => (
-
- {movie.label}
-
- ))}
-
-
+
+
+
+ Workspace mode
+
+
+
+
+
+ Category
+
+
+
+
+
+ Sub-Category
+
+
+
+
+
+ Salary
+
+
+
+
+
+ Experience
+
+
+
+
+
+ Job Location
+
+
+
+ {/* Country Selection
+ */}
+
+
+ Country Selection
+
+
+
+
+
+ {frameworks.items.map((movie) => (
+
+ {movie.label}
+
+ ))}
+
+
-
-
- Job type
-
-
-
-
-
- Skills required
-
-
-
-
-
- Job Description*
-
-
-
-
-
- Upload Image
-
-
-
-
-
-
-
- Save
-
-
+
+
+ Job type
+
+
+
+
+
+ Skills required
+
+
+
+
+
+ Job Description*
+
+
+
+
+
+ Upload Image
+
+
+
+
+
+
+
+ Save
+
+
-
-
+
+
+ {/* ))} */}
);
}
diff --git a/src/Pages/ManageUsers/DeactivatedAccounts/DeactivatedAccounts.tsx b/src/Pages/ManageUsers/DeactivatedAccounts/DeactivatedAccounts.tsx
index 93c5727..87409d7 100644
--- a/src/Pages/ManageUsers/DeactivatedAccounts/DeactivatedAccounts.tsx
+++ b/src/Pages/ManageUsers/DeactivatedAccounts/DeactivatedAccounts.tsx
@@ -1,37 +1,121 @@
-import { Box, HStack, Input, Text } from "@chakra-ui/react";
+import { Box, HStack, Text } from "@chakra-ui/react";
import MainFrame from "../../../components/MainFrame";
import DataTable from "../../../components/DataTable";
import { Switch } from "../../../components/ui/switch";
-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 { useGetContactQuery } from "../../../Redux/Service/deactivated.account.service";
+import { useEffect, useState } from "react";
+import { Spinner } from "../../../components/Sipnner/Spinner";
+import { useGetDeactivateUserQuery, useUserDeactivateToggleMutation } from "../../../Redux/Service/manage.user";
+import SearchComponent from "../../../components/SearchComponent";
const tableHeadRow = [
"Sr. No",
"First Name",
"Last Name",
- "Company name",
+ "User Type",
"Activate/Deactivate",
];
-const manageUser: any[] = [
- ...Array.from({ length: 12 }, (_, i) => ({
- "Sr. No": i + 1,
- "First Name": "Ritesh",
- "Last Name": "akanksha@gmail.com",
- "Company name": "9876543210",
+const DeactivatedAccounts = () => {
+ const [currentPage, setCurrentPage] = useState(1);
+ const { data, isLoading, refetch } = useGetDeactivateUserQuery(currentPage);
+ const [localData, setLocalData] = useState([]);
+ const [searchTerm, setSearchTerm] = useState("");
+ const [userDeactivateToggle] = useUserDeactivateToggleMutation()
+
+ useEffect(() => {
+ if (data) {
+ setLocalData((data as any)?.data?.data || []);
+ }
+ }, [data]);
+
+ const handlePageChange = (page: number) => {
+ setCurrentPage(page);
+ }
+
+ const filteredData = localData?.filter((agency) => {
+ const searchLower = searchTerm.toLowerCase();
+ const firstName = agency.first_name?.toLowerCase().includes(searchLower);
+ const lastName = agency.last_name?.toLowerCase().includes(searchLower);
+ // const email = agency.capital?.toLowerCase().includes(searchLower);
+ return firstName || lastName;
+ });
+
+ const handleToggle = async (agencyId: number, currentStatus: string) => {
+ const newStatus = currentStatus === '1' ? '0' : '1';
+
+ setLocalData((prevData) =>
+ prevData.map((agency) =>
+ agency.id === agencyId ? { ...agency, is_active: newStatus } : agency
+ )
+ );
+
+ try {
+ await userDeactivateToggle({ id: agencyId, is_active: newStatus }).unwrap();
+ refetch()
+ } catch (error) {
+ console.error("Error updating privacy policy:", error);
+ setLocalData((prevData) =>
+ prevData.map((agency) =>
+ agency.id === agencyId ? { ...agency, is_active: currentStatus } : agency
+ )
+ );
+ }
+ }
+
+ const manageUser = filteredData?.map((agency: any, index: number) => ({
+ "Sr. No": index + 1,
+ "First Name": agency?.first_name,
+ "Last Name": agency?.last_name,
+ "User Type": agency?.principal_type_xid === 3 ? "JobSeeker" : "Recruiter",
"Activate/Deactivate": (
-
-
+
+ handleToggle(agency.id, agency.is_active ? "1" : "0")}
+ />
),
- })),
-];
+ }));
+
+ if (isLoading) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ // if (isError) {
+ // return (
+ //
+ //
+ // Error loading data
+ //
+ //
+ // );
+ // }
-const DeactivatedAccounts = () => {
return (
- {
px={3}
>
- Deactivated User Accounts
+ Deactivated User Accounts
-
- }
- color={"#000"}
- >
-
-
+ {
+ setSearchTerm(value);
+ // setCurrentPage(1);
+ refetch()
+ }}
+ />
diff --git a/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
index 39364a2..770bc35 100644
--- a/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
@@ -1,7 +1,6 @@
// import { MdOutlineRemoveRedEye } from "react-icons/md";
-import { Field, Input, Span, Stack } from "@chakra-ui/react";
+import { Field, Input, Stack } from "@chakra-ui/react";
import {
- DialogActionTrigger,
DialogBody,
DialogCloseTrigger,
DialogContent,
@@ -15,95 +14,197 @@ import {
import { Button } from "../../../components/ui/button";
// import { TbEdit } from "react-icons/tb";
import Edit from "../../../components/ActionIcons/Edit";
+import { UserData, useUpdateUserMutation } from "../../../Redux/Service/manage.user";
+import { useState } from "react";
+import { Toaster, toaster } from "../../../components/ui/toaster";
+
+function EditRegisterUsers({ data, refetch }: { data: UserData, refetch: () => void }) {
+ const [isOpen, setIsOpen] = useState(false);
+ const [formData, setFormData] = useState({
+ id: data?.id,
+ first_name: data?.first_name || '',
+ last_name: data?.last_name || '',
+ principal_type_xid: data?.principal_type_xid,
+ phone_number: data?.phone_number || '',
+ gender: data?.gender || '',
+ date_of_birth: data?.date_of_birth || '',
+ principal_type: data?.principal_type,
+ is_active: data?.is_active ?? true,
+ principle_language_links: data?.principle_language_links ?? [],
+ });
+ const [updateUser] = useUpdateUserMutation();
+
+ const handleOpenModal = () => {
+ setIsOpen(true);
+ };
+
+ const handleSubmit = async (event: React.FormEvent) => {
+ event.preventDefault();
+ if (formData.first_name === '' || formData.last_name === '' || formData.phone_number === '' || formData.gender === '' || formData.date_of_birth === '') {
+ toaster.create({
+ title: "Error",
+ description: "Input fields cannot be empty",
+ type: "error",
+ });
+ return;
+ }
+
+ const languageData = formData?.principle_language_links.map(link => link.language_xid);
+
+ const payload = {
+ id: formData?.id,
+ principal_type_xid: formData?.principal_type_xid,
+ principal_source_xid: formData?.id,
+ first_name: formData?.first_name,
+ last_name: formData?.last_name,
+ gender: formData?.gender,
+ date_of_birth: formData?.date_of_birth,
+ language_xid: languageData,
+ };
+
+ // console.log('payload', payload)
+
+ try {
+ const response = await updateUser(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) {
+ console.error("Error updating template:", error);
+ // alert("Failed to update template");
+ toaster.create({
+ title: "Error",
+ description: "Something went wrong",
+ type: "error",
+ });
+ }
+ };
-function EditRegisterUsers() {
return (
-
-
-
+ <>
+ setIsOpen(open)}>
+
+ {/*
-
-
+ */}
+
+
-
-
-
- Edit user Accounts
-
-
+
+
+
+ Edit user Accounts
+
+
-
-
-
-
- First Name
-
-
+
+
+
+
+ First Name
+
+ setFormData({ ...formData, first_name: e.target.value })}
+ />
-
- Last Name
-
-
+
+ Last Name
+
+ setFormData({ ...formData, last_name: e.target.value })}
+ />
-
- Gender
-
-
+
+ Gender
+
+ setFormData({ ...formData, gender: e.target.value })}
+ />
-
- DOB
-
-
+
+ DOB
+
+ setFormData({ ...formData, date_of_birth: e.target.value })}
+ />
-
- OTP Verified
-
-
+
+ Mobile Number
+
+ setFormData({ ...formData, phone_number: e.target.value })}
+ />
-
+
+ Type Of User
+
+ setFormData({ ...formData, principal_type: { ...formData.principal_type, principal_type_title: e.target.value } })}
+ />
+
+ {/*
Language
-
-
-
-
-
-
+ /> */}
+
+
+
+
+
Save
-
-
-
-
-
+
+
+
+
+
+ >
);
}
diff --git a/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
index 484953f..b0234bb 100644
--- a/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
@@ -119,10 +119,12 @@ const RegisterUsers = () => {
"Action": (
-
+
@@ -18,13 +19,13 @@ function ViewRegisterUsers() {
@@ -39,14 +40,24 @@ function ViewRegisterUsers() {
First Name
Last Name
@@ -54,6 +65,7 @@ function ViewRegisterUsers() {
@@ -61,21 +73,41 @@ function ViewRegisterUsers() {
- OTP Verified
+ Mobile Number
+ Type Of User
+
+
+
+ {/*
Language
+ /> */}
diff --git a/src/Pages/MasterModule/AgencyMaster/AgencyMaster.tsx b/src/Pages/MasterModule/AgencyMaster/AgencyMaster.tsx
index b2e8025..defaf14 100644
--- a/src/Pages/MasterModule/AgencyMaster/AgencyMaster.tsx
+++ b/src/Pages/MasterModule/AgencyMaster/AgencyMaster.tsx
@@ -78,35 +78,47 @@ const AgencyMaster = () => {
};
const filteredData = localData?.filter((agency) =>
- agency?.name.toLowerCase().includes(searchTerm.toLowerCase())
+ agency?.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ agency?.rc_number.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ agency?.state.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ agency?.registered_office.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ agency?.domain_name.toLowerCase().includes(searchTerm.toLowerCase()) ||
+ agency?.gst_number.toLowerCase().includes(searchTerm.toLowerCase())
);
- const managepost = filteredData?.map((agency: any, index: number) => ({
- 'id': agency.id,
- "Sr. No": (currentPage - 1) * (data?.data.per_page ?? 0) + index + 1,
- "Agency Name": agency.name,
- "RC no.": agency.rc_number,
- "State": agency.state,
- "RC Status": agency.rc_status,
- "Registered Office Address": agency.registered_office,
- "Website/Domain": agency.domain_name,
- "GST no.": agency.gst_number,
- "is_active": agency.is_active,
- "Action": (
-
-
- {/* */}
-
- handleToggle(agency.id.toString(), Number(agency.is_active))}
- checked={Boolean(Number(agency.is_active))}
- />
-
-
- ),
- }));
+ const activeCount = filteredData?.filter((a: any) => a.is_active === 1).length ?? 0;
+
+ const managepost = filteredData?.map((agency: any, index: number) => {
+ const isOnlyActive = activeCount === 1 && agency.is_active === 1;
+
+ return {
+ id: agency.id,
+ "Sr. No": (currentPage - 1) * (data?.data.per_page ?? 0) + index + 1,
+ "Agency Name": agency.name,
+ "RC no.": agency.rc_number,
+ "State": agency.state,
+ "RC Status": agency.rc_status,
+ "Registered Office Address": agency.registered_office,
+ "Website/Domain": agency.domain_name,
+ "GST no.": agency.gst_number,
+ "is_active": agency.is_active,
+ Action: (
+
+
+
+ handleToggle(agency.id.toString(), Number(agency.is_active))}
+ checked={Boolean(Number(agency.is_active))}
+ disabled={isOnlyActive}
+ />
+
+
+ ),
+ };
+ });
+
useEffect(() => {
if (data?.data?.data) {
@@ -175,7 +187,7 @@ const AgencyMaster = () => {
}}
onPageChange={handlePageChange}
/>
-
+
)
}
diff --git a/src/Pages/MasterModule/AgencyMaster/ViewAgencyAddModel.tsx b/src/Pages/MasterModule/AgencyMaster/ViewAgencyAddModel.tsx
index ccb782f..5658426 100644
--- a/src/Pages/MasterModule/AgencyMaster/ViewAgencyAddModel.tsx
+++ b/src/Pages/MasterModule/AgencyMaster/ViewAgencyAddModel.tsx
@@ -28,7 +28,7 @@ function ViewAgencyAddModel({ refetch }: { refetch: VoidFunction }) {
...prev,
[name]: value,
}));
- }
+ }
const handleSubmit = async () => {
console.log("New Data:", formData);
diff --git a/src/Pages/MasterModule/Country/CountryAddModel.tsx b/src/Pages/MasterModule/Country/CountryAddModel.tsx
index b2a7834..3f0dc77 100644
--- a/src/Pages/MasterModule/Country/CountryAddModel.tsx
+++ b/src/Pages/MasterModule/Country/CountryAddModel.tsx
@@ -2,7 +2,7 @@ import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHead
import { Field, Input, Stack, Text } from "@chakra-ui/react"
import { IoMdAdd } from "react-icons/io"
import { Button } from "../../../components/ui/button"
-import { useState } from "react";
+import { useEffect, useState } from "react";
import { PostCountry, useCreateCountryPostMutation } from "../../../Redux/Service/country.master";
import { Toaster, toaster } from "../../../components/ui/toaster";
@@ -19,12 +19,26 @@ function CountryAddModel() {
currency_symbol: '',
});
+ useEffect(() => {
+ if (!isOpen) {
+ setCountryName({
+ en_name: '',
+ country_code: '',
+ phonecode: '',
+ capital: '',
+ currency: '',
+ currency_name: '',
+ currency_symbol: '',
+ });
+ }
+ }, [isOpen]);
+
const handleOpenModal = () => {
setIsOpen(true); // Open modal when clicking "Add"
};
const handleSubmit = async () => {
- if (countryName.en_name === "") {
+ if (countryName.en_name === "" || countryName.country_code === "" || countryName.phonecode === "" || countryName.capital === "" || countryName.currency === "" || countryName.currency_name === "" || countryName.currency_symbol === "") {
toaster.create({
title: "Error",
description: "Input fields cannot be empty",
@@ -98,7 +112,7 @@ function CountryAddModel() {
Country
Country Code
Phone Code
Capital
Currency
Currency name
Currency Symbol
([]); // Store object URLs separately
// const [updateTemplateMaster] = useUpdateTemplateMasterMutation()
const [isOpen, setIsOpen] = useState(false);
- const [selectedTemplate, setSelectedTemplate] = useState(null);
+ // const [selectedTemplate, setSelectedTemplate] = useState(null);
const token = localStorage.getItem("token");
- console.log(selectedTemplate);
+ console.log(images);
const handleImageChange = async (event: React.ChangeEvent) => {
if (event.target.files) {
@@ -57,7 +57,7 @@ function EditTemplateModel({ id, localData, refetch }: { id: number, localData:
const handleOpenModal = () => {
const template = localData?.find((item: any) => item.id === id);
if (template) {
- setSelectedTemplate(template);
+ // setSelectedTemplate(template);
setTitle(template.post_template_translate.length > 0 ? template.post_template_translate[0].title : "");
setSubTitle(template.post_template_translate.length > 0 ? template.post_template_translate[0].sub_title : "");
setUserType(template.principle_type_xid?.toString() || "");
@@ -90,9 +90,9 @@ function EditTemplateModel({ id, localData, refetch }: { id: number, localData:
return;
}
- const newImages = images.filter((image) => image instanceof File);
+ // const newImages = images.filter((image) => image instanceof File);
- if (newImages.length === 0) {
+ if (images.length === 0) {
toaster.create({
title: "Error",
description: "Please upload at least one image.",
@@ -107,8 +107,10 @@ function EditTemplateModel({ id, localData, refetch }: { id: number, localData:
formData.append("title", title);
formData.append("sub_title", subTitle);
- newImages.forEach((image, index) => {
- formData.append(`image_name[${index}]`, image, image.name);
+ images.forEach((image, index) => {
+ if (image instanceof File) {
+ formData.append(`image_name[${index}]`, image, image.name);
+ }
});
try {
diff --git a/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx b/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
index 2836560..40e0492 100644
--- a/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
+++ b/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
@@ -3,7 +3,7 @@ import { Box, Field, Input, Stack, Text } from "@chakra-ui/react"
import { IoMdAdd } from "react-icons/io"
import { Button } from "../../../components/ui/button"
import { FiUpload } from "react-icons/fi";
-import { useState } from "react";
+import { useEffect, useState } from "react";
// import { useCreateTemplatePostMutation } from "../../../Redux/Service/template.master.service";
import { Toaster, toaster } from "../../../components/ui/toaster"
import axios from "axios";
@@ -18,11 +18,21 @@ function TemplateAddModel({ refetch }: { refetch: VoidFunction }) {
// const [createTemplatePost] = useCreateTemplatePostMutation()
const [isOpen, setIsOpen] = useState(false);
const token = localStorage.getItem("token");
+
+ useEffect(() => {
+ if (!isOpen) {
+ setTitle("");
+ setSubTitle("");
+ setUserType("");
+ setImages([]);
+ }
+ }, [isOpen]);
+
if (!token) {
console.error("No token found in localStorage!");
- return;
+ return null;
}
-
+
const handleOpenModal = () => {
setIsOpen(true); // Open modal when clicking "Add"
};
@@ -112,7 +122,7 @@ function TemplateAddModel({ refetch }: { refetch: VoidFunction }) {
}
};
- // console.log("Token stored:", window.localStorage.getItem("token"));
+ // console.log("Token stored:", window.localStorage.getItem("token"))
return (
diff --git a/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx b/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
index 031a0a6..a1f4fdb 100644
--- a/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
+++ b/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
@@ -17,6 +17,7 @@ const APIURL = import.meta.env.VITE_IMG_TEMPLATES
const tableHeadRow = [
"Sr. No",
"Title",
+ "User Type",
"Images",
"Action"
];
@@ -92,11 +93,12 @@ const TemplateMaster = () => {
"Title": agency.post_template_translate.length > 0
? agency.post_template_translate[0].title
: "N/A",
+ "User Type": agency.principle_type_xid === 2 ? 'Recruiter' : 'Job Seeker',
"Images": (
//
{agency.post_template_image.map((img) => (
-
+
))}
{/* */}
diff --git a/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx b/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
index a094097..0c8f8a6 100644
--- a/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
+++ b/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
@@ -88,7 +88,9 @@ const WorkspaceMode = () => {
const managepost = filteredData?.map((agency: any, index: number) => ({
'id': agency.id,
"Sr. No": (currentPage - 1) * (data?.data.per_page ?? 0) + index + 1,
- "Title": agency.en_name,
+ "Title": agency.en_name.length > 12
+ ? agency.en_name.slice(0, 12) + '...'
+ : agency.en_name,
"is_active": agency.is_active,
"Action": (
diff --git a/src/Pages/SetNewPassword.tsx b/src/Pages/SetNewPassword.tsx
index 46f66e8..cb2d940 100644
--- a/src/Pages/SetNewPassword.tsx
+++ b/src/Pages/SetNewPassword.tsx
@@ -1,13 +1,13 @@
import {
- Box,
- Center,
- HStack,
- IconButton,
- Image,
- Input,
- Stack,
- Text,
- VStack,
+ Box,
+ Center,
+ HStack,
+ IconButton,
+ Image,
+ Input,
+ Stack,
+ Text,
+ VStack,
} from "@chakra-ui/react";
import axios from "axios";
import { useState } from "react";
@@ -19,154 +19,179 @@ import { InputGroup } from "../components/ui/input-group";
import { LuEye, LuEyeOff } from "react-icons/lu";
const SetNewPassword = () => {
- const [password, setPassword] = useState("");
- const [confirmPassword, setConfirmPassword] = useState("");
- const [isLoading, setIsLoading] = useState(false);
- const navigate = useNavigate();
- const queryParams = new URLSearchParams(window.location.search);
- const id = queryParams.get("id");
- const [showOldPassword, setShowOldPassword] = useState(false);
- const [showNewPassword, setShowNewPassword] = useState(false);
+ const [password, setPassword] = useState("");
+ const [confirmPassword, setConfirmPassword] = useState("");
+ const [isLoading, setIsLoading] = useState(false);
+ const navigate = useNavigate();
+ const queryParams = new URLSearchParams(window.location.search);
+ const id = queryParams.get("id");
+ const [showOldPassword, setShowOldPassword] = useState(false);
+ const [showNewPassword, setShowNewPassword] = useState(false);
- const handlePasswordSubmit = async () => {
- // Validation
- if (password.length < 8) {
- toaster.create({
- title: "Password must be at least 8 characters long",
- type: "error",
- });
- return;
+ const handlePasswordSubmit = async () => {
+ // Validation
+ if (password.length < 8) {
+ toaster.create({
+ title: "Password must be at least 8 characters long",
+ type: "error",
+ });
+ return;
+ }
+
+ if (password !== confirmPassword) {
+ toaster.create({
+ title: "Passwords do not match",
+ type: "error",
+ });
+ return;
+ }
+
+ setIsLoading(true);
+
+ try {
+ const res = await axios.post(
+ `${import.meta.env.VITE_API_URL}/update-password`,
+ {
+ password: password,
+ confirm_password: confirmPassword,
+ id: Number(id),
}
+ );
- if (password !== confirmPassword) {
- toaster.create({
- title: "Passwords do not match",
- type: "error",
- });
- return;
- }
+ if (res.data.status === "success") {
+ toaster.create({
+ title: "Password updated successfully",
+ type: "success",
+ });
+ navigate("/login"); // Redirect to login page
+ } else {
+ toaster.create({
+ title: res.data.message || "Failed to update password",
+ type: "error",
+ });
+ }
+ } catch (error: any) {
+ toaster.create({
+ title: error.response?.data?.message || "Something went wrong",
+ type: "error",
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ };
- setIsLoading(true);
+ return (
+
+
+
+
- try {
- const res = await axios.post(`${import.meta.env.VITE_API_URL}/update-password`, {
- password: password,
- confirm_password: confirmPassword,
- id: Number(id)
- });
+
+
+
+ Create a Password
+
- if (res.data.status === 'success') {
- toaster.create({
- title: "Password updated successfully",
- type: "success",
- });
- navigate("/login"); // Redirect to login page
- } else {
- toaster.create({
- title: res.data.message || "Failed to update password",
- type: "error",
- });
- }
- } catch (error: any) {
- toaster.create({
- title: error.response?.data?.message || "Something went wrong",
- type: "error",
- });
- } finally {
- setIsLoading(false);
- }
- };
+
+
+
+ New password
+
+ setShowOldPassword(!showOldPassword)}
+ // _hover={{ bg: "transparent" }}
+ bg={"transparent"}
+ color={"#000"}
+ height={"fit-content"}
+ mr={2}
+ >
+ {showOldPassword ? : }
+
+ }
+ >
+ setPassword(e.target.value)}
+ size={"sm"}
+ />
+
+
- return (
-
-
-
-
+
+
+ Confirm password
+
+ setShowNewPassword(!showNewPassword)}
+ bg={"transparent"}
+ color={"#000"}
+ mr={2}
+ >
+ {showNewPassword ? : }
+
+ }
+ >
+ setConfirmPassword(e.target.value)}
+ size={"sm"}
+ />
+
+
+
-
-
-
- Create a Password
-
+
+ Confirm Password
+
+
+
-
- New password
- setShowOldPassword(!showOldPassword)}
- _hover={{ bg: "transparent" }}
- height={'fit-content'}
- mr={2}
- >
- {showOldPassword ? : }
-
- }>
- setPassword(e.target.value)}
- />
-
-
- Confirm password
- setShowNewPassword(!showNewPassword)}
- _hover={{ bg: "transparent" }}
- height={'fit-content'}
- mr={2}
- >
- {showNewPassword ? : }
-
- }>
- setConfirmPassword(e.target.value)}
- />
-
-
-
-
- Confirm Password
-
-
-
-
-
-
- );
+
+
+ );
};
export default SetNewPassword;
diff --git a/src/Pages/SubAdmin/AddModel.tsx b/src/Pages/SubAdmin/AddModel.tsx
index 03472cb..9192c09 100644
--- a/src/Pages/SubAdmin/AddModel.tsx
+++ b/src/Pages/SubAdmin/AddModel.tsx
@@ -1,80 +1,233 @@
-import { Button } from "../../components/ui/button"
-import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react"
-import { IoMdAdd } from "react-icons/io"
-import { Checkbox } from "../../components/ui/checkbox"
+import { Button } from "../../components/ui/button";
+import {
+ DialogBody,
+ DialogCloseTrigger,
+ DialogContent,
+ DialogFooter,
+ DialogHeader,
+ DialogRoot,
+ DialogTitle,
+ DialogTrigger,
+} from "../../components/ui/dialog";
+import { Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react";
+import { IoMdAdd } from "react-icons/io";
+import { Checkbox } from "../../components/ui/checkbox";
+import { useCreateSubAdminPostMutation } from "../../Redux/Service/manage.subadmin.service";
+import { toaster } from "../../components/ui/toaster";
+import { useState } from "react";
-function AddModel() {
- return (
+function AddModel({ refetch }: { refetch: VoidFunction }) {
+ const [createSubAdminPost] = useCreateSubAdminPostMutation();
-
-
- {/*
-
- */}
- Add
+ // State fields
+ const [firstName, setFirstName] = useState("");
+ const [lastName, setLastName] = useState("");
+ const [userName, setUserName] = useState("");
+ const [dateOfBirth, setDateOfBirth] = useState("");
+ const [gender, setGender] = useState("");
+ // const [ setIsOpen] = useState(false);
-
+ const handleSubmit = async () => {
+ if (
+ !firstName.trim() ||
+ !lastName.trim() ||
+ !userName.trim() ||
+ !dateOfBirth.trim() ||
+ !gender.trim()
+ ) {
+ toaster.create({
+ title: "Error",
+ description: "Please fill in all required fields",
+ type: "error",
+ });
+ return;
+ }
-
-
- Add Sub Admin Account
-
+ const payload = {
+ principal_type_xid: 4,
+ principal_source_xid: 1,
+ user_name: userName,
+ first_name: firstName,
+ last_name: lastName,
+ date_of_birth: dateOfBirth,
+ gender: gender,
+ email_address: "example@yopmail.com", // Hardcoded
+ phone_number: "9876543210", // Hardcoded
+ created_by: 1,
+ };
-
-
+ try {
+ const response = await createSubAdminPost(payload).unwrap();
+ if (response) {
+ toaster.create({
+ title: "Success",
+ description: "Sub-admin created successfully",
+ type: "success",
+ });
+ refetch();
+ // setIsOpen(false);
+ setFirstName("");
+ setLastName("");
+ setUserName("");
+ setDateOfBirth("");
+ setGender("");
+ }
+ } catch (error) {
+ console.error("Error creating sub-admin:", error);
+ toaster.create({
+ title: "Error",
+ description: "Failed to create sub-admin",
+ type: "error",
+ });
+ }
+ };
-
- First Name
-
+ return (
+
+
+
+ Add
+
+
- Last Name
-
+
+
+
+ Add Sub Admin Account
+
+
- DOB
-
+
+
+
+
+ First Name
+
+ setFirstName(e.target.value)}
+ />
- Gender
-
- Permissions
-
-
- Dashboard
- Manage contact us
- manage User
- Manage CMS
- Manage Post
- Manage Reports
- manage Sub-Admin
- My profile
- Manage Jobs
- manage feedbacks
- Manage community
- Notification
-
-
-
-
-
- Save
-
-
+
+ Last Name
+
+ setLastName(e.target.value)}
+ />
-
-
-
+
+ Username
+
+ setUserName(e.target.value)}
+ />
- )
+
+ DOB
+
+ setDateOfBirth(e.target.value)}
+ />
+
+
+ Gender
+
+ setGender(e.target.value)}
+ />
+
+
+ Permissions
+
+
+
+
+ {[
+ "Dashboard",
+ "Manage contact us",
+ "manage User",
+ "Manage CMS",
+ "Manage Post",
+ "Manage Reports",
+ "manage Sub-Admin",
+ "My profile",
+ "Manage Jobs",
+ "manage feedbacks",
+ "Manage community",
+ "Notification",
+ ].map((permission) => (
+
+ {permission}
+
+ ))}
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
+ );
}
-export default AddModel
\ No newline at end of file
+export default AddModel;
diff --git a/src/Pages/SubAdmin/SubAdmin.tsx b/src/Pages/SubAdmin/SubAdmin.tsx
index cfa7eeb..924fb51 100644
--- a/src/Pages/SubAdmin/SubAdmin.tsx
+++ b/src/Pages/SubAdmin/SubAdmin.tsx
@@ -171,7 +171,7 @@ const SubAdmin = () => {
/>
{/* Add */}
-
+
{
trigger(id)
}
-
+
const viewSubAdmin = data?.data
const formatDateOfBirth = (dob: string): string => {
diff --git a/src/Redux/Service/agency.master.module.service.ts b/src/Redux/Service/agency.master.module.service.ts
index f96d017..65fa22f 100644
--- a/src/Redux/Service/agency.master.module.service.ts
+++ b/src/Redux/Service/agency.master.module.service.ts
@@ -99,3 +99,4 @@ export const {
useAgencyMasterToggleMutation,
useUpdateAgencyMasterMutation,
} = agencyMasterModule;
+
\ No newline at end of file
diff --git a/src/Redux/Service/deactivated.account.service.ts b/src/Redux/Service/deactivated.account.service.ts
index da76c97..b355471 100644
--- a/src/Redux/Service/deactivated.account.service.ts
+++ b/src/Redux/Service/deactivated.account.service.ts
@@ -1,26 +1,30 @@
-import { createApi } from "@reduxjs/toolkit/query";
+import { createApi } from "@reduxjs/toolkit/query/react"; // add /react for auto-generated hooks
import { baseQueryWithReauth } from "./apiSlice";
+interface DeactivatedData {
+ id: number;
+ email: string;
+ first_name: string;
+ created_at: string;
+}
+
+interface ApiResponse {
+ data: {
+ data: DeactivatedData[];
+ };
+}
+
export const deactivatedAccounts = createApi({
- reducerPath: "deactivatedAccounts",
- baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
- endpoints: (builder) => ({
-
-
-
- getPosts: builder.query({ query: () => "/posts" }),
-
-
-
-
-
+ reducerPath: "deactivatedAccounts",
+ baseQuery: baseQueryWithReauth,
+ tagTypes: ["Deactivated"],
+ endpoints: (builder) => ({
+ getContact: builder.query({
+ query: () => "/manage-user-deactivate-list",
+ providesTags: ["Deactivated"],
}),
- });
-
- export const { } = deactivatedAccounts;
-
- export type Post = {
- id: number;
- title: string;
- body: string;
- };
\ No newline at end of file
+ }),
+});
+
+// β
Export the auto-generated hook
+export const { useGetContactQuery } = deactivatedAccounts;
diff --git a/src/Redux/Service/faqs.service.ts b/src/Redux/Service/faqs.service.ts
index 332b87c..239089f 100644
--- a/src/Redux/Service/faqs.service.ts
+++ b/src/Redux/Service/faqs.service.ts
@@ -69,6 +69,7 @@ export const faqs = createApi({
body: { id, is_active },
}),
}),
+
deleteFaqPost: builder.mutation<{ status: string; message: string }, { id: number }>({
query: ({ id }) => ({
diff --git a/src/Redux/Service/manage.contactus.service.ts b/src/Redux/Service/manage.contactus.service.ts
index 20b3890..546d4a8 100644
--- a/src/Redux/Service/manage.contactus.service.ts
+++ b/src/Redux/Service/manage.contactus.service.ts
@@ -1,26 +1,33 @@
-import { createApi } from "@reduxjs/toolkit/query";
+import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQueryWithReauth } from "./apiSlice";
+interface ContactData {
+ id: number;
+ email: string;
+ first_name: string;
+ created_at: string;
+}
+
+interface ApiResponse {
+ data: {
+ data: ContactData[];
+ };
+}
+
export const manageContactUs = createApi({
- reducerPath: "manageContactUs",
- baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
- endpoints: (builder) => ({
-
-
-
- getPosts: builder.query({ query: () => "/posts" }),
-
-
-
-
-
+ reducerPath: "manageContactUs",
+ baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
+ tagTypes: ["Contact"],
+ endpoints: (builder) => ({
+
+
+ getContact: builder.query({
+ query: () => "/contact-us",
+ providesTags: ["Contact"],
}),
- });
-
- export const { } = manageContactUs;
-
- export type Post = {
- id: number;
- title: string;
- body: string;
- };
\ No newline at end of file
+
+
+ }),
+});
+
+export const { useGetContactQuery } = manageContactUs;
diff --git a/src/Redux/Service/manage.jobs.service.ts b/src/Redux/Service/manage.jobs.service.ts
index 0ce6b24..728b3a1 100644
--- a/src/Redux/Service/manage.jobs.service.ts
+++ b/src/Redux/Service/manage.jobs.service.ts
@@ -62,7 +62,7 @@ export interface CountryEdit {
}
-export type PostJobStatus = {
+export type PostJobStatus = {
title: string
};
@@ -70,15 +70,27 @@ export const manageJobs = createApi({
reducerPath: "manageJobs",
baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
endpoints: (builder) => ({
+
getManageJobs: builder.query({
query: (page = 1) => `/manage-jobs-list?page=${page}`,
}),
+ viewJobs: builder.query({
+ query: (id) => `/manage-jobs-list/${id}`,
+ }),
+ deleteJobsPost: builder.mutation<{ status: string; message: string }, { id: number }>({
+ query: ({ id }) => ({
+ url: `/manage-jobs-delete`,
+ method: "POST",
+ body: { id },
+ }),
+ }),
+
}),
});
-export const { useGetManageJobsQuery } = manageJobs;
+export const { useGetManageJobsQuery,useLazyViewJobsQuery,useDeleteJobsPostMutation } = manageJobs;
diff --git a/src/Redux/Service/manage.subadmin.service.ts b/src/Redux/Service/manage.subadmin.service.ts
index d10fbe6..082a66b 100644
--- a/src/Redux/Service/manage.subadmin.service.ts
+++ b/src/Redux/Service/manage.subadmin.service.ts
@@ -40,7 +40,6 @@ interface ApiResponse {
data: PaginatedData;
}
-
// export type SubAdminPost = {
// id: number;
// first_name: string,
@@ -80,12 +79,32 @@ interface SubAdminView {
data: SubAdmin[];
}
+interface CreateSubAdminPayload {
+ principal_type_xid: number;
+ principal_source_xid: number;
+ user_name: string;
+ first_name: string;
+ last_name: string;
+ date_of_birth: string;
+ gender: string;
+ email_address: string;
+ phone_number: string;
+ created_by: number;
+}
+
+interface CreateSubAdminResponse {
+ status: string;
+ status_code: number;
+ message: string;
+ data: UserData;
+}
export const manageSubAdmin = createApi({
reducerPath: "manageSubAdmin",
baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
- tagTypes: ['SubAdmin'],
+ tagTypes: ["SubAdmin"],
endpoints: (builder) => ({
+
createFaqPost: builder.mutation>({
query: (data) => ({
url: "/faq-store",
@@ -93,12 +112,13 @@ export const manageSubAdmin = createApi({
body: data,
}),
}),
+
getSubAdmin: builder.query({
- query: () => `/sub-admin`
+ query: () => `/sub-admin`,
}),
viewSubAdmin: builder.query({
- query: (id) => `/sub-admin-view/${id}`
+ query: (id) => `/sub-admin-view/${id}`,
}),
updateSubAdmin: builder.mutation({
@@ -109,6 +129,18 @@ export const manageSubAdmin = createApi({
}),
}),
+ createSubAdminPost: builder.mutation<
+ CreateSubAdminResponse,
+ CreateSubAdminPayload
+ >({
+ query: (data) => ({
+ url: "/sub-admin-create",
+ method: "POST",
+ body: data,
+ }),
+ invalidatesTags: ["SubAdmin"], // Add this to invalidate cache
+ }),
+
faqToggle: builder.mutation({
query: ({ id, is_active }) => ({
url: `/faq-status`,
@@ -131,10 +163,11 @@ export const {
useLazyViewSubAdminQuery,
useUpdateSubAdminMutation,
useDeleteSubAdminPostMutation,
+ useCreateSubAdminPostMutation,
} = manageSubAdmin;
export type Post = {
id: number;
title: string;
body: string;
-};
\ No newline at end of file
+};
diff --git a/src/Redux/Service/manage.user.ts b/src/Redux/Service/manage.user.ts
index f2be3f0..d487369 100644
--- a/src/Redux/Service/manage.user.ts
+++ b/src/Redux/Service/manage.user.ts
@@ -14,7 +14,15 @@ export interface UserData {
id: number;
principal_type_title: string;
},
- principle_language_links:[]
+ principle_language_links:{
+ id: number;
+ language_xid: number;
+ iam_principal_xid: number;
+ language: {
+ id: number,
+ language_name: string;
+ }
+ }[]
}
interface ApiResponse {
@@ -55,7 +63,7 @@ export const registerUser = createApi({
reducerPath: "registerUser",
baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
endpoints: (builder) => ({
- createCountryPost: builder.mutation>({
+ createUser: builder.mutation>({
query: (data) => ({
url: "/country-add",
method: "POST",
@@ -67,13 +75,13 @@ export const registerUser = createApi({
query: (page = 1) => `/manage-user-list?page=${page}`,
}),
- getCountryMasterEdit: builder.query({
- query: (id) => `/country-edit/${id}`,
+ getDeactivateUser: builder.query({
+ query: (page = 1) => `/manage-user-deactivate-list?page=${page}`,
}),
- updateCountry: builder.mutation({
+ updateUser: builder.mutation({
query: (updatedData) => ({
- url: "/country-update",
+ url: "/manage-user-update",
method: "POST",
body: updatedData,
}),
@@ -87,6 +95,14 @@ export const registerUser = createApi({
}),
}),
+ userDeactivateToggle: builder.mutation({
+ query: ({ id, is_active }) => ({
+ url: `/manage-user-deactivate-status`,
+ method: "POST",
+ body: { id, is_active },
+ }),
+ }),
+
// deleteFaqPost: builder.mutation<{ status: string; message: string }, { id: number }>({
// query: ({ id }) => ({
// url: `/faq-delete`,
@@ -100,9 +116,10 @@ export const registerUser = createApi({
export const {
useGetManageUserQuery,
- useGetCountryMasterEditQuery,
- useCreateCountryPostMutation,
- useUpdateCountryMutation,
+ useCreateUserMutation,
+ useUpdateUserMutation,
useUserToggleMutation,
+ useGetDeactivateUserQuery,
+ useUserDeactivateToggleMutation,
// useDeleteFaqPostMutation
} = registerUser;
\ No newline at end of file
diff --git a/src/Redux/Service/template.master.service.ts b/src/Redux/Service/template.master.service.ts
index f770228..ca36912 100644
--- a/src/Redux/Service/template.master.service.ts
+++ b/src/Redux/Service/template.master.service.ts
@@ -27,6 +27,7 @@ interface PaginationData {
export interface Template {
id: number;
is_active: boolean;
+ principle_type_xid: number;
post_template_translate: PostTemplateTranslate[];
post_template_image: PostTemplateImage[];
}
diff --git a/src/Redux/Service/workspace.mode.ts b/src/Redux/Service/workspace.mode.ts
index 8d88c49..9f3a73d 100644
--- a/src/Redux/Service/workspace.mode.ts
+++ b/src/Redux/Service/workspace.mode.ts
@@ -50,7 +50,7 @@ export const workspaceMode = createApi({
endpoints: (builder) => ({
createWorkspacePost: builder.mutation>({
query: (data) => ({
- url: "/department-master-store",
+ url: "/workspace-create",
method: "POST",
body: data,
}),
diff --git a/src/components/AlertDailog.tsx b/src/components/AlertDailog.tsx
index 916cf99..3b536dd 100644
--- a/src/components/AlertDailog.tsx
+++ b/src/components/AlertDailog.tsx
@@ -40,8 +40,9 @@ const AlertDailog: React.FC = ({
size={"xs"}
role="alertdialog"
open={isOpen}
+
>
-
+
{button ? (
button
) : (
@@ -134,3 +135,16 @@ const AlertDailog: React.FC = ({
};
export default AlertDailog;
+
+
+// import React from 'react'
+
+// const AlertDailog = () => {
+// return (
+//
+
+//
+// )
+// }
+
+// export default AlertDailog
diff --git a/src/components/DataTable.tsx b/src/components/DataTable.tsx
index 64ce088..28c3bf7 100644
--- a/src/components/DataTable.tsx
+++ b/src/components/DataTable.tsx
@@ -108,7 +108,7 @@ const DataTable: React.FC = ({
- We do not have any records
+ No records found β theyβll appear here if available.