diff --git a/src/Modules/FileTracking/components/Archive.jsx b/src/Modules/FileTracking/components/Archive.jsx
index 34ded20e2..cae3757fd 100644
--- a/src/Modules/FileTracking/components/Archive.jsx
+++ b/src/Modules/FileTracking/components/Archive.jsx
@@ -31,7 +31,7 @@ import {
MagnifyingGlass,
ArrowClockwise,
FileText,
- FolderNotch,
+ Folder,
} from "@phosphor-icons/react";
import axios from "axios";
import { useSelector } from "react-redux";
@@ -224,7 +224,7 @@ export default function ArchiveFiles() {
return (
-
+
No archived files found!
@@ -336,7 +336,7 @@ export default function ArchiveFiles() {
return (
-
+
No archived files found
diff --git a/src/Modules/Mess/components/ApplyForSpecialFood.jsx b/src/Modules/Mess/components/ApplyForSpecialFood.jsx
index c74e97fe4..200769644 100644
--- a/src/Modules/Mess/components/ApplyForSpecialFood.jsx
+++ b/src/Modules/Mess/components/ApplyForSpecialFood.jsx
@@ -1,9 +1,11 @@
import React, { useState } from "react";
import axios from "axios";
import {
+ Alert,
Button,
Select,
Container,
+ FileInput,
Paper,
Title,
Group,
@@ -19,51 +21,67 @@ import { specialFoodRequestRoute } from "../routes";
function ApplyForSpecialFood() {
const [food, setFood] = useState("");
const [timing, setTiming] = useState("");
+ const [requestType, setRequestType] = useState("event");
+ const [medicalProof, setMedicalProof] = useState(null);
const [fromDate, setFromDate] = useState(null);
const [toDate, setToDate] = useState(null);
const [purpose, setPurpose] = useState("");
+ const [error, setError] = useState("");
const authToken = localStorage.getItem("authToken");
const today = new Date();
const minstartdate = new Date();
minstartdate.setDate(today.getDate() + 3);
- // console.log(authToken);
const handleSubmit = async (event) => {
event.preventDefault();
+ setError("");
- const requestData = {
- start_date: fromDate.toISOString().split("T")[0],
- end_date: toDate.toISOString().split("T")[0],
- status: "1", // Pending status
- app_date: new Date().toISOString().split("T")[0],
- request: purpose,
- item1: food,
- item2: timing,
- };
- console.log(requestData);
+ if (!fromDate || !toDate) {
+ setError("Select both the start and end dates.");
+ return;
+ }
+
+ if (requestType === "medical" && !medicalProof) {
+ setError("Upload medical proof for illness-based requests.");
+ return;
+ }
+
+ const requestData = new FormData();
+ requestData.append("start_date", fromDate.toISOString().split("T")[0]);
+ requestData.append("end_date", toDate.toISOString().split("T")[0]);
+ requestData.append("status", "1");
+ requestData.append("app_date", new Date().toISOString().split("T")[0]);
+ requestData.append("request", purpose);
+ requestData.append("item1", food);
+ requestData.append("item2", timing);
+ requestData.append("request_type", requestType);
+ if (medicalProof) {
+ requestData.append("supporting_document", medicalProof);
+ }
try {
const response = await axios.post(specialFoodRequestRoute, requestData, {
headers: {
Authorization: `Token ${authToken}`,
- "Content-Type": "application/json",
},
});
- if (response.status === 200) {
+ if (response.status === 200 || response.status === 201) {
alert("Special food request submitted successfully!");
setFood("");
setTiming("");
+ setRequestType("event");
+ setMedicalProof(null);
setFromDate(null);
setToDate(null);
setPurpose("");
} else {
console.error("Failed to submit request:", response.data);
- alert(`Error: ${response.data.message || "Submission failed."}`);
+ setError(response.data.message || "Submission failed.");
}
- } catch (error) {
- console.error("Error submitting request:", error);
- alert(`Error: ${error.response?.data?.message || error.message}`);
+ } catch (submitError) {
+ console.error("Error submitting request:", submitError);
+ setError(submitError.response?.data?.message || submitError.message);
}
};
@@ -90,6 +108,12 @@ function ApplyForSpecialFood() {