From 7e402d352ccda28f6c6ef4a8cc56a607996f29b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:19:08 +0300 Subject: [PATCH] Classlist ve NewClassroom --- ui/src/proxy/classroom/models.ts | 4 +- ui/src/views/classroom/ClassList.tsx | 165 ++++++++++++--------------- 2 files changed, 78 insertions(+), 91 deletions(-) diff --git a/ui/src/proxy/classroom/models.ts b/ui/src/proxy/classroom/models.ts index faed54ec..61abfbdc 100644 --- a/ui/src/proxy/classroom/models.ts +++ b/ui/src/proxy/classroom/models.ts @@ -10,7 +10,7 @@ export interface User { } export interface ClassroomDto { - id: string + id?: string name: string description?: string subject?: string @@ -19,7 +19,7 @@ export interface ClassroomDto { scheduledStartTime: string actualStartTime?: string endTime?: string - duration?: number + duration?: number maxParticipants?: number isActive: boolean isScheduled: boolean diff --git a/ui/src/views/classroom/ClassList.tsx b/ui/src/views/classroom/ClassList.tsx index 88f83256..2ab6316c 100644 --- a/ui/src/views/classroom/ClassList.tsx +++ b/ui/src/views/classroom/ClassList.tsx @@ -27,13 +27,20 @@ const ClassList: React.FC = () => { const navigate = useNavigate() const { user } = useStoreState((state) => state.auth) - const newClassEntity = { + const newClassEntity: ClassroomDto = { + id: crypto.randomUUID(), name: '', description: '', subject: '', + teacherId: user.id, + teacherName: user.name, scheduledStartTime: '', duration: 60, maxParticipants: 30, + isActive: false, + isScheduled: true, + participantCount: 0, + canJoin: false, settings: { allowHandRaise: true, allowStudentChat: true, @@ -46,10 +53,7 @@ const ClassList: React.FC = () => { }, } const [classList, setClassList] = useState([]) - - const [newClassroom, setNewClassroom] = useState(newClassEntity) - const [editingClass, setEditingClass] = useState(null) - const [deletingClass, setDeletingClass] = useState(null) + const [classroom, setClassroom] = useState(newClassEntity) const [showCreateModal, setShowCreateModal] = useState(false) const [showEditModal, setShowEditModal] = useState(false) @@ -75,32 +79,16 @@ const ClassList: React.FC = () => { const handleCreateClass = async (e: React.FormEvent) => { e.preventDefault() - const newClass: ClassroomDto = { - ...newClassroom, - id: crypto.randomUUID(), - teacherId: user.id, - teacherName: user.name, - isActive: false, - isScheduled: true, - participantCount: 0, - actualStartTime: '', - canJoin: false, - settings: { - ...newClassroom.settings, - defaultMicrophoneState: newClassroom.settings.defaultMicrophoneState as 'muted' | 'unmuted', - defaultCameraState: newClassroom.settings.defaultCameraState as 'on' | 'off', - }, - } try { - await createClassroom(newClass) + await createClassroom(newClassEntity) getClassroomList() setShowCreateModal(false) - setNewClassroom(newClassEntity) + setClassroom(newClassEntity) - if (newClass.id) { - navigate(ROUTES_ENUM.protected.admin.classroom.classroom.replace(':id', newClass.id)) + if (classroom.id) { + navigate(ROUTES_ENUM.protected.admin.classroom.classroom.replace(':id', classroom.id)) } } catch (error) { console.error('Sınıf oluştururken hata oluştu:', error) @@ -109,14 +97,14 @@ const ClassList: React.FC = () => { const handleEditClass = async (e: React.FormEvent) => { e.preventDefault() - if (!editingClass) return + if (!classroom) return try { - await updateClassroom(editingClass) + await updateClassroom(classroom) getClassroomList() setShowEditModal(false) - setEditingClass(null) + setClassroom(newClassEntity) resetForm() } catch (error) { console.error('Sınıf oluştururken hata oluştu:', error) @@ -124,30 +112,30 @@ const ClassList: React.FC = () => { } const openEditModal = (classSession: ClassroomDto) => { - setEditingClass(classSession) + setClassroom(classSession) setShowEditModal(true) } const openDeleteModal = (classSession: ClassroomDto) => { - setDeletingClass(classSession) + setClassroom(classSession) setShowDeleteModal(true) } const handleDeleteClass = async () => { - if (!deletingClass) return + if (!classroom) return try { - await deleteClassroom(deletingClass.id) + await deleteClassroom(classroom.id!) getClassroomList() setShowDeleteModal(false) - setDeletingClass(null) + setClassroom(newClassEntity) } catch (error) { console.error('Sınıf silinirken hata oluştu:', error) } } const resetForm = () => { - setNewClassroom(newClassEntity) + setClassroom(newClassEntity) } const handleStartClass = (classSession: ClassroomDto) => { @@ -422,7 +410,7 @@ const ClassList: React.FC = () => { {/* Class Modal (Create/Edit) */} - {(showCreateModal || (showEditModal && editingClass)) && ( + {(showCreateModal || (showEditModal && classroom)) && (
{ type="text" required autoFocus={showCreateModal} - value={newClassroom.name} - onChange={(e) => setNewClassroom({ ...newClassroom, name: e.target.value })} + value={classroom.name} + onChange={(e) => setClassroom({ ...classroom, name: e.target.value })} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" placeholder="Örn: Matematik 101 - Diferansiyel Denklemler" /> @@ -455,10 +443,8 @@ const ClassList: React.FC = () => {