diff --git a/src/Pages/Banners/BannerCommunity/AddBanner.jsx b/src/Components/Banner/AddBanner.jsx
similarity index 63%
rename from src/Pages/Banners/BannerCommunity/AddBanner.jsx
rename to src/Components/Banner/AddBanner.jsx
index e21f13c..9c015bc 100644
--- a/src/Pages/Banners/BannerCommunity/AddBanner.jsx
+++ b/src/Components/Banner/AddBanner.jsx
@@ -1,123 +1,124 @@
import {
- Box,
- FormControl,
- FormHelperText,
- FormLabel,
- Input,
- Text,
- Stack,
- Textarea,
- Heading,
- Button,
- useToast,
- Divider,
- Image,
- } from "@chakra-ui/react";
- import React, { useState } from "react";
- import fallbackImage from "../../../assets/ultp-fallback-img.webp";
- import { TiWarning } from "react-icons/ti";
-
- import { motion } from "framer-motion";
- import { OPACITY_ON_LOAD } from "../../../Layout/animations";
-
- import { yupResolver } from "@hookform/resolvers/yup";
- import { useForm } from "react-hook-form";
- import { addCommunityBannerSchema, addCommunitySchema } from "../../../Validations/Validations";
- import {
- useCreateCommunityBannerMutation,
- useCreateCommunityMutation,
- useGetCommunityQuery,
- } from "../../../Services/api.service";
- import { useNavigate } from "react-router-dom";
- import Loader01 from "../../../Components/Loaders/Loader01";
-
- const AddBanner = () => {
- const toast = useToast();
- const navigate = useNavigate();
- const getCommunityQuery = useGetCommunityQuery();
- const [createCommunityBannerData] = useCreateCommunityBannerMutation(); // Invoke the hook to get the mutation function
- const [isLoading, setIsLoading] = useState(false);
- const [selectedImage, setSelectedImage] = useState(fallbackImage);
-
- const {
- register,
- handleSubmit,
- reset,
- formState: { errors },
- } = useForm({
- resolver: yupResolver(addCommunityBannerSchema),
- });
-
- const onSubmit = async (data) => {
- console.log(data);
- try {
- setIsLoading(true);
- const formData = new FormData();
- formData.append("heading", data.heading);
- formData.append("sub_heading", data.sub_heading);
- formData.append("CTO_button_link", data.CTO_button_link);
- formData.append("CTO_button_title", data.CTO_button_title);
- if (data.banner_image[0]) {
- formData.append("banner_image", data.banner_image[0]);
- }
- // Trigger the mutation
- createCommunityBannerData(formData)
- .then((response) => {
- // Handle the response here
- console.log("Mutation response:", response?.data?.statusCode);
- console.log("Mutation response:", response?.data?.message);
-
- if (response?.data?.statusCode === 200) {
- setIsLoading(false);
- toast({
- title: response?.data?.message,
- status: "success",
- isClosable: true,
- });
- reset();
- navigate("/banner/banner-community");
- }else if(response?.data?.statusCode === 500){
- setIsLoading(false);
- toast({
- title: response?.data?.message,
- status: "success",
- isClosable: true,
- });
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+} from "@chakra-ui/react";
+import React, { useState } from "react";
+import fallbackImage from "../../assets/ultp-fallback-img.webp";
+import { TiWarning } from "react-icons/ti";
- }
- })
- .catch((error) => {
- // Handle errors
- console.error("Error creating community:", error);
+import { motion } from "framer-motion";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import {
+ addCommunityBannerSchema,
+ addCommunitySchema,
+} from "../../Validations/Validations";
+import { useNavigate } from "react-router-dom";
+import Loader01 from "../../Components/Loaders/Loader01";
+import Header from "../Header";
+
+const AddBanner = ({ createApi, navigateLink, title }) => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+ const [largeImageData, setLargeImageData] = useState(null);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addCommunityBannerSchema),
+ });
+
+ const onSubmit = async (data) => {
+ console.log(data);
+ try {
+ setIsLoading(true);
+ const formData = new FormData();
+ formData.append("heading", data.heading);
+ formData.append("sub_heading", data.sub_heading);
+ formData.append("CTO_button_link", data.CTO_button_link);
+ formData.append("CTO_button_title", data.CTO_button_title);
+ if (data.banner_image[0]) {
+ formData.append("banner_image", data.banner_image[0]);
+ }
+ // Trigger the mutation
+ createApi(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
setIsLoading(false);
- // Handle error notification if needed
- });
- } catch (error) {
- // Handle errors
- console.error("Error creating community:", error);
- setIsLoading(false);
- }
- };
-
- const handleImageChange = (e) => {
- const file = e.target.files[0];
- if (file) {
- const reader = new FileReader();
- reader.onloadend = () => {
- setSelectedImage(reader.result);
- };
- reader.readAsDataURL(file);
- }
- };
-
- return (
-
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate(navigateLink);
+ } else if (response?.data?.statusCode === 500) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ setLargeImageData(file);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+
Banner Info
@@ -125,26 +126,40 @@ import {
Select the platform for which you need to create this campaign.
-
+
-
+
Banner Image
Below is the profile that will be displayed on the community page.
-
-
-
+
+
+ <>
+
+ {selectedImage === fallbackImage || largeImageData === null ? (
+ ""
+ ) : (
+
+ {largeImageData?.name}
+
+ {(largeImageData?.size / (1024 * 1024)).toFixed(2)} mb
+
+
+ )}
+ >
-
+
{errors.name && (
- {" "}
- {errors.heading.message}
+ {errors.heading.message}
)}
-
+
Sub Heading
@@ -199,7 +213,7 @@ import {
)}
-
+
Button title
@@ -214,7 +228,7 @@ import {
Maximum characters must be 100 characters.
-
+
{errors.CTO_button_title && (
{" "}
@@ -222,10 +236,10 @@ import {
)}
-
+
- Button link
+ Button link
{errors.CTO_button_link && (
- {errors.CTO_button_link.message}
+ {" "}
+ {errors.CTO_button_link.message}
)}
-
+
Banner image
{/* */}
-
+
-
+
{errors.banner_image && (
{" "}
@@ -334,17 +349,18 @@ import {
Maximum limit of image is 5mb.
-
+
}
- color={'whitesmoke'}
- backgroundColor={'purple.700'}
+ color={"whitesmoke"}
+ backgroundColor={"purple.700"}
_hover={{
backgroundColor: "purple.800",
}}
type="submit"
+ rounded={"sm"}
size="sm"
>
Create
@@ -352,8 +368,8 @@ import {
- );
- };
-
- export default AddBanner;
-
\ No newline at end of file
+
+ );
+};
+
+export default AddBanner;
diff --git a/src/Pages/Banners/Banner.jsx b/src/Pages/Banners/Banner.jsx
index 002584b..1f52165 100644
--- a/src/Pages/Banners/Banner.jsx
+++ b/src/Pages/Banners/Banner.jsx
@@ -1,68 +1,65 @@
-import { Box, Button, Divider, HStack, Skeleton, Text } from "@chakra-ui/react";
+import { Box } from "@chakra-ui/react";
import React from "react";
import { OPACITY_ON_LOAD } from "../../Layout/animations";
-import { Link } from "react-router-dom";
-import { AddIcon, ArrowForwardIcon } from "@chakra-ui/icons";
-import { useGetBuildBannerQuery, useGetCommunityBannerQuery, useGetLearnBannerQuery, useGetNewsBannerQuery } from "../../Services/api.service";
-import CommunityBannerCard from "../Community/CommunityBannerCard";
+import {
+ useGetBuildBannerQuery,
+ useGetCommunityBannerQuery,
+ useGetLearnBannerQuery,
+ useGetNewsBannerQuery,
+} from "../../Services/api.service";
import Header from "../../Components/Header";
import BannerStack from "../../Components/BannerStack";
const Banner = () => {
const communityBanner = useGetCommunityBannerQuery();
const learnBanner = useGetLearnBannerQuery();
- const buildBanner = useGetBuildBannerQuery()
- const newsBanner = useGetNewsBannerQuery()
+ const buildBanner = useGetBuildBannerQuery();
+ const newsBanner = useGetNewsBannerQuery();
return (
-
+
item?.status === true)}
- viewBannerLink={'/banner/banner-community/view'}
+ stackTitle={"Community banner"}
+ viewAllLink={"/banner/banner-community"}
+ bannerIsLoading={communityBanner?.isLoading}
+ bannerArray={communityBanner?.data?.data?.rows?.slice(0, 3)}
+ // bannerArray={communityBanner?.data?.data?.rows?.filter(item => item?.status === true)}
+ viewBannerLink={"/banner/banner-community/view"}
/>
-
+
-
+
-
+
+
);
};
export default Banner;
-
-
-
-
-
-
-
-
diff --git a/src/Pages/Banners/BannerBuild/BannerBuild.jsx b/src/Pages/Banners/BannerBuild/BannerBuild.jsx
new file mode 100644
index 0000000..2f1faba
--- /dev/null
+++ b/src/Pages/Banners/BannerBuild/BannerBuild.jsx
@@ -0,0 +1,25 @@
+import React from "react";
+import {
+ useDeleteBuildBannerMutation,
+ useGetBuildBannerQuery,
+ useUpdateBuildBannerStatusMutation,
+} from "../../../Services/api.service";
+import BannerTable from "../../../Components/Banner/BannerTable";
+
+const BannerBuild = () => {
+ const buildBanner = useGetBuildBannerQuery();
+ const [deleteBuildBanner] = useDeleteBuildBannerMutation();
+ const [updateLearnBuildStatus] = useUpdateBuildBannerStatusMutation();
+
+ return (
+
+ );
+};
+
+export default BannerBuild;
diff --git a/src/Pages/Banners/BannerBuild/BuildBannerAdd.jsx b/src/Pages/Banners/BannerBuild/BuildBannerAdd.jsx
new file mode 100644
index 0000000..1b504f3
--- /dev/null
+++ b/src/Pages/Banners/BannerBuild/BuildBannerAdd.jsx
@@ -0,0 +1,18 @@
+import AddBanner from "../../../Components/Banner/AddBanner";
+import {
+ useCreateBuildBannerMutation,
+ useCreateLearnBannerMutation,
+} from "../../../Services/api.service";
+
+const BuildBannerAdd = () => {
+ const [createBuildBannerData] = useCreateBuildBannerMutation();
+ return (
+
+ );
+};
+
+export default BuildBannerAdd;
diff --git a/src/Pages/Banners/BannerCommunity/BannerCommunityAdd.jsx b/src/Pages/Banners/BannerCommunity/BannerCommunityAdd.jsx
new file mode 100644
index 0000000..852884a
--- /dev/null
+++ b/src/Pages/Banners/BannerCommunity/BannerCommunityAdd.jsx
@@ -0,0 +1,16 @@
+import { useCreateCommunityBannerMutation } from "../../../Services/api.service";
+import AddBanner from "../../../Components/Banner/AddBanner";
+
+const BannerCommunityAdd = () => {
+ const [createCommunityBannerData] = useCreateCommunityBannerMutation();
+
+ return (
+
+ );
+};
+
+export default BannerCommunityAdd;
diff --git a/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx b/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx
deleted file mode 100644
index 0469ee7..0000000
--- a/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx
+++ /dev/null
@@ -1,359 +0,0 @@
-import {
- Box,
- FormControl,
- FormHelperText,
- FormLabel,
- Input,
- Text,
- Stack,
- Textarea,
- Heading,
- Button,
- useToast,
- Divider,
- Image,
-} from "@chakra-ui/react";
-import React, { useState } from "react";
-import fallbackImage from "../../../assets/ultp-fallback-img.webp";
-import { TiWarning } from "react-icons/ti";
-
-import { motion } from "framer-motion";
-import { OPACITY_ON_LOAD } from "../../../Layout/animations";
-
-import { yupResolver } from "@hookform/resolvers/yup";
-import { useForm } from "react-hook-form";
-import { addCommunityBannerSchema, addCommunitySchema } from "../../../Validations/Validations";
-import {
- useCreateCommunityBannerMutation,
- useCreateCommunityMutation,
- useCreateLearnBannerMutation,
- useGetCommunityQuery,
-} from "../../../Services/api.service";
-import { useNavigate } from "react-router-dom";
-import Loader01 from "../../../Components/Loaders/Loader01";
-
-const AddLearnBanner = () => {
- const toast = useToast();
- const navigate = useNavigate();
- const getCommunityQuery = useGetCommunityQuery();
- const [createLearnBannerData] = useCreateLearnBannerMutation(); // Invoke the hook to get the mutation function
- const [isLoading, setIsLoading] = useState(false);
- const [selectedImage, setSelectedImage] = useState(fallbackImage);
-
- const {
- register,
- handleSubmit,
- reset,
- formState: { errors },
- } = useForm({
- resolver: yupResolver(addCommunityBannerSchema),
- });
-
- const onSubmit = async (data) => {
- console.log(data);
- try {
- setIsLoading(true);
- const formData = new FormData();
- formData.append("heading", data.heading);
- formData.append("sub_heading", data.sub_heading);
- formData.append("CTO_button_link", data.CTO_button_link);
- formData.append("CTO_button_title", data.CTO_button_title);
- if (data.banner_image[0]) {
- formData.append("banner_image", data.banner_image[0]);
- }
- // Trigger the mutation
- createLearnBannerData(formData)
- .then((response) => {
- // Handle the response here
- console.log("Mutation response:", response?.data?.statusCode);
- console.log("Mutation response:", response?.data?.message);
-
- if (response?.data?.statusCode === 200) {
- setIsLoading(false);
- toast({
- title: response?.data?.message,
- status: "success",
- isClosable: true,
- });
- reset();
- navigate("/banner/learn");
- }else if(response?.data?.statusCode === 500){
- setIsLoading(false);
- toast({
- title: response?.data?.message,
- status: "success",
- isClosable: true,
- });
-
- }
- })
- .catch((error) => {
- // Handle errors
- console.error("Error creating community:", error);
- setIsLoading(false);
- // Handle error notification if needed
- });
- } catch (error) {
- // Handle errors
- console.error("Error creating community:", error);
- setIsLoading(false);
- }
- };
-
- const handleImageChange = (e) => {
- const file = e.target.files[0];
- if (file) {
- const reader = new FileReader();
- reader.onloadend = () => {
- setSelectedImage(reader.result);
- };
- reader.readAsDataURL(file);
- }
- };
-
- return (
-
-
-
- Banner Info
-
-
- Select the platform for which you need to create this campaign.
-
-
-
-
-
- Banner Image
-
-
- Below is the profile that will be displayed on the community page.
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default AddLearnBanner;
diff --git a/src/Pages/Banners/BannerLearn/BannerLearn.jsx b/src/Pages/Banners/BannerLearn/BannerLearn.jsx
index d1c1fee..0343e47 100644
--- a/src/Pages/Banners/BannerLearn/BannerLearn.jsx
+++ b/src/Pages/Banners/BannerLearn/BannerLearn.jsx
@@ -1,66 +1,10 @@
-import React, { useRef, useState } from "react";
+import React from "react";
import {
- Avatar,
- Box,
- Link,
- Tag,
- Text,
- WrapItem,
- Tooltip,
- Divider,
- Stack,
- HStack,
- Input,
- Button,
- Select,
- Image,
- Menu,
- MenuButton,
- MenuList,
- MenuItem,
- Switch,
- Portal,
- useDisclosure,
- AlertDialog,
- AlertDialogOverlay,
- AlertDialogContent,
- AlertDialogHeader,
- AlertDialogCloseButton,
- AlertDialogBody,
- AlertDialogFooter,
- useToast,
- Skeleton,
- VStack,
-} from "@chakra-ui/react";
-import { GrAdd } from "react-icons/gr";
-import { AddIcon, ChevronDownIcon, HamburgerIcon } from "@chakra-ui/icons";
-import DataTable from "../../../Components/DataTable/DataTable";
-import CommunityBanner from "../../../Components/CommunityBanner";
-import { OPACITY_ON_LOAD } from "../../../Layout/animations";
-import { v4 as uuidv4 } from "uuid";
-import { Link as RouterLink } from "react-router-dom";
-import {
- useDeleteCommunityBannerMutation,
- useDeleteCommunityMutation,
useDeleteLearnBannerMutation,
- useGetCommunityBannerQuery,
- useGetCommunityByIdQuery,
- useGetCommunityQuery,
- useGetLearnBannerByIdQuery,
useGetLearnBannerQuery,
- useUpdateCommunityBannerStatusMutation,
- useUpdateCommunityStatusMutation,
useUpdateLearnBannerStatusMutation,
} from "../../../Services/api.service";
-import BannerTable from "../../../Components/Banner/BannerTable"
-import { HiDotsVertical } from "react-icons/hi";
-import TimeCalculator from "../../../Components/Functions/TimeCalculator";
-import { formatDate } from "../../../Components/Functions/UTCConvertor";
-import CustomAlertDialog from "../../../Components/CustomAlertDialog";
-import WebButton from "../../../Components/WebButton";
-import CommunityCardDisplay from "../../Community/CommunityCardDisplay";
-import CommunityBannerCard from "../../Community/CommunityBannerCard";
-import Header from "../../../Components/Header";
+import BannerTable from "../../../Components/Banner/BannerTable";
const BannerLearn = () => {
const learnBanner = useGetLearnBannerQuery();
diff --git a/src/Pages/Banners/BannerLearn/LearnBannerAdd.jsx b/src/Pages/Banners/BannerLearn/LearnBannerAdd.jsx
new file mode 100644
index 0000000..84ff331
--- /dev/null
+++ b/src/Pages/Banners/BannerLearn/LearnBannerAdd.jsx
@@ -0,0 +1,15 @@
+import AddBanner from "../../../Components/Banner/AddBanner";
+import { useCreateLearnBannerMutation } from "../../../Services/api.service";
+
+const LearnBannerAdd = () => {
+ const [createLearnBannerData] = useCreateLearnBannerMutation();
+ return (
+
+ );
+};
+
+export default LearnBannerAdd;
diff --git a/src/Pages/Banners/BannerNews/BannerNews.jsx b/src/Pages/Banners/BannerNews/BannerNews.jsx
new file mode 100644
index 0000000..5768538
--- /dev/null
+++ b/src/Pages/Banners/BannerNews/BannerNews.jsx
@@ -0,0 +1,31 @@
+import React from "react";
+import {
+ useDeleteBuildBannerMutation,
+ useDeleteLearnBannerMutation,
+ useDeleteNewsBannerMutation,
+ useGetBuildBannerQuery,
+ useGetLearnBannerQuery,
+ useGetNewsBannerQuery,
+ useUpdateBuildBannerStatusMutation,
+ useUpdateLearnBannerStatusMutation,
+ useUpdateNewsBannerStatusMutation,
+} from "../../../Services/api.service";
+import BannerTable from "../../../Components/Banner/BannerTable";
+
+const BannerNews = () => {
+ const newsBanner = useGetNewsBannerQuery();
+ const [deleteNewsBanner] = useDeleteNewsBannerMutation();
+ const [updateNewsBuildStatus] = useUpdateNewsBannerStatusMutation();
+
+ return (
+
+ );
+};
+
+export default BannerNews;
diff --git a/src/Pages/Banners/BannersNew/NewsBannerAdd.jsx b/src/Pages/Banners/BannersNew/NewsBannerAdd.jsx
new file mode 100644
index 0000000..fee4f25
--- /dev/null
+++ b/src/Pages/Banners/BannersNew/NewsBannerAdd.jsx
@@ -0,0 +1,15 @@
+import AddBanner from "../../../Components/Banner/AddBanner";
+import { useCreateNewsBannerMutation } from "../../../Services/api.service";
+
+const NewsBannerAdd = () => {
+ const [createNewsBannerData] = useCreateNewsBannerMutation();
+ return (
+
+ );
+};
+
+export default NewsBannerAdd;
diff --git a/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx b/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx
index 4ec8ad0..324c4f2 100644
--- a/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx
+++ b/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx
@@ -144,182 +144,170 @@ const AddBlogsAndArticles = () => {
{...OPACITY_ON_LOAD}
overflowY={"scroll"}
height={"100vh"}
- display={'flex'}
- flexDirection={'column'}
+ display={"flex"}
+ flexDirection={"column"}
>
-