"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { Card, CardHeader, CardContent } from "@/components/ui/Card"; import Button from "@/components/ui/Button"; import Badge from "@/components/ui/Badge"; import { Input } from "@/components/ui/Input"; import PageContainer from "@/components/ui/PageContainer"; import PageHeader from "@/components/ui/PageHeader"; import SearchBar from "@/components/ui/SearchBar"; import { LoadingState } from "@/components/ui/States"; import { formatDate } from "@/lib/utils"; export default function ProjectListPage() { const [projects, setProjects] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [filteredProjects, setFilteredProjects] = useState([]); useEffect(() => { fetch("/api/projects") .then((res) => res.json()) .then((data) => { setProjects(data); setFilteredProjects(data); }); }, []); // Filter projects based on search term useEffect(() => { if (!searchTerm.trim()) { setFilteredProjects(projects); } else { const filtered = projects.filter((project) => { const searchLower = searchTerm.toLowerCase(); return ( project.project_name?.toLowerCase().includes(searchLower) || project.wp?.toLowerCase().includes(searchLower) || project.plot?.toLowerCase().includes(searchLower) || project.investment_number?.toLowerCase().includes(searchLower) || project.address?.toLowerCase().includes(searchLower) ); }); setFilteredProjects(filtered); } }, [searchTerm, projects]); async function handleDelete(id) { const confirmed = confirm("Are you sure you want to delete this project?"); if (!confirmed) return; const res = await fetch(`/api/projects/${id}`, { method: "DELETE", }); if (res.ok) { setProjects((prev) => prev.filter((p) => p.project_id !== id)); } } const handleSearchChange = (e) => { setSearchTerm(e.target.value); }; return (
{filteredProjects.length === 0 && searchTerm ? (

No projects found

No projects match your search criteria. Try adjusting your search terms.

) : projects.length === 0 ? (

No projects yet

Get started by creating your first project

) : (
{" "} {filteredProjects.map((project, index) => ( {" "} ))}
No. Project Name WP City Address Plot Finish Type Status Actions
{project.project_number} {project.project_name} {project.wp || "N/A"} {project.city || "N/A"} {project.address || "N/A"} {project.plot || "N/A"} {project.finish_date ? formatDate(project.finish_date) : "N/A"} {project.project_type === "design" ? "P" : project.project_type === "construction" ? "R" : project.project_type === "design+construction" ? "P+R" : "-"} {project.project_status === "registered" ? "Zarejestr." : project.project_status === "in_progress_design" ? "W real. (P)" : project.project_status === "in_progress_construction" ? "W real. (R)" : project.project_status === "fulfilled" ? "Zakończony" : "-"}
)}
); }