import axiosInstance from '../../src/axiosSecure'; import { useEffect, useState } from "react"; import { toast } from 'react-toastify'; import { useRouter } from "next/router"; import Link from "next/link"; import DayOfWeek from "../DayOfWeek"; import { ReportType } from "@prisma/client"; const common = require('src/helpers/common'); import { useSession } from "next-auth/react" import dynamic from 'next/dynamic'; const ReactQuill = dynamic(() => import('react-quill'), { ssr: false, loading: () =>

Loading...

, }); import 'react-quill/dist/quill.snow.css'; // import styles // ------------------ ExperienceForm ------------------ // This component is used to create and edit // model: // model Report { // id Int @id @default(autoincrement()) // date DateTime // publisher Publisher @relation(fields: [publisherId], references: [id], onDelete: Cascade) // publisherId String // assignment Assignment @relation(fields: [assignmentId], references: [id], onDelete: Cascade) // assignmentId Int // placementCount Int? // videoCount Int? // returnVisitInfoCount Int? // conversationCount Int? // experienceInfo String? // } export default function ExperienceForm({ publisherId, assgnmentId, existingItem, onDone }) { const { data: session, status } = useSession() const [pubId, setPublisher] = useState(publisherId); const router = useRouter(); //get the user from session if publisherId is null useEffect(() => { if (!publisherId) { if (session) { setPublisher(session.user.id); } } }, [publisherId, session]); const [item, setItem] = useState(existingItem || { experienceInfo: "", assignmentId: assgnmentId, publisherId: publisherId, date: new Date(), placementCount: 0, videoCount: 0, returnVisitInfoCount: 0, conversationCount: 0 }); const [locations, setLocations] = useState([]); useEffect(() => { const fetchLocations = async () => { try { console.log("fetching locations"); const { data } = await axiosInstance.get("/api/data/locations"); setLocations(data); item.locationId = data[0].id; console.log(data); } catch (error) { console.error(error); } }; if (!locations.length) { fetchLocations(); } }, []); const handleLocationChange = ({ target }) => { setItem({ ...item, [target.name]: target.value }); }; const handleChange = (content, delta, source, editor) => { item.experienceInfo = content; setItem(item); console.log(editor.getHTML()); // rich text }; const handleSubmit = async (e) => { e.preventDefault(); item.publisher = { connect: { id: pubId } }; item.location = { connect: { id: parseInt(item.locationId) } }; item.type = ReportType.Experience; delete item.locationId; try { const response = await axiosInstance.post('/api/data/reports', item); console.log(response); toast.success("Случката е записана. Благодаря!"); setTimeout(() => { if (onDone) { onDone(); } else { router.push(`/dash`); } }, 3000); // Delay for 3 seconds } catch (error) { console.log(error); toast.error("Error saving report"); } } const modules = { toolbar: { container: [ ['bold', 'italic', 'underline'], // Basic text formats [{ 'list': 'ordered' }, { 'list': 'bullet' }], // Lists ['link', 'image'] // Media ], } }; return (
{locations && ( )}
{/* Increased bottom margin */}
{/* Adjusted layout and added top margin */} Отказ
); }