diff --git a/src/Layouts/DefaultLayout.tsx b/src/Layouts/DefaultLayout.tsx
index ba48a21..e1217ad 100644
--- a/src/Layouts/DefaultLayout.tsx
+++ b/src/Layouts/DefaultLayout.tsx
@@ -1,6 +1,6 @@
import { HStack, Image, Text, VStack } from "@chakra-ui/react";
import React, { FC, useContext } from "react";
-import { RiNotificationLine } from "react-icons/ri";
+// import { RiNotificationLine } from "react-icons/ri";
import { NavLink, useLocation, useNavigate } from "react-router-dom";
import { nav } from "../Routes/Nav";
import logo from '../assets/logo.svg';
@@ -74,7 +74,7 @@ const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => {
-
+ {/* */}
navigate('/profile')} >
diff --git a/src/Pages/ManageCMS/AboutUs/AboutUsAddModel.tsx b/src/Pages/ManageCMS/AboutUs/AboutUsAddModel.tsx
index 7424d1e..02fcd4c 100644
--- a/src/Pages/ManageCMS/AboutUs/AboutUsAddModel.tsx
+++ b/src/Pages/ManageCMS/AboutUs/AboutUsAddModel.tsx
@@ -16,6 +16,7 @@ import "react-quill/dist/quill.snow.css"; // Import the styles
import { useState } from "react";
import { useUpdateAboutUsMutation } from "../../../Redux/Service/manage.aboutus.service";
import { useForm, Controller } from "react-hook-form"; // Import React Hook Form
+import { toaster, Toaster } from "../../../components/ui/toaster";
function AboutUsAddModel({ aboutUsData }: { aboutUsData: any }) {
const [isOpen, setIsOpen] = useState(false);
@@ -55,87 +56,95 @@ function AboutUsAddModel({ aboutUsData }: { aboutUsData: any }) {
}).unwrap();
setIsOpen(false); // Close dialog on success
reset(); // Reset the form
- } catch (error) {
+ } catch (error: any) {
console.error("Update failed:", error);
+ toaster.create({
+ title: "Error",
+ description: `${error.data.message || "Failed to update"}`,
+ type: "error",
+ });
}
};
return (
-
-
-
-
-
-
-
-
- Edit About Us
-
-
-
-
-
-
-
- About Us Content
-
- {/* Use Controller to integrate ReactQuill with React Hook Form */}
- (
-
- )}
- />
-
-
-
-
-
+ <>
+
+
-
+
- setIsOpen(false)} />
-
-
+
+
+
+ Edit About Us
+
+
+
+
+
+
+
+ About Us Content
+
+ {/* Use Controller to integrate ReactQuill with React Hook Form */}
+ (
+
+ )}
+ />
+
+
+
+
+
+
+
+
+ setIsOpen(false)} />
+
+
+
+ >
);
}
diff --git a/src/Pages/ManageUsers/RegisterUsers/AddRegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/AddRegisterUsers.tsx
index c421c1b..861650c 100644
--- a/src/Pages/ManageUsers/RegisterUsers/AddRegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/AddRegisterUsers.tsx
@@ -1,4 +1,4 @@
-import { Field, Input, Stack } from "@chakra-ui/react";
+import { Box, Field, Input, Stack } from "@chakra-ui/react";
import {
DialogActionTrigger,
DialogBody,
@@ -12,20 +12,31 @@ import {
} from "../../../components/ui/dialog";
import { Button } from "../../../components/ui/button";
import { IoMdAdd } from "react-icons/io";
+import { useState } from "react";
// import { useCreateUserMutation } from "../../../Redux/Service/manage.user";
// import { useState } from "react";
function AddRegisterUsers() {
// const [createUser] = useCreateUserMutation();
+ const [userType, setUserType] = useState("");
- // const [user, setUser] = useState({
- // first_name: '',
- // last_name: '',
- // date_of_birth: '',
- // gender: '',
- // date_of_birth: '',
- // principle_language_linkss: [],
- // });
+ const [user, setUser] = useState<{
+ principal_type_xid: number;
+ principal_source_xid: number | "";
+ first_name: string;
+ last_name: string;
+ gender: string;
+ date_of_birth: string;
+ language_name: string[];
+ }>({
+ principal_type_xid: 1,
+ principal_source_xid: userType,
+ first_name: '',
+ last_name: '',
+ gender: '',
+ date_of_birth: '',
+ language_name: [],
+ });
return (
@@ -36,13 +47,13 @@ function AddRegisterUsers() {
@@ -57,42 +68,110 @@ function AddRegisterUsers() {
First Name
setUser({ ...user, first_name: e.target.value })}
/>
Last Name
setUser({ ...user, last_name: e.target.value })}
/>
Gender
setUser({ ...user, gender: e.target.value })}
/>
DOB
setUser({ ...user, date_of_birth: e.target.value })}
/>
-
+
+ Select User Type
+
+
+
+
+
+ {/*
OTP Verified
+ /> */}
Language
+ setUser({
+ ...user,
+ language_name: e.target.value
+ .split(",")
+ .map(lang => lang.trim())
+ .filter(Boolean), // remove empty strings
+ })
+ }
+
/>
diff --git a/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
index 11d011b..e7ffd23 100644
--- a/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/RegisterUsers.tsx
@@ -1,5 +1,6 @@
import {
Box, HStack,
+ Image,
// Image,
Text,
} from "@chakra-ui/react";
@@ -10,10 +11,13 @@ import DataTable from "../../../components/DataTable";
import { Switch } from "../../../components/ui/switch";
import ViewRegisterUsers from "./ViewRegisterUsers";
import EditRegisterUsers from "./EditRegisterUsers";
-import AddRegisterUsers from "./AddRegisterUsers";
+// import AddRegisterUsers from "./AddRegisterUsers";
import { useEffect, useState } from "react";
-import { useGetManageUserQuery, UserData, useUserToggleMutation } from "../../../Redux/Service/manage.user";
+import { useDeleteUserMutation, useGetManageUserQuery, UserData, useUserToggleMutation } from "../../../Redux/Service/manage.user";
import SearchComponent from "../../../components/SearchComponent";
+import AlertDailog from "../../../components/AlertDailog";
+import { toaster } from "../../../components/ui/toaster";
+import Delete from "../../../components/ActionIcons/Delete";
// import Delete from "../../../components/ActionIcons/Delete";
const tableHeadRow = [
@@ -67,6 +71,10 @@ const RegisterUsers = () => {
const [localData, setLocalData] = useState([]);
const [searchTerm, setSearchTerm] = useState("");
const [userToggle] = useUserToggleMutation()
+ const [deleteFaqPost] = useDeleteUserMutation()
+ const [deleteModal, setDeleteModal] = useState(false)
+ const [selectedFaqId, setSelectedFaqId] = useState(null);
+
console.log("Register Users Data", data?.data.data);
useEffect(() => {
@@ -108,6 +116,29 @@ const RegisterUsers = () => {
}
}
+ const handleDeleteFaq = async (faqId: number) => {
+ try {
+ const response = await deleteFaqPost({ id: faqId }).unwrap();
+ if (response?.status === "success") {
+ toaster.create({
+ title: "Success",
+ description: "User deleted successfully",
+ type: "success",
+ });
+ refetch()
+ console.log("User deleted successfully:", response);
+ }
+ // Optionally, refetch data or update state after deletion
+ } catch (error) {
+ console.error("Error deleting User:", error);
+ toaster.create({
+ title: "Error",
+ description: "Something went wrong",
+ type: "error",
+ });
+ }
+ };
+
const managepost = filteredData?.flatMap((agency: UserData, index: number) => ({
"Sr. No": (currentPage - 1) * (data?.data.per_page ?? 0) + index + 1,
"First Name": agency.first_name,
@@ -134,6 +165,24 @@ const RegisterUsers = () => {
onChange={() => handleToggle(agency.id, agency.is_active ? '1' : '0')}
/>
+ {
+ setSelectedFaqId(agency.id);
+ setDeleteModal(true)
+ }} />}
+ alertText="Do you want to delete user?"
+ alertIcon={}
+ alertCaption="are you sure you want to delete ?"
+ onClose={() => setDeleteModal(false)}
+ onConfirm={() => {
+ // console.log("Deleting FAQ with ID:", selectedFaqId); // Correct ID
+ if (selectedFaqId) {
+ setDeleteModal(false);
+ handleDeleteFaq(selectedFaqId);
+ }
+ }}
+ />
),
}))
@@ -161,7 +210,7 @@ const RegisterUsers = () => {
refetch()
}}
/>
-
+ {/* */}
[...prevImages, file]);
+ // setImages((prevImages) => [...prevImages, file]);
+ if (file) {
+ setImages([file])
+ }
}
};
@@ -126,11 +129,11 @@ function EditTemplateModel({ id, localData, refetch }: { id: number, localData:
}
setIsOpen(false);
refetch()
- } catch (error) {
+ } catch (error: any) {
console.error("Error updating template:", error);
toaster.create({
title: "Error",
- description: "Failed to update template. Please try again.",
+ description: `${error.response?.data?.message || "Please try again later."}`,
type: "error",
});
}
diff --git a/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx b/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
index 40e0492..d176dd3 100644
--- a/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
+++ b/src/Pages/MasterModule/TemplateMaster/TemplateAddModel.tsx
@@ -50,7 +50,10 @@ function TemplateAddModel({ refetch }: { refetch: VoidFunction }) {
return;
}
- setImages((prevImages) => [...prevImages, file]);
+ // setImages((prevImages) => [...prevImages, file]);
+ if(file){
+ setImages([file])
+ }
}
};
@@ -116,9 +119,14 @@ function TemplateAddModel({ refetch }: { refetch: VoidFunction }) {
setUserType("");
setImages([]);
setIsOpen(false)
- } catch (error) {
+ } catch (error: any) {
console.error("Error creating template:", error);
// alert("Failed to create template");
+ toaster.create({
+ title: "Error",
+ description: `${error.response?.data?.message || "Please try again later."}`,
+ type: "error",
+ });
}
};
diff --git a/src/Pages/SubAdmin/AddModel.tsx b/src/Pages/SubAdmin/AddModel.tsx
index 50a7447..1dbc025 100644
--- a/src/Pages/SubAdmin/AddModel.tsx
+++ b/src/Pages/SubAdmin/AddModel.tsx
@@ -16,7 +16,7 @@ import { PermissionResponse, useCreateSubAdminPostMutation } from "../../Redux/S
import { toaster, Toaster } from "../../components/ui/toaster";
import { useEffect, useState } from "react";
-function AddModel({ refetch, allPermissions }: { refetch: VoidFunction, allPermissions: PermissionResponse }) {
+function AddModel({ refetch, allPermissions }: { refetch: VoidFunction, allPermissions?: PermissionResponse }) {
const [createSubAdminPost] = useCreateSubAdminPostMutation();
// State fields
@@ -281,15 +281,20 @@ useEffect(() => {
- {allPermissions?.data.permission.map((permission: any) => (
- handleCheckboxToggle(permission.id)}>
- {permission.app_resource_title}
-
- ))}
+ {Array.isArray(allPermissions?.data?.permission)
+ ? allPermissions.data.permission.map((permission: any) => (
+ handleCheckboxToggle(permission.id)}
+ >
+ {permission.app_resource_title}
+
+ ))
+ : Loading permissions...
+ }
diff --git a/src/Pages/SubAdmin/EditSubAdmin.tsx b/src/Pages/SubAdmin/EditSubAdmin.tsx
index 7a3d259..329d11b 100644
--- a/src/Pages/SubAdmin/EditSubAdmin.tsx
+++ b/src/Pages/SubAdmin/EditSubAdmin.tsx
@@ -19,17 +19,15 @@ import { Toaster, toaster } from "../../components/ui/toaster";
const resourceIdToLabel: { [key: number]: string } = {
1: 'Dashboard',
- 2: 'Manage contact us',
- 3: 'Manage User',
- 4: 'Manage CMS',
- 5: 'Manage Post',
- 6: 'Manage Reports',
- 7: 'Manage Sub-Admin',
- 8: 'My profile',
- 9: 'Manage Jobs',
- 10: 'Manage feedbacks',
- 11: 'Manage community',
- 12: 'Notification',
+ 2: 'Manage User',
+ 3: 'Manage Post',
+ 4: 'Manage Subadmin',
+ 5: 'Manage Jobs',
+ 6: 'Manage Groups',
+ 7: 'Manage Contact Us',
+ 8: 'Manage CMS',
+ 9: 'My Profile',
+ 10: 'Master Module',
};
@@ -43,7 +41,7 @@ interface ResourceActionLink {
}
}
-function EditSubAdmin({ id, refetch, allPermissions }: { id: number, refetch: VoidFunction, allPermissions: PermissionResponse }) {
+function EditSubAdmin({ id, refetch, allPermissions }: { id: number, refetch: VoidFunction, allPermissions?: PermissionResponse }) {
const [trigger, { data }] = useLazyViewSubAdminQuery();
const [updateSubAdmin] = useUpdateSubAdminMutation()
const [isOpen, setIsOpen] = useState(false);
@@ -269,44 +267,6 @@ function EditSubAdmin({ id, refetch, allPermissions }: { id: number, refetch: Vo
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
-
- */}
{editData.permission.map((permission) => {
const label = resourceIdToLabel[permission.app_resource_xid];
diff --git a/src/Pages/SubAdmin/SubAdmin.tsx b/src/Pages/SubAdmin/SubAdmin.tsx
index e9bf485..0aa0358 100644
--- a/src/Pages/SubAdmin/SubAdmin.tsx
+++ b/src/Pages/SubAdmin/SubAdmin.tsx
@@ -11,7 +11,7 @@ import ViewSubAdmin from "./ViewSubAdmin"
import Delete from "../../components/ActionIcons/Delete"
import { PermissionResponse, useDeleteSubAdminPostMutation, useGetPermissionQuery, useGetSubAdminQuery } from "../../Redux/Service/manage.subadmin.service"
import { useEffect, useState } from "react"
-import { toaster } from "../../components/ui/toaster"
+import { Toaster, toaster } from "../../components/ui/toaster"
import { useDebounce } from "../../components/Hooks/useDebounce"
import SearchComponent from "../../components/SearchComponent"
@@ -140,7 +140,7 @@ const SubAdmin = () => {
{/* */}
- {allPermissions && }
+
{
onChange={handleSearchChange}
/>
{/* */}
- {allPermissions && }
+
{
isError={isError}
/>
+
)
}
diff --git a/src/Redux/Service/manage.user.ts b/src/Redux/Service/manage.user.ts
index 45051e1..68bba4b 100644
--- a/src/Redux/Service/manage.user.ts
+++ b/src/Redux/Service/manage.user.ts
@@ -10,11 +10,11 @@ export interface UserData {
gender: string;
date_of_birth: string;
is_active: boolean;
- principal_type:{
+ principal_type: {
id: number;
principal_type_title: string;
},
- principle_language_linkss:{
+ principle_language_linkss: {
id: number;
language_xid: number;
iam_principal_xid: number;
@@ -103,13 +103,13 @@ export const registerUser = createApi({
}),
}),
- // deleteFaqPost: builder.mutation<{ status: string; message: string }, { id: number }>({
- // query: ({ id }) => ({
- // url: `/faq-delete`,
- // method: "POST",
- // body: { id },
- // }),
- // }),
+ deleteUser: builder.mutation({
+ query: ({ id }) => ({
+ url: `/manage-user-delete`,
+ method: "POST",
+ body: { id },
+ }),
+ }),
}),
});
@@ -121,5 +121,5 @@ export const {
useUserToggleMutation,
useGetDeactivateUserQuery,
useUserDeactivateToggleMutation,
- // useDeleteFaqPostMutation
+ useDeleteUserMutation
} = registerUser;
\ No newline at end of file
diff --git a/src/components/DataTable.tsx b/src/components/DataTable.tsx
index e39d786..ba3951c 100644
--- a/src/components/DataTable.tsx
+++ b/src/components/DataTable.tsx
@@ -122,6 +122,14 @@ const DataTable: React.FC = ({
) : (
+ {data.length === 0 && (
+
+
+
+ No records found — they’ll appear here if available.
+
+
+ )}
{data.map((item: any, index) => (