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}
) : (
ID |
Дата |
Вкупно |
Статус |
Акции |
{orders.map((order) => (
{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;