import React, { useState, useEffect } from "react"; import axios from "axios"; import NavbarKlasen from "../../../components/navbarKlasen/NavbarKlasen.jsx"; import { Link, useParams } from "react-router-dom"; const PredmetenNastavnikSoopstenijaView = () => { const [klasovi, setKlasovi] = useState([]); const [roditeli, setRoditeli] = useState([]); const [klasen, setKlasen] = useState(null); const [students, setStudents] = useState([]); const [soopstenija, setSoopstenija] = useState([]); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const [classInfo, setClassInfo] = useState(null); const { klasId } = useParams(); const [predmetenNastavnik, setPredmetenNastavnik] = useState(null); useEffect(() => { axios .get("http://localhost:8080/api/auth/me", { withCredentials: true }) .then((res) => setPredmetenNastavnik(res.data)) .catch((err) => console.log(err)); }, []); useEffect(() => { if (!predmetenNastavnik?.id) return; const fetchData = async () => { try { setLoading(true); const [resKlasovi] = await Promise.all([ axios.get( `http://localhost:8080/api/users/nastavnici/predmetniNastavnici/${predmetenNastavnik.id}/classes`, { withCredentials: true } ), ]); setKlasovi(resKlasovi.data); const resStudents = await axios.get( `http://localhost:8080/api/klas/${klasId}/students`, { withCredentials: true, } ); const studentsData = resStudents.data; setStudents(studentsData); const parentIds = [ ...new Set(studentsData.map((s) => s.staratelId).filter((id) => id)), ]; const parentRequests = parentIds.map((id) => axios.get(`http://localhost:8080/api/users/roditeli/${id}`, { withCredentials: true, }) ); const parentResponses = await Promise.all(parentRequests); const parentsData = parentResponses.map((res) => res.data); setRoditeli(parentsData); const [resClass, resKlasen, resSoopstenija] = await Promise.all([ axios.get(`http://localhost:8080/api/klas/${klasId}`, { withCredentials: true, }), axios.get( `http://localhost:8080/api/klas/${klasId}/klasenRakovoditel`, { withCredentials: true, } ), axios.get(`http://localhost:8080/api/klas/${klasId}/soopstenija`, { withCredentials: true, }), ]); setClassInfo(resClass.data); setKlasen(resKlasen.data); setStudents(resStudents.data); setSoopstenija(resSoopstenija.data); } catch (err) { console.log(err); } finally { setLoading(false); } }; fetchData(); }, [predmetenNastavnik?.id, klasId]); const formatDate = (dateString) => { if (!dateString) return ""; const date = new Date(dateString); return date.toLocaleDateString("mk-MK", { day: "2-digit", month: "2-digit", year: "numeric", }); }; return ( <>

Клас: {classInfo?.oddelenie} {classInfo?.paralelka}

{loading ? (
Вчитување...
) : klasovi.length > 0 ? ( klasovi.map((k) => ( {k.oddelenie}-{k.paralelka} )) ) : (
Нема класови
)}
  • {" "} Соопштенија за класот{" "}
  • {" "} Неделни активности
  • {" "} Распоред
  • {" "} Студенти
  • {" "} Види слушани предмети
{console.log(soopstenija)} {soopstenija.length > 0 ? ( soopstenija.map((s) => (
{klasen?.ime} {klasen?.prezime} {formatDate(s.kreiranoNa)}
{s.naslov}

{s.sodrzina}

)) ) : (

Нема активни соопштенија.

)}

Информации за класот

Класен раководител

{klasen ? `${klasen.ime} ${klasen.prezime}` : "Не е назначен"}

Ученици {students.length}

    {students.map((student) => (
  • {student.ime} {student.prezime}
  • ))} {students.length === 0 &&
  • Нема запишани ученици
  • }

Родители {roditeli.length}

    {roditeli.map((parent) => (
  • {parent.ime} {parent.prezime}
  • ))} {roditeli.length === 0 && (
  • Нема податоци за родители
  • )}
); }; export default PredmetenNastavnikSoopstenijaView;