65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import { Button } from "@/components/ui/button";
|
|
import axios from "axios";
|
|
import { useRef, useState } from "react";
|
|
import { toast } from "sonner";
|
|
|
|
export default function OrderImport(props: any) {
|
|
const fileInputRef: any = useRef(null);
|
|
const [posting, setPosting] = useState(false);
|
|
const token = localStorage.getItem("auth_token");
|
|
//const [fileType, setFileType] = useState("");
|
|
const importOrders = async (e: any) => {
|
|
const file = e.target.files[0];
|
|
if (!file) {
|
|
toast.error("Missing file please try again");
|
|
setPosting(false);
|
|
return;
|
|
}
|
|
|
|
// create the form data with the correct fileType
|
|
const formData = new FormData();
|
|
formData.append("postOrders", e.target.files[0]);
|
|
formData.append("fileType", props.fileType); // extra field
|
|
|
|
try {
|
|
const response = await axios.post(
|
|
"/api/logistics/postbulkorders",
|
|
formData,
|
|
{
|
|
headers: {
|
|
"Content-Type": "multipart/form-data",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
}
|
|
);
|
|
//console.log("Upload successful:", response.data);
|
|
toast.success(response?.data?.message);
|
|
fileInputRef.current.value = null;
|
|
setPosting(false);
|
|
} catch (error) {
|
|
console.log(error);
|
|
toast.error("Upload failed");
|
|
}
|
|
setPosting(false);
|
|
};
|
|
|
|
const handleButtonClick = () => {
|
|
setPosting(true);
|
|
fileInputRef.current.click();
|
|
};
|
|
return (
|
|
<div>
|
|
<Button onClick={handleButtonClick} disabled={posting}>
|
|
{props.name}
|
|
</Button>
|
|
<input
|
|
type="file"
|
|
accept=".xlsx, .xls, .xlsm"
|
|
ref={fileInputRef}
|
|
style={{ display: "none" }}
|
|
onChange={importOrders}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|