diff --git a/src/app/projects/[id]/page.js b/src/app/projects/[id]/page.js
index 7f3f2fe..6cd521e 100644
--- a/src/app/projects/[id]/page.js
+++ b/src/app/projects/[id]/page.js
@@ -12,8 +12,8 @@ import { differenceInCalendarDays, parseISO } from "date-fns";
import PageContainer from "@/components/ui/PageContainer";
import PageHeader from "@/components/ui/PageHeader";
-export default async function ProjectViewPage({ params }) {
- const { id } = await params;
+export default function ProjectViewPage({ params }) {
+ const { id } = params;
const project = getProjectWithContract(id);
const notes = getNotesForProject(id);
const daysRemaining = differenceInCalendarDays(
@@ -141,6 +141,36 @@ export default async function ProjectViewPage({ params }) {
{project.notes}
)}
+
+
+ Typ projektu
+
+
+ {project.project_type === "design"
+ ? "Projektowanie"
+ : project.project_type === "construction"
+ ? "Realizacja"
+ : project.project_type === "design+construction"
+ ? "Projektowanie + Realizacja"
+ : "-"}
+
+
+
+
+ Status projektu
+
+
+ {project.project_status === "registered"
+ ? "Zarejestrowany"
+ : project.project_status === "in_progress_design"
+ ? "W realizacji (projektowanie)"
+ : project.project_status === "in_progress_construction"
+ ? "W realizacji (realizacja)"
+ : project.project_status === "fulfilled"
+ ? "Zakończony"
+ : "-"}
+
+
diff --git a/src/app/projects/page.js b/src/app/projects/page.js
index a712b71..1495415 100644
--- a/src/app/projects/page.js
+++ b/src/app/projects/page.js
@@ -192,6 +192,26 @@ export default function ProjectListPage() {
{project.finish_date || "N/A"}
+
+ {project.project_type === "design"
+ ? "Projektowanie"
+ : project.project_type === "construction"
+ ? "Realizacja"
+ : project.project_type === "design+construction"
+ ? "Projektowanie + Realizacja"
+ : "-"}
+
+
+ {project.project_status === "registered"
+ ? "Zarejestrowany"
+ : project.project_status === "in_progress_design"
+ ? "W realizacji (projektowanie)"
+ : project.project_status === "in_progress_construction"
+ ? "W realizacji (realizacja)"
+ : project.project_status === "fulfilled"
+ ? "Zakończony"
+ : "-"}
+
+ {/* Project Type Dropdown */}
+
+
+
+
+
{/* Other fields */}
{[
["project_name", "Nazwa projektu"],
diff --git a/src/components/ProjectStatusDropdown.js b/src/components/ProjectStatusDropdown.js
new file mode 100644
index 0000000..0033f99
--- /dev/null
+++ b/src/components/ProjectStatusDropdown.js
@@ -0,0 +1,38 @@
+"use client";
+
+import { useState } from "react";
+
+export default function ProjectStatusDropdown({ project, onStatusChange }) {
+ const [status, setStatus] = useState(project.project_status);
+ const [loading, setLoading] = useState(false);
+
+ const handleChange = async (e) => {
+ const newStatus = e.target.value;
+ setStatus(newStatus);
+ setLoading(true);
+ await fetch(`/api/projects/${project.project_id}`, {
+ method: "PUT",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ ...project, project_status: newStatus }),
+ });
+ setLoading(false);
+ if (onStatusChange) onStatusChange(newStatus);
+ };
+
+ return (
+
+ );
+}
diff --git a/src/lib/init-db.js b/src/lib/init-db.js
index ef08fdd..d893042 100644
--- a/src/lib/init-db.js
+++ b/src/lib/init-db.js
@@ -30,6 +30,8 @@ export default function initializeDatabase() {
wp TEXT,
contact TEXT,
notes TEXT,
+ project_type TEXT CHECK(project_type IN ('design', 'construction', 'design+construction')) DEFAULT 'design',
+ project_status TEXT CHECK(project_status IN ('registered', 'in_progress_design', 'in_progress_construction', 'fulfilled')) DEFAULT 'registered',
FOREIGN KEY (contract_id) REFERENCES contracts(contract_id)
);
@@ -98,4 +100,22 @@ export default function initializeDatabase() {
} catch (e) {
// Column already exists, ignore error
}
+
+ // Migration: Add project_type column to projects table
+ try {
+ db.exec(`
+ ALTER TABLE projects ADD COLUMN project_type TEXT CHECK(project_type IN ('design', 'construction', 'design+construction')) DEFAULT 'design';
+ `);
+ } catch (e) {
+ // Column already exists, ignore error
+ }
+
+ // Migration: Add project_status column to projects table
+ try {
+ db.exec(`
+ ALTER TABLE projects ADD COLUMN project_status TEXT CHECK(project_status IN ('registered', 'in_progress_design', 'in_progress_construction', 'fulfilled')) DEFAULT 'registered';
+ `);
+ } catch (e) {
+ // Column already exists, ignore error
+ }
}
diff --git a/src/lib/queries/projects.js b/src/lib/queries/projects.js
index 03d2964..a39b7ca 100644
--- a/src/lib/queries/projects.js
+++ b/src/lib/queries/projects.js
@@ -42,8 +42,8 @@ export function createProject(data) {
const stmt = db.prepare(`
INSERT INTO projects (
contract_id, project_name, project_number, address, plot, district, unit, city, investment_number, finish_date,
- wp, contact, notes
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+ wp, contact, notes, project_type, project_status
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`);
stmt.run(
data.contract_id,
@@ -58,7 +58,9 @@ export function createProject(data) {
data.finish_date,
data.wp,
data.contact,
- data.notes
+ data.notes,
+ data.project_type || "design",
+ data.project_status || "registered"
);
}
@@ -66,7 +68,7 @@ export function updateProject(id, data) {
const stmt = db.prepare(`
UPDATE projects SET
contract_id = ?, project_name = ?, project_number = ?, address = ?, plot = ?, district = ?, unit = ?, city = ?,
- investment_number = ?, finish_date = ?, wp = ?, contact = ?, notes = ?
+ investment_number = ?, finish_date = ?, wp = ?, contact = ?, notes = ?, project_type = ?, project_status = ?
WHERE project_id = ?
`);
stmt.run(
@@ -83,6 +85,8 @@ export function updateProject(id, data) {
data.wp,
data.contact,
data.notes,
+ data.project_type || "design",
+ data.project_status || "registered",
id
);
}