import React, { useState, useEffect, useRef } from "react"; import axios from "axios"; import { Link, useNavigate, useParams } from "react-router-dom"; import QRCode from "react-qr-code"; import { isAutheticated } from "src/auth"; import { useDispatch, useSelector } from "react-redux"; import { addItemsToCart } from "src/redux/Actions/cartAction"; import toast from "react-hot-toast"; import { cibBlackberry } from "@coreui/icons"; import Button from "@material-ui/core/Button"; function ViewOrders() { const { status, id } = useParams(); const [success, setSuccess] = useState(true); const { cartItems, subTotal, shippingCharge, tax, shipingInfo, total } = useSelector((state) => state.cart); const AllStates = useSelector((state) => state); const getValue = useRef(); const getFranchiseeID = useRef(); const dispatch = useDispatch(); const navigate = useNavigate(); const printOrderRef = useRef(); const token = isAutheticated(); const [productData, setProductData] = useState([]); const [allFranchisee, setAllFranchisee] = useState([]); const [allTax, setAllTax] = useState([]); const [orderDetails, setOrderDetails] = useState(); const [productDetails, setProductDetails] = useState(); const [loading, setLoading] = useState(true); const [orderId, setOrderId] = useState(null); const [orderStatus, setOrderStatus] = useState(""); // const [data, setData] = useState({ // product_Name: '', // address: '', // quantity: '', // contact_Number: '', // total_Price: '', // }) useEffect(() => { const getSingleOrder = async () => { setLoading(true); const res = await axios.get(`/api/order/getOne/${id}`, { headers: { "Access-Control-Allow-Origin": "*", Authorization: `Bearer ${token}`, }, }); if (res.data) { setLoading(false); setOrderId(res.data?.order?.order_id); setOrderDetails(res.data?.order); console.log(res.data); // let options = { // Franchisee: res.data?.order?.shippingInfo?.Franchisee?._id, // name: res.data?.order?.shippingInfo?.name, // contact_Number: res.data?.order?.shippingInfo?.contact_Number, // contact_Person_Name: res.data?.order?.shippingInfo?.contact_Person_Name, // address: res.data?.order?.shippingInfo?.address, // city: res.data?.order?.shippingInfo?.city, // price_Lable: res.data?.order?.shippingInfo?.Franchisee?.price_Lable, // state: res.data?.order?.shippingInfo?.state, // banner: res.data?.order?.shippingInfo?.Franchisee?.banner?.url, // // Franchisee_Url: res?.data?.data?.url // } // dispatch({ type: "addShippingInfo", payload: options }); // if (res.data?.order?.orderItems) { // res.data?.order?.orderItems.map((i, ind) => { // dispatch({ type: "addToCart", payload: i }); // dispatch({ type: "calculatePrice" }); // }) // } } }; getSingleOrder(); }, [token]); const handleChange = (e) => { if (e.target.type === "text") { setData((prev) => ({ ...prev, [e.target.id]: e.target.value })); } else { if (e.target.value === "") toast.error("please select status"); setOrderStatus(e.target.value); } }; const handleQuantityChange = (e) => { setData((prev) => ({ ...prev, quantity: e.target.value, total_Price: productDetails?.base_Price * e.target.value, })); }; // ------------------------------------------------------ const handlechangestatus = () => { if (orderStatus === "dispatched") { swal({ title: `Are you sure for ${orderStatus}?`, icon: "warning", content: { element: "div", attributes: { innerHTML: '' + '', }, }, buttons: { Yes: { text: "Submit", value: true }, Cancel: { text: "Cancel", value: "cancel" }, }, }).then((result) => { if (result === true) { // You have the input values, you can use them in your API call const courierName = document.getElementById("input1").value.trim(); const TrackingID = document.getElementById("input2").value.trim(); // Check if values are entered if (courierName === "" || TrackingID === "") { swal({ title: "Warning", text: "Please enter values Courier Name And Tracking ID", icon: "warning", button: "Ok", dangerMode: true, }); } else { axios .patch( `/api/order/change/status/${id}`, { status: orderStatus, courierName, TrackingID, sendemail: orderDetails?.user?.email, customerName: orderDetails?.user?.name, }, { headers: { "Access-Control-Allow-Origin": "*", Authorization: `Bearer ${token}`, }, } ) .then((res) => { console.log("status"); toast.success( `Order status change ${status} to ${orderStatus}` ); // setSuccess((prev) => !prev); }) .catch((err) => { swal({ title: "Warning", text: err.response.data.message ? err.response.data.message : "Something went wrong!", icon: "error", button: "Retry", dangerMode: true, }); }); } } // else { // swal.close(); // Close the popup if canceled // } }); } else if (orderStatus === "cancelled") { swal({ title: `Are you sure for ${orderStatus}?`, icon: "warning", content: { element: "div", attributes: { innerHTML: '
Reson for cancellation.?
', }, }, buttons: { Yes: { text: "Submit", value: true }, Cancel: { text: "Cancel", value: "cancel" }, }, }).then((result) => { if (result === true) { // You have the input values, you can use them in your API call const ReasonforCancellation = document .getElementById("input1") .value.trim(); // Check if values are entered if (ReasonforCancellation === "") { swal({ title: "Warning", text: "Please enter Reason for Cancellation", icon: "warning", button: "Ok", dangerMode: true, }); } else { axios .patch( `/api/order/change/status/${id}`, { status: orderStatus, ReasonforCancellation, }, { headers: { "Access-Control-Allow-Origin": "*", Authorization: `Bearer ${token}`, }, } ) .then((res) => { console.log("status"); toast.success( `Order status change ${status} to ${orderStatus}` ); // setSuccess((prev) => !prev); }) .catch((err) => { swal({ title: "Warning", text: err.response.data.message ? err.response.data.message : "Something went wrong!", icon: "error", button: "Retry", dangerMode: true, }); }); } } // else { // swal.close(); // Close the popup if canceled // } }); } else if (orderStatus === "delivered") { swal({ title: `Are you sure for ${orderStatus}?`, icon: "warning", content: { element: "div", attributes: { innerHTML: '', // '', }, }, buttons: { Yes: { text: "Submit", value: true }, Cancel: { text: "Cancel", value: "cancel" }, }, }).then((result) => { if (result === true) { // You have the input values, you can use them in your API call const DDate = document.getElementById("input1").value.trim(); // Check if values are entered if (DDate === "") { swal({ title: "Warning", text: "Please enter Delivered Date", icon: "warning", button: "Ok", dangerMode: true, }); } else { axios .patch( `/api/order/change/status/${id}`, { status: orderStatus, DDate, }, { headers: { "Access-Control-Allow-Origin": "*", Authorization: `Bearer ${token}`, }, } ) .then((res) => { console.log("status"); toast.success( `Order status change ${status} to ${orderStatus}` ); // setSuccess((prev) => !prev); }) .catch((err) => { swal({ title: "Warning", text: err.response.data.message ? err.response.data.message : "Something went wrong!", icon: "error", button: "Retry", dangerMode: true, }); }); } } // else { // swal.close(); // Close the popup if canceled // } }); } else { swal({ title: `Are you sure for ${orderStatus}?`, icon: "warning", buttons: { Yes: { text: "Yes", value: true }, Cancel: { text: "Cancel", value: "cancel" }, }, }).then((value) => { if (value === true) { axios .patch( `/api/order/change/status/${id}`, { status: orderStatus }, { headers: { "Access-Control-Allow-Origin": "*", Authorization: `Bearer ${token}`, }, } ) .then((res) => { console.log("status"); toast.success(`order status change ${status} to ${orderStatus}`); // setSuccess((prev) => !prev); }) .catch((err) => { swal({ title: "Warning", text: err.response.data.message ? err.response.data.message : "Something went wrong!", icon: "error", button: "Retry", dangerMode: true, }); }); } }); } }; function getBack() { navigate(`/orders/${status}`, { replace: true }); } return ( <> {" "}View Order
Order Placed On | : | {orderDetails?.createdAt ? new Date( orderDetails?.createdAt ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : new Date( productData?.placed_on ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, })} |
---|---|---|
Processing Started | : | {orderDetails?.status_timeline?.processing ? new Date( orderDetails?.status_timeline?.processing ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : "-"} |
Dispatched On | : | {orderDetails?.status_timeline?.dispatched ? new Date( orderDetails?.status_timeline?.dispatched ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : "-"} |
Delivered On | : | {orderDetails?.status_timeline?.delivered ? new Date( orderDetails?.status_timeline?.delivered ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : "-"} |
Cancelled On | : | {orderDetails?.status_timeline?.cancelled ? new Date( orderDetails?.status_timeline?.cancelled ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : "-"} |
Returned On | : | {orderDetails?.status_timeline?.returned ? new Date( orderDetails?.status_timeline?.returned ).toLocaleString("en-IN", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "numeric", hour12: true, }) : "-"} |
{" "} Order Cancelled Reason:{" "} {orderDetails?.order_Cancelled_Reason}
> )} {/* order status change */}{" "}Contact No. :{" "} {orderDetails?.shippingInfo?.phone_Number}
City : {orderDetails?.shippingInfo?.city}
State : {orderDetails?.shippingInfo?.state}
country : {orderDetails?.shippingInfo?.country}
Postal Code. :{" "} {orderDetails?.shippingInfo?.postalCode}