import React, { useState, useEffect } from "react"; import axios from "axios"; import { isAutheticated } from "src/auth"; import { Button, Box, IconButton, Modal, Pagination, TextField, Typography, } from "@mui/material"; import CloseIcon from "@mui/icons-material/Close"; import { ClipLoader } from "react-spinners"; import swal from "sweetalert"; import CloudUploadIcon from "@mui/icons-material/CloudUpload"; import DeleteSharpIcon from "@mui/icons-material/DeleteSharp"; const style = { position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", width: 400, bgcolor: "background.paper", borderRadius: "0.5rem", boxShadow: 24, width: "500px", }; const Banners = () => { const token = isAutheticated(); const [loading, setLoading] = useState(true); const [updating, setUpdating] = useState(true); // for loading state // const [isUpdate, setIsUpdate] = useState(false); // for edit state const [saveLoding, setSaveLoading] = useState(true); const [edit, setEdit] = useState(false); const [bannerName, setBannerName] = useState(""); const [bannerImage, setBannerImage] = useState(""); const [error, setError] = useState(""); const [bannerId, setBannerId] = useState(""); const [banner, setBanner] = useState([]); const [itemPerPage, setItemPerPage] = useState(10); const [page, setPage] = useState(1); const [open, setOpen] = useState(false); const [olderBannerName, setOlderBaannerName] = useState(""); const [olderImage, setOlderImage] = useState(""); const handleOpen = () => setOpen(true); const handleClose = () => { setOpen(false); // setUpdating(false); setEdit(false); setBannerName(""); setBannerId(""); setOlderImage(""); setBannerImage(""); }; const getBanner = async () => { try { const response = await axios.get("/api/loginImage/getImage", { // headers: { // Authorization: `Bearer ${token}`, // }, }); if (response.status === 200) { // console.log(response); setBanner(response?.data?.image); setLoading(false); } } catch (error) { swal({ title: error, text: " please login to access the resource ", icon: "error", button: "Retry", dangerMode: true, }); } }; useEffect(() => { getBanner(); }, []); // }, [token, banner]); const handleEditClick = (_id, bannerImage) => { setOpen(true); console.log("bannerImage", bannerImage); setOlderImage(bannerImage); setBannerId(_id); setOlderBaannerName(bannerName); setEdit(true); // setUpdating(false); }; // const bannerNamesArray = []; // const setBannerNamesArray = () => { // banner && // banner.map((banner) => { // bannerNamesArray.push(banner.bannerName.toLowerCase()); // }); // }; // setBannerNamesArray(); const handleUpdate = () => { // const filteredArrayNames = bannerNamesArray.filter( // (item) => item !== olderBannerName.toLowerCase() // ); // console.log(filteredArrayNames, "filter"); // const bannerExits = filteredArrayNames.includes(bannerName.toLowerCase()); // if (bannerExits) { // swal({ // title: "Warning", // text: "Banner already exists ", // icon: "error", // button: "Retry", // dangerMode: true, // }); // return; // } if ((!bannerImage && !olderImage)) { swal({ title: "Warning", text: "Please fill all the required fields!", icon: "error", button: "Retry", dangerMode: true, }); return; } setUpdating(false); const formData = new FormData(); formData.append("bannerImage", bannerImage); formData.append("olderImage", JSON.stringify(olderImage)); axios .patch(`/api/loginImage/update/${bannerId}`, formData, { headers: { Authorization: `Bearer ${token}`, }, }) .then((res) => { // setUpdating(true); // setIsUpdate(false); handleClose(); setBannerId(""); setBannerName(""); setBannerImage(""); setOlderImage(""); setUpdating(true); setEdit(false); swal({ title: "Congratulations!!", text: "The banner was updated successfully!", icon: "success", button: "OK", }); // getCategories(); // Refresh the category list after updating }) .catch((err) => { // console.log(err); swal({ title: "Sorry, please try again", text: err, icon: "error", button: "Retry", dangerMode: true, }); setUpdating(true); }); }; const handleDelete = (_id) => { swal({ title: "Are you sure?", icon: "error", buttons: { Yes: { text: "Yes", value: true }, Cancel: { text: "Cancel", value: "cancel" }, }, }).then((value) => { if (value === true) { axios .delete(`/api/loginImage/delete/${_id}`, { headers: { Authorization: `Bearer ${token}`, }, }) .then((res) => { swal({ title: "Congratulations!!", text: "The banner was deleted successfully!", icon: "success", button: "OK", }); // getCategories(); // Refresh the category list after deleting }) .catch((err) => { swal({ title: "", text: "Something went wrong!", icon: "error", button: "Retry", dangerMode: true, }); }); } }); }; const handleSaveBanner = async () => { // const bannerExits = bannerNamesArray.includes(bannerName.toLowerCase()); // if (bannerExits) { // swal({ // title: "Warning", // text: "Banner Already exits.", // icon: "error", // button: "Retry", // dangerMode: true, // }); // return; // } if (!bannerImage) { swal({ title: "Warning", text: "Please fill all the required fields!", icon: "error", button: "Retry", dangerMode: true, }); return; } setSaveLoading(false); setLoading(true); const formData = new FormData(); formData.append("bannerName", bannerName); formData.append("bannerImage", bannerImage); axios .post("/api/loginImage/add", formData, { headers: { Authorization: `Bearer ${token}`, "Content-Type": "multipart/formdata", }, }) .then((response) => { if (response.status === 201) { setOpen(false); setLoading(false); setSaveLoading(true); setBannerName(""); setBannerImage(""); setOlderImage(""); swal({ title: "Added", text: "New Banner added successfully!", icon: "success", button: "OK", }); // getCategories(); // Refresh the category list after adding } }) .catch((error) => { setSaveLoading(true); swal({ title: error, text: "something went wrong", icon: "error", button: "Retry", dangerMode: true, }); }); }; // const getPageCount = () => { // return Math.max(1, Math.ceil(banner?.length / itemPerPage)); // }; const handleFileChange = (e) => { const files = e.target.files[0]; // Check file types and append to selectedFiles const allowedTypes = ["image/jpeg", "image/png", "image/jpg"]; if (allowedTypes.includes(files.type)) { setBannerImage(files); } }; const handeldeleteImage = () => { setBannerImage(""); }; return (
Login Image
{/* */} {/* Banner Name handleClose()}> */} {/*
*/} {/* setBannerName( e.target.value.charAt(0).toUpperCase() + e.target.value.slice(1) ) } /> */} {/* {bannerName ? ( <> {25 - bannerName.length} characters left ) : ( <> )} */} {bannerImage && ( bannerImage handeldeleteImage()} fontSize="small" sx={{ color: "white", position: "absolute", cursor: "pointer", padding: "0.2rem", background: "black", borderRadius: "50%", }} /> )} {olderImage && ( bannerImage setOlderImage("")} fontSize="small" sx={{ color: "white", position: "absolute", cursor: "pointer", padding: "0.2rem", background: "black", borderRadius: "50%", }} /> )} {error &&

{error}

}

Upload jpg, jpeg and png only*

{!edit && ( )} {edit && ( )}
{/*
*/}
{!loading && banner?.length === 0 && ( )} {loading ? ( ) : ( banner && banner .map((item, i) => ( {/* */} )) )}
Image Action
Loading...
{/* {item?.image} */}
{ }
{item.bannerName}
{/* */}
{/*
setPage(value)} />
*/}
); }; export default Banners;