PK ! A7��n import React, { useState, useEffect } from "react";
import tw from "tailwind-styled-components";
import { Link, useParams, useNavigate } from "react-router-dom";
import Images from "../Images";
import { useMutation, useQuery } from "react-query";
import axios from "axios";
import Config from "../Config";
import Loading from "../Components/Loading";
import Table from "../Components/Api/Table";
import {
Page,
BoxContainer,
BoxTitle,
Underline,
ErrorText,
} from "../Components/Styles/PageStyles";
import NotFoundModel from "../Components/NotFoundModel";
import {
SmallBtn,
Label,
FieldWrapper,
InputGroup,
} from "../Components/Styles/InputStyles";
import DeleteModel from "../Components/Api/DeleteModel";
import { useSelector } from "react-redux";
import { ForUs } from "../Config";
import EditDeviceModel from "../Components/Api/EditDeviceModel";
import SingleEntry from "../Components/Api/SingleEntry";
import { MdAdd } from "react-icons/md";
import { HiUpload } from "react-icons/hi";
import { toast } from "react-toastify";
import ViewModel from "../Components/Api/ViewModel";
import MenuItem from "@mui/material/MenuItem";
import Select from "@mui/material/Select";
import { BsSearch } from "react-icons/bs";
import { BiPaperPlane } from "react-icons/bi";
import moment from "moment";
import { Field, Form, Formik } from "formik";
// import MenuItem from "@mui/material/MenuItem";
// import Select from "@mui/material/Select";
const Api = () => {
const user = useSelector((state) => state.UserReducer.user);
const { type } = useParams();
const [activeTab, setActiveTab] = useState(1);
const [data, setData] = useState([]);
const [searchType, setSearchType] = useState("SENDER_ID");
const [searchValue, setSearchValue] = useState("");
const [filteredData, setFilteredData] = useState([]);
const [openUploadModel, setOpenUploadModel] = useState(false);
const [openViewModel, setOpenViewModel] = useState(false);
const [openDeleteModel, setOpenDeleteModel] = useState(false);
const [openEditModel, setOpenEditModel] = useState(false);
const [deviceId, setDeviceId] = useState("");
const [selectedItem, setSelectedItem] = useState(null);
const [gotInitialResp, setGotInitialResp] = useState(false);
const [editDevice, setEditDevice] = useState(false);
const [startDate, setStartDate] = useState(
moment(new Date()).subtract(7, "days").format("YYYY-MM-DD")
);
const [endDate, setEndDate] = useState(
moment(new Date()).format("YYYY-MM-DD")
);
useEffect(() => {
if (type == "sms") setActiveTab(1);
else if (type == "voice") setActiveTab(2);
else setActiveTab(3);
}, [type]);
// ----- Getting Initial Data ------
const getCampaignsFunction = async (values) =>
await axios.post(
`${Config.nodeApiUrl}/customer/getQuickMessages`,
values,
Config.AxiosConfig
);
const getCampaignsSuccess = (data) => {
setData(data?.data || []);
setGotInitialResp(true);
};
const getCampaignsError = (data) => {
setGotInitialResp(true);
};
const {
isLoading,
isError,
mutate: getCampaignsMutate,
} = useMutation(getCampaignsFunction, {
onSuccess: getCampaignsSuccess,
onError: getCampaignsError,
});
useEffect(() => {
const handler = setTimeout(() => {
getCampaignsMutate({
searchValue: searchValue,
searchType: searchType,
type: activeTab,
startDate,
endDate,
});
}, 500);
return () => {
clearTimeout(handler);
};
}, [searchValue, startDate, endDate]);
const initialValues = {
startDate: moment(new Date()).subtract(7, "days").format("YYYY-MM-DD"),
endDate: moment(new Date()).format("YYYY-MM-DD"),
};
const ChangeHandler = (e) => {
setSearchValue(e.target.value);
};
const navigate = useNavigate();
const { id } = useParams();
useEffect(() => {
const tempData = data;
if (activeTab == 1) setFilteredData(tempData?.sms);
else if (activeTab == 2) setFilteredData(tempData?.voice);
else setFilteredData(tempData?.email);
}, [activeTab, data]);
const changeActiveTab = (type) => {
setActiveTab(type);
setSearchValue("");
};
const submitHandler = (values) => {
setStartDate(moment(values.startDate).format("YYYY-MM-DD"));
setEndDate(moment(values.endDate).format("YYYY-MM-DD"));
};
return (
Apis
{activeTab != 2 && (
)}
{/*
*/}
{/* */}
{/*
*/}
{/* changeActiveTab(1)}>
SMS
changeActiveTab(3)}>
Email
changeActiveTab(2)}>
Voice
*/}
{/* */}
{/*
*/}
{openUploadModel && (
)}
{openViewModel && (
)}
{!isLoading && gotInitialResp && (
)}
{(isLoading || !gotInitialResp) && }
{(isError || data?.sms?.length == 0) &&
!isLoading &&
gotInitialResp && }
);
};
const Uploader = ({
setOpenUploadModel,
setSearchValue,
searchValue,
searchType,
setSearchType,
ChangeHandler,
activeTab,
}) => {
return (
//
//
);
};
const Filters = ({ initialValues, submitHandler, InitialLoading, user }) => {
return (
);
};
const TableWrapper = tw.h1`my-10 border rounded-md overflow-auto`;
const Title = tw.h1`text-xl text-gray-800 whitespace-nowrap font-medium`;
const UploadWrapper = tw.div`
w-full flex flex-col justify-end space-y-4 items-end `;
const Button = tw.button`text-white bg-custom-zambia w-40 flex items-center space-x-1 justify-center h-10 text-xs whitespace-nowrap rounded`;
const TabWrapper = tw.div`flex items-center space-x-4 `;
const Tab = tw.button`
${(p) => (p.$active ? "bg-red-500 text-white" : "bg-gray-100 text-gray-600")}
px-6 py-2 text-md rounded-full`;
const SearchWrapper = tw.div`flex items-center space-x-2 w-full max-w-sm `;
const SearchInput = tw.div` field-wrapper relative pl-6 rounded-md bg-white w-full border border-gray-400 flex items-center overflow-hidden`;
const SearchIcon = tw.button`absolute -top-1 left-2 -bottom-1 grid place-items-center `;
const FilterContainer = tw.div`
grid grid-cols-2 w-full max-w-xl gap-4 md:flex md:space-x-4 items-end mt-12 md:mt-8`;
const ApplyBtn = tw.button`${(p) =>
p.$active
? "bg-gray-100"
: ""} border whitespace-nowrap border-gray-200 flex space-x-1.5 justify-center items-center text-gray-500 h-full rounded-md px-6 cursor-pointer hover:bg-gray-100 py-2.5 text-sm`;
export default Api;