import axios from "axios"; import React, { useContext, useEffect, useReducer } from "react"; import { Link, useNavigate, useParams } from "react-router-dom"; import LoadingBox from "../components/LoadingBox"; import MessageBox from "../components/MessageBox"; import { Store } from "../Store"; import { getError } from "../components/utils"; import { Helmet } from "react-helmet-async"; import Row from "react-bootstrap/Row"; import Card from "react-bootstrap/Card"; import Col from "react-bootstrap/Col"; import ListGroup from "react-bootstrap/ListGroup"; function reducer(state, action) { switch (action.type) { case "FETCH_REQUEST": return { ...state, loading: true, error: "" }; case "FETCH_SUCCESS": return { ...state, loading: false, order: action.payload, error: "" }; case "FETCH_FAIL": return { ...state, loading: false, error: action.payload }; default: return state; } } export default function OrderScreen() { const { state } = useContext(Store); const { userInfo } = state; const params = useParams(); const { id: orderId } = params; const navigate = useNavigate(); const [{ loading, error, order }, dispatch] = useReducer(reducer, { loading: true, order: {}, error: "", }); useEffect(() => { const fetchOrder = async () => { try { dispatch({ type: "FETCH_REQUEST" }); const { data } = await axios.get(`/api/orders/${orderId}`, { headers: { authorization: `Bearer ${userInfo.token}` }, }); dispatch({ type: "FETCH_SUCCESS", payload: data }); } catch (err) { dispatch({ type: "FETCH_FAIL", payload: getError(err) }); } }; if (!userInfo) { return navigate("/login"); } if (!order._id || (order._id && order._id !== orderId)) { fetchOrder(); } }, [order, userInfo, orderId, navigate]); return loading ? ( ) : error ? ( {error} ) : (
Нарачка {orderId}

Нарачка {orderId}

Испорака Име: {order.shippingAddress.fullName}
Адреса: {order.shippingAddress.address}, {order.shippingAddress.city},{order.shippingAddress.postalCode}, {order.shippingAddress.country}
{order.isDelivered ? ( Доставено на {order.deliveredAt} ) : order.isShipped ? ( Вашата нарачка е испратена. ) : order.isConfirmed ? ( Вашата нарачка се процесира. ) : ( Потребно е да ја потврдите нарачката. Ќе бидете контактирани преку телефонскиот број оставен за контакт. )}
Плаќање Начин:{" "} {order.paymentMethod === "Karticka" ? "Со платежна картичка" : "Во готово при достава"} {order.isPaid ? ( Платено на {order.paidAt} ) : ( Не е платено )} Продукти {order.orderItems.map((item) => (
{item.name} {item.name}
{item.quantity} {item.price} ден
))}
Нарачка Продукти: {order.itemsPrice.toFixed(2)} ден Испорака: {order.shippingPrice.toFixed(2)} ден Вкупно {order.totalPrice.toFixed(2)} ден
); }