import { useEffect, useState } from "react"; import axiosInstance from "../../../src/axiosSecure"; import { useRouter } from "next/router"; import Link from "next/link"; import { useSession } from "next-auth/react"; import Layout from "../../../components/layout"; import ProtectedRoute from "../../../components/protectedRoute"; import { UserRole, EventLogType } from "@prisma/client"; const timeFilters = [ { label: "1 седмица", value: 7 }, { label: "1 месец", value: 30 }, { label: "3 месеца", value: 90 }, { label: "Всички", value: null }, ]; export default function EventLogList() { const [eventLogs, setEventLog] = useState([]); const [requestedAssignments, setRequestedAssignments] = useState([]); const [locations, setLocations] = useState([]); const [showOpenRequests, setShowOpenRequests] = useState(false); const [selectedTimeFilter, setSelectedTimeFilter] = useState(null); // Time filter state const { data: session } = useSession(); useEffect(() => { const fetchLocations = async () => { try { const where = encodeURIComponent(JSON.stringify({ OR: [ { type: EventLogType.AssignmentReplacementAccepted }, { type: EventLogType.AssignmentReplacementManual }, { type: EventLogType.AssignmentReplacementRequested } ], })); const { data: eventLogsData } = await axiosInstance.get( `/api/data/prisma/eventLog?where=${where}&include={"publisher":{"select":{"firstName":true,"lastName":true}},"shift":{"include":{"assignments":{"include":{"publisher":{"select":{"firstName":true,"lastName":true}}}}}}}` ); setEventLog(eventLogsData); const { data: shiftsData } = await axiosInstance.get( `/api/data/prisma/assignment?where={"publicGuid":{"not":"null"}}&include={"shift":{"include":{"assignments":{"include":{"publisher":{"select":{"firstName":true,"lastName":true}}}}}},"publisher":{"select":{"firstName":true,"lastName":true}}}` ); setRequestedAssignments(shiftsData); } catch (error) { console.error(error); } }; if (!locations.length) { fetchLocations(); } }, []); // Filter events based on the selected time range const filteredEventLogs = eventLogs.filter((event) => { if (!selectedTimeFilter) return true; const eventDate = new Date(event.date); const cutoffDate = new Date(); cutoffDate.setDate(cutoffDate.getDate() - selectedTimeFilter); return eventDate >= cutoffDate; }); return (

Заявки за заместване

{/* Time Filter Pills */}
{timeFilters.map((filter) => ( ))}
{!showOpenRequests && filteredEventLogs.map((event) => ( ))} {showOpenRequests && requestedAssignments.map((assignment) => ( ))}
На От Дата Смяна Събитие
{new Date(event.date).toLocaleString("bg")} {event.publisher?.firstName && event.publisher?.lastName ? `${event.publisher.firstName} ${event.publisher.lastName}` : "???"} {new Date(event.shift?.startTime).toLocaleString("bg")} {event.shift?.assignments.map((ass) => (
{ass.publisher.firstName + " " + ass.publisher.lastName}
))}
{event.content}
{new Date(assignment.date).toLocaleString("bg")} {assignment.publisher.firstName + " " + assignment.publisher.lastName} {new Date(assignment.shift.startTime).toLocaleString("bg")} {assignment.shift.assignments.map((ass) => (
{ass.publisher.firstName + " " + ass.publisher.lastName}
))}
); }