163 lines
4.8 KiB
TypeScript
163 lines
4.8 KiB
TypeScript
import { Box, HStack, Image, Input, Text } from "@chakra-ui/react";
|
|
import MainFrame from "../../../components/MainFrame"
|
|
import { InputGroup } from "../../../components/ui/input-group";
|
|
import { LuSearch } from "react-icons/lu";
|
|
import DataTable from "../../../components/DataTable";
|
|
import { Switch } from "../../../components/ui/switch";
|
|
// import img from "../../../assets/waterfall.jpg"
|
|
// import Templateimg from "../../../assets/Template_img.png"
|
|
import TemplateAddModel from "./TemplateAddModel";
|
|
import EditTemplateModel from "./EditTemplateModel";
|
|
import { Template, useGetTemplateMasterQuery, useTemplateMasterToggleMutation } from "../../../Redux/Service/template.master.service";
|
|
import { useEffect, useState } from "react";
|
|
|
|
const APIURL = import.meta.env.VITE_IMG_TEMPLATES
|
|
|
|
// table data
|
|
|
|
const tableHeadRow = [
|
|
"Sr. No",
|
|
"Title",
|
|
"Images",
|
|
"Action"
|
|
];
|
|
|
|
// const managepost: any[] = [
|
|
// ...Array.from({ length: 12 }, (_, i) => ({
|
|
// "Sr. No": i + 1,
|
|
// "Title": "Lorem Ipsum",
|
|
// "Images": (
|
|
// // <Image w={50} src={img} />
|
|
// <HStack >
|
|
// <Image rounded={'lg'} w={100} h={50} src={img} />
|
|
// <Image rounded={'lg'} w={100} h={50} src={Templateimg} />
|
|
// </HStack>
|
|
// ),
|
|
|
|
// "Action": (
|
|
// <HStack justifyContent="center">
|
|
// <EditTemplateModel />
|
|
// <Box>
|
|
// <Switch colorPalette={'teal'} size={"xs"} />
|
|
// </Box>
|
|
// </HStack>
|
|
// ),
|
|
// })),
|
|
// ];
|
|
|
|
const TemplateMaster = () => {
|
|
const { data, refetch } = useGetTemplateMasterQuery()
|
|
const [localData, setLocalData] = useState<any[]>([]);
|
|
const [templateMasterToggle] = useTemplateMasterToggleMutation()
|
|
console.log('DATA', data?.data.data);
|
|
|
|
useEffect(() => {
|
|
if (data?.data?.data) {
|
|
setLocalData(data?.data.data);
|
|
}
|
|
}, [data]);
|
|
|
|
const handleToggle = async (agencyId: string, currentStatus: number) => {
|
|
const newStatus = currentStatus ? 0 : 1;
|
|
setLocalData((prevData) =>
|
|
prevData.map((agency) =>
|
|
agency.id === agencyId ? { ...agency, is_active: newStatus } : agency
|
|
)
|
|
);
|
|
try {
|
|
await templateMasterToggle({ 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 managepost = localData?.map((agency: Template, index: number) => ({
|
|
'id': agency.id,
|
|
"Sr. No": index + 1,
|
|
"Title": agency.post_template_translate.length > 0
|
|
? agency.post_template_translate[0].title
|
|
: "N/A",
|
|
"Images": (
|
|
// <Image w={50} src={img} />
|
|
<HStack >
|
|
{agency.post_template_image.map((img) => (
|
|
<Image rounded={'lg'} w={100} h={50} src={`${APIURL}${img.image_name}`} />
|
|
))}
|
|
|
|
{/* <Image rounded={'lg'} w={100} h={50} src={Templateimg} /> */}
|
|
</HStack>
|
|
),
|
|
|
|
"Action": (
|
|
<HStack justifyContent="center">
|
|
<EditTemplateModel id={agency.id} localData={localData} />
|
|
<Box>
|
|
<Switch
|
|
colorPalette={'teal'}
|
|
size={"xs"}
|
|
onChange={() => handleToggle(agency.id.toString(), Number(agency.is_active ?? 0))}
|
|
checked={Boolean(Number(agency.is_active))}
|
|
/>
|
|
</Box>
|
|
</HStack>
|
|
),
|
|
}));
|
|
|
|
return (
|
|
|
|
<MainFrame>
|
|
<Box>
|
|
<HStack
|
|
w={"100%"}
|
|
justifyContent={"space-between"}
|
|
mb={4}
|
|
py={0}
|
|
px={3}
|
|
>
|
|
<Text as={"span"} fontSize={"sm"} fontWeight={500} color={"#000"}>
|
|
Template Master
|
|
</Text>
|
|
|
|
<HStack >
|
|
<InputGroup
|
|
startElement={
|
|
<LuSearch fontSize={"xs"} style={{ position: 'relative', left: '10px' }} />
|
|
}
|
|
color={"#000"}
|
|
>
|
|
<Input
|
|
p={3}
|
|
w={300}
|
|
bg={"#fff"}
|
|
colorPalette={"blue"}
|
|
_focus={{ border: "1px solid #02A0A0" }}
|
|
rounded={"md"}
|
|
size={"xs"}
|
|
fontSize={"sm"}
|
|
placeholder="Search..."
|
|
bgColor={'#EEEEEE'}
|
|
ps={8}
|
|
/>
|
|
</InputGroup>
|
|
{/* <Button bgColor={'#EEEEEE'} pl={3} pr={3}><IoMdAdd /> <Text>Add</Text></Button> */}
|
|
{localData?.map((item: any) => (
|
|
<TemplateAddModel id={item.id} />
|
|
))}
|
|
</HStack>
|
|
</HStack>
|
|
<DataTable
|
|
sortableColumns={["Name", "Registration Date "]}
|
|
tableHeadRow={tableHeadRow}
|
|
data={managepost}
|
|
/>
|
|
</Box>
|
|
</MainFrame>
|
|
)
|
|
}
|
|
export default TemplateMaster |