diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx
index 256b75dc..2ee38b25 100644
--- a/src/app/components/Navbar.tsx
+++ b/src/app/components/Navbar.tsx
@@ -42,6 +42,7 @@ function Nav({ userImage }: { userImage: string }) {
{makeLink("/home", "Home")}
+ {makeLink("/due-considerations", "Due Considerations")}
{makeLink("/help", "Help")}
diff --git a/src/app/components/due-considerations/SelectFolder.tsx b/src/app/components/due-considerations/SelectFolder.tsx
new file mode 100644
index 00000000..a13c458f
--- /dev/null
+++ b/src/app/components/due-considerations/SelectFolder.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import { Input } from "@/app/shadcn_components/ui/input";
+import { Label } from "@/app/shadcn_components/ui/label";
+
+export function SelectFolder({
+ handleButtonDisabled,
+ setUploadMessage,
+ setFile,
+}: {
+ handleButtonDisabled: (file?: File[]) => void;
+ setUploadMessage: (message: string) => void;
+ setFile: (file: File[]) => void;
+}) {
+ function handleOnChange(e: React.ChangeEvent
) {
+ if (e.target.files && e.target.files.length === 3) {
+ const files = Array.from(e.target.files);
+ const extensions = files.map((file) =>
+ file.name.split(".").pop()?.toLowerCase()
+ );
+
+ if (
+ extensions.includes("xml") &&
+ extensions.includes("pdf") &&
+ extensions.includes("docx")
+ ) {
+ setFile(files); // You would need to update setFile to accept an array of files
+ handleButtonDisabled(files); // Similarly, update handleButtonDisabled to work with multiple files
+ } else {
+ setUploadMessage("Please select a .xml, .pdf, and .docx file.");
+ }
+ } else {
+ setUploadMessage("Please select exactly 3 files.");
+ }
+ }
+
+ return (
+
+ );
+}
diff --git a/src/app/db/db.ts b/src/app/db/db.ts
index ebe2cc25..d743f7ed 100644
--- a/src/app/db/db.ts
+++ b/src/app/db/db.ts
@@ -12,6 +12,8 @@ export const pool = new Pool({
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
+ max: 20,
+ idleTimeoutMillis: 30000,
});
const schema = {
diff --git a/src/app/due-considerations/page.tsx b/src/app/due-considerations/page.tsx
new file mode 100644
index 00000000..04f26687
--- /dev/null
+++ b/src/app/due-considerations/page.tsx
@@ -0,0 +1,66 @@
+"use client";
+
+import { useState } from "react";
+import { SelectFolder } from "../components/due-considerations/SelectFolder";
+import { Button } from "../shadcn_components/ui/button";
+
+export default function DueConsiderationsHome() {
+ const [file, setFile] = useState([]);
+ const [buttonDisabled, setButtonDisabled] = useState(true);
+ const [uploadMessage, setUploadMessage] = useState("");
+
+ function handleButtonDisabled(files?: File[]) {
+ if (files && files.length === 3) {
+ const extensions = files.map((file) =>
+ file.name.split(".").pop()?.toLowerCase()
+ );
+
+ if (
+ extensions.includes("xml") &&
+ extensions.includes("pdf") &&
+ extensions.includes("docx")
+ ) {
+ setButtonDisabled(false);
+ } else {
+ setUploadMessage("Please select a .xml, .pdf, and .docx file.");
+ setButtonDisabled(true);
+ }
+ } else {
+ setUploadMessage("Please select exactly 3 files.");
+ setButtonDisabled(true);
+ }
+ }
+
+ return (
+
+
+
Select a folder containing:
+
+ - A full SAP xml
+ - EPR pdf
+ - Condition report word document
+
+
+ Make sure these documents all relate to the same property
+
+
+
+
+
+
+
+
{uploadMessage}
+
+
+
+
+ );
+}