import axios from "axios"; import React, { useEffect, useReducer } from "react"; import { Link, useLocation, useNavigate } from "react-router-dom"; import { getError } from "../components/utils"; import Button from "react-bootstrap/Button"; import LoadingBox from "../components/LoadingBox"; import MessageBox from "../components/MessageBox"; import CheckIcon from "@mui/icons-material/Check"; import ClearIcon from "@mui/icons-material/Clear"; import PhonePausedIcon from "@mui/icons-material/PhonePaused"; import HourglassBottomIcon from "@mui/icons-material/HourglassBottom"; import LocalShippingIcon from "@mui/icons-material/LocalShipping"; import LinkContainer from "react-router-bootstrap/LinkContainer"; import Form from "react-bootstrap/Form"; const reducer = (state, action) => { switch (action.type) { case "FETCH_REQUEST": return { ...state, loading: true }; case "FETCH_SUCCESS": console.log(action.payload); return { ...state, //orders: action.payload, orders: action.payload.orders, page: action.payload.page, pages: action.payload.pages, countProducts: action.payload.countProducts, loading: false, }; case "FETCH_FAIL": return { ...state, loading: false, error: action.payload }; default: return state; } }; function AdminOrdersScreen() { const navigate = useNavigate(); const { search } = useLocation(); const sp = new URLSearchParams(search); const isConfirmed = sp.get("isConfirmed") || "all"; const isShipped = sp.get("isShipped") || "all"; const query = sp.get("query") || "all"; const page = sp.get("page") || 1; const [{ loading, error, orders, pages, countProducts }, dispatch] = useReducer(reducer, { loading: true, error: "", }); useEffect(() => { const fetchData = async () => { dispatch({ type: "FETCH_REQUEST" }); try { const { data } = await axios.get( `/api/orders?page=${page}&isConfirmed=${isConfirmed}&isShipped=${isShipped}&query=${query}` ); dispatch({ type: "FETCH_SUCCESS", payload: data }); } catch (error) { dispatch({ type: "FETCH_FAIL", payload: getError(error) }); } }; fetchData(); }, [isConfirmed, isShipped, page, query]); const getFilterUrl = (filter) => { const filterPage = filter.page || page; const filterIsConfirmed = filter.isConfirmed || isConfirmed; const filterIsShipped = filter.isShipped || isShipped; const filterQuery = filter.query || query; return `?page=${filterPage}&isConfirmed=${filterIsConfirmed}&isShipped=${filterIsShipped}&query=${filterQuery}`; }; return (
Додади нов производ
Производи
Нарачки

Нарачки

{loading ? ( ) : error ? ( {error} ) : ( {orders.map((order) => ( ))}
ID Дата Вкупно Статус Акции
{order._id.substring(0, 7)} {order.createdAt.substring(0, 10)} {order.totalPrice.toFixed(2)} {order.isDelivered ? ( ) : order.isShipped ? ( ) : order.isConfirmed ? ( ) : ( )}
)}
{[...Array(pages).keys()].map((x) => ( ))}
); } export default AdminOrdersScreen;