import React, { useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCircleInfo, faCubesStacked, faXmark } from "@fortawesome/free-solid-svg-icons"; import { ShipmentRequest } from "@/interfaces/interfaces"; import ShipmentItemsAccordion from "@/Components/ShipmentItemsAccordion"; import axios from "axios"; interface WarehouseExpediceDialogProps { selectedShipment: ShipmentRequest; isDialogOpen: boolean; closeDialog: () => void; handleDialogProcess: () => void; dialogToggleClose: () => void; selectedType: "parcels" | "processed" | null; buttonStates: { [itemId: number]: any }; setButtonStates: React.Dispatch>; } export default function WarehouseExpediceDialog({ selectedShipment, isDialogOpen, closeDialog, handleDialogProcess, dialogToggleClose, selectedType, buttonStates, setButtonStates, }: WarehouseExpediceDialogProps) { // Track which tab is active: "stock" or "details" const [activeTab, setActiveTab] = useState<"stock" | "details">("stock"); const [imageArray, setImageArray] = useState>({}); const fetchItemImages = () => { axios .get("/api/expediceListWMS/getImage", { params: { selectedShipmentID: selectedShipment.id }, }) .then((response) => { setImageArray(response.data.imageArray || {}); }) .catch((error) => { console.error("Error fetching image:", error); }); }; // Whenever user clicks the Details tab, fetch images const handleDetailsClick = () => { setActiveTab("details"); fetchItemImages(); }; return (
{/* Modal backdrop + box */}
{/* Header with Tabs and Close button */}
{/* Body */}
{activeTab === "details" && (
{/* Reference */}

Ref. # {selectedShipment.shipment_reference}

{/* Items Section */}

Items

{selectedShipment.items.map((item) => (
{(item.price / item.quantity).toFixed(2)} {selectedShipment.currency}

Model Number:

{item.model_number}

Origin:

{item.originCountry}

Weight:

{item.weight}

{item.stockData && Object.keys(item.stockData).length > 0 && (

Stock Information:

{Object.entries(item.stockData).flatMap(([stockName, stockArray]) => stockArray.map((stock, idx) => (

{stockName}

Location: {stock.location}

Count: {stock.count} ks

)) )}
)}
))}
{/* Delivery Address */}

Delivery Address

Name: {selectedShipment.delivery_address_name}

{selectedShipment.delivery_address_company_name && (

Company: {selectedShipment.delivery_address_company_name}

)}

Street: {selectedShipment.delivery_address_street_name}{" "} {selectedShipment.delivery_address_street_number}

City: {selectedShipment.delivery_address_city}

ZIP: {selectedShipment.delivery_address_zip}

{selectedShipment.delivery_address_state_iso && (

State: {selectedShipment.delivery_address_state_iso}

)}

Country: {selectedShipment.delivery_address_country_iso}

{/* Carrier & Shipment Info */}

Carrier & Shipment Info

Carrier:

{selectedShipment.carrier.carrier_name}

Tracking Number:

{selectedShipment.shipment?.tracking_number || ""}

Shipment Price:

{selectedShipment.currency} {selectedShipment.shipment_price}

Shipment Value:

{selectedShipment.shipment_value}

Weight:

{selectedShipment.weight}

Dimensions:

{selectedShipment.length} × {selectedShipment.width} × {selectedShipment.height}

)} {activeTab === "stock" && (
)}
{/* Footer with action button */}
{selectedType === "parcels" && ( )} {selectedType === "processed" && ( )}
); }