diff --git a/src/app/projects/page.js b/src/app/projects/page.js index 8e04297..b1f1746 100644 --- a/src/app/projects/page.js +++ b/src/app/projects/page.js @@ -12,16 +12,19 @@ import SearchBar from "@/components/ui/SearchBar"; import { LoadingState } from "@/components/ui/States"; import { formatDate } from "@/lib/utils"; import { useTranslation } from "@/lib/i18n"; +import { useSession } from "next-auth/react"; export default function ProjectListPage() { const { t } = useTranslation(); + const { data: session } = useSession(); const [projects, setProjects] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [filteredProjects, setFilteredProjects] = useState([]); const [filters, setFilters] = useState({ status: 'all', type: 'all', - customer: 'all' + customer: 'all', + mine: false }); const [customers, setCustomers] = useState([]); @@ -63,6 +66,11 @@ export default function ProjectListPage() { filtered = filtered.filter(project => project.customer === filters.customer); } + // Apply mine filter + if (filters.mine && session?.user?.id) { + filtered = filtered.filter(project => project.assigned_to === session.user.id); + } + // Apply search term if (searchTerm.trim()) { const searchLower = searchTerm.toLowerCase(); @@ -80,7 +88,7 @@ export default function ProjectListPage() { } setFilteredProjects(filtered); - }, [searchTerm, projects, filters]); + }, [searchTerm, projects, filters, session]); async function handleDelete(id) { const confirmed = confirm(t('projects.deleteConfirm')); @@ -109,7 +117,8 @@ export default function ProjectListPage() { setFilters({ status: 'all', type: 'all', - customer: 'all' + customer: 'all', + mine: false }); setSearchTerm(''); }; @@ -118,13 +127,14 @@ export default function ProjectListPage() { setFiltersExpanded(!filtersExpanded); }; - const hasActiveFilters = filters.status !== 'all' || filters.type !== 'all' || filters.customer !== 'all' || searchTerm.trim() !== ''; + const hasActiveFilters = filters.status !== 'all' || filters.type !== 'all' || filters.customer !== 'all' || filters.mine || searchTerm.trim() !== ''; const getActiveFilterCount = () => { let count = 0; if (filters.status !== 'all') count++; if (filters.type !== 'all') count++; if (filters.customer !== 'all') count++; + if (filters.mine) count++; if (searchTerm.trim()) count++; return count; }; @@ -170,6 +180,29 @@ export default function ProjectListPage() { {t('projects.mapView') || 'Widok mapy'} + {session?.user && ( + + )}