import { useState } from 'react'; import Layout from "../../../components/layout"; import ProtectedRoute from '../../../components/protectedRoute'; import { UserRole } from '@prisma/client'; import axiosServer from '../../../src/axiosServer'; import common from '../../../src/helpers/common'; import { filterPublishers, /* other functions */ } from '../../api/index'; function ContactsPage({ publishers }) { const [searchQuery, setSearchQuery] = useState(''); const filteredPublishers = publishers.filter((publisher) => publisher.firstName.toLowerCase().includes(searchQuery.toLowerCase()) || publisher.lastName.toLowerCase().includes(searchQuery.toLowerCase()) || publisher.email.toLowerCase().includes(searchQuery.toLowerCase()) || publisher.phone?.toLowerCase().includes(searchQuery.toLowerCase()) ); return (

Статистика

setSearchQuery(e.target.value)} className="border border-gray-300 rounded-md px-2 py-2 mb-4 w-full text-base md:text-sm" />
{filteredPublishers.map((pub) => ( ))}
Име Възможности Участия
{pub.firstName} {pub.lastName} {pub.currentMonthAvailabilityDaysCount || 0} | {pub.currentMonthAvailabilityHoursCount || 0}
{pub.currentWeekAssignments || 0} {pub.currentMonthAssignments || 0} {pub.previousMonthAssignments || 0}
); } export default ContactsPage; export const getServerSideProps = async (context) => { const dateStr = new Date().toISOString().split('T')[0]; let publishers = await filterPublishers('id,firstName,lastName,isactive,desiredShiftsPerMonth', "", new Date(), true, true, false); // const axios = await axiosServer(context); // const { data: publishers } = await axios.get(`api/?action=filterPublishers&assignments=true&availabilities=true&date=${dateStr}&select=id,firstName,lastName,isactive,desiredShiftsPerMonth`); // api/index?action=filterPublishers&assignments=true&availabilities=true&date=2024-03-14&select=id%2CfirstName%2ClastName%2Cisactive%2CdesiredShiftsPerMonth publishers.forEach(publisher => { publisher.desiredShiftsPerMonth = publisher.desiredShiftsPerMonth || 0; publisher.assignments = publisher.assignments || []; publisher.availabilities = publisher.availabilities || []; //serialize dates in publisher.assignments and publisher.availabilities publisher.assignments.forEach(assignment => { if (assignment.shift && assignment.shift.startTime) { assignment.shift.startTime = assignment.shift.startTime.toISOString(); assignment.shift.endTime = assignment.shift.endTime.toISOString(); } }); publisher.availabilities.forEach(availability => { if (availability.startTime) { availability.startTime = availability.startTime.toISOString(); availability.endTime = availability.endTime.toISOString(); } }); }); return { props: { publishers, }, }; };