From ab45389299b168915e3b261117842e67881d90e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Sat, 30 Aug 2025 15:33:12 +0300 Subject: [PATCH] =?UTF-8?q?classroom=20isActive=20Participant=20hatalar?= =?UTF-8?q?=C4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Classroom/ClassroomAppService.cs | 5 ++++- .../Classroom/ClassroomHub.cs | 10 ++++++---- ui/src/services/classroom/signalr.ts | 5 +++-- ui/src/views/classroom/ClassList.tsx | 8 -------- ui/src/views/classroom/RoomDetail.tsx | 2 ++ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/api/src/Kurs.Platform.Application/Classroom/ClassroomAppService.cs b/api/src/Kurs.Platform.Application/Classroom/ClassroomAppService.cs index 80f245a7..2df1b8f1 100644 --- a/api/src/Kurs.Platform.Application/Classroom/ClassroomAppService.cs +++ b/api/src/Kurs.Platform.Application/Classroom/ClassroomAppService.cs @@ -192,7 +192,10 @@ public class ClassroomAppService : PlatformAppService, IClassroomAppService throw new InvalidOperationException("Class not found"); } - var classroomSettings = JsonSerializer.Deserialize(classSession.SettingsJson); + var classroomSettings = string.IsNullOrWhiteSpace(classSession.SettingsJson) + ? new ClassroomSettingsDto() // default ayarlar + : JsonSerializer.Deserialize(classSession.SettingsJson); + if (classSession.ParticipantCount >= classSession.MaxParticipants) { diff --git a/api/src/Kurs.Platform.HttpApi.Host/Classroom/ClassroomHub.cs b/api/src/Kurs.Platform.HttpApi.Host/Classroom/ClassroomHub.cs index d7ac5977..486751dc 100644 --- a/api/src/Kurs.Platform.HttpApi.Host/Classroom/ClassroomHub.cs +++ b/api/src/Kurs.Platform.HttpApi.Host/Classroom/ClassroomHub.cs @@ -42,7 +42,7 @@ public class ClassroomHub : Hub } [HubMethodName("JoinClass")] - public async Task JoinClassAsync(Guid sessionId, Guid userId, string userName, bool isTeacher) + public async Task JoinClassAsync(Guid sessionId, Guid userId, string userName, bool isTeacher, bool isActive) { var classroom = await _classSessionRepository.GetAsync(sessionId); if (classroom == null) @@ -51,7 +51,9 @@ public class ClassroomHub : Hub return; } - var classroomSettings = JsonSerializer.Deserialize(classroom.SettingsJson); + var classroomSettings = string.IsNullOrWhiteSpace(classroom.SettingsJson) + ? new ClassroomSettingsDto() // default ayarlar + : JsonSerializer.Deserialize(classroom.SettingsJson); var participant = await _participantRepository.FirstOrDefaultAsync( x => x.SessionId == sessionId && x.UserId == userId @@ -68,7 +70,7 @@ public class ClassroomHub : Hub classroomSettings.DefaultMicrophoneState == "muted", classroomSettings.DefaultCameraState == "off", false, - true + isActive ); participant.UpdateConnectionId(Context.ConnectionId); await _participantRepository.InsertAsync(participant, autoSave: true); @@ -150,7 +152,7 @@ public class ClassroomHub : Hub x => x.SessionId == sessionId && x.UserId == userId ); - if (participant == null) + if (participant != null) { participant.IsActive = false; await _participantRepository.UpdateAsync(participant, autoSave: true); diff --git a/ui/src/services/classroom/signalr.ts b/ui/src/services/classroom/signalr.ts index fd03f660..403d4b56 100644 --- a/ui/src/services/classroom/signalr.ts +++ b/ui/src/services/classroom/signalr.ts @@ -110,16 +110,17 @@ export class SignalRService { userId: string, userName: string, isTeacher: boolean, + isActive: boolean ): Promise { if (!this.isConnected) { console.log('Error starting SignalR connection join class for', userName) return } - console.log('Joining class session:', sessionId, 'as', userName, 'isTeacher:', isTeacher) + console.log('Joining class session:', sessionId, 'as', userName, 'isTeacher:', isTeacher, 'isActive:', isActive) try { - await this.connection.invoke('JoinClass', sessionId, userId, userName, isTeacher) + await this.connection.invoke('JoinClass', sessionId, userId, userName, isTeacher, isActive) } catch (error) { console.error('Error joining class:', error) } diff --git a/ui/src/views/classroom/ClassList.tsx b/ui/src/views/classroom/ClassList.tsx index f371044c..e7c23186 100644 --- a/ui/src/views/classroom/ClassList.tsx +++ b/ui/src/views/classroom/ClassList.tsx @@ -189,14 +189,6 @@ const ClassList: React.FC = () => { } } - // const canJoinClass = (actualStartTime: string) => { - // const actualed = new Date(actualStartTime) - // const now = new Date() - // const tenMinutesBefore = new Date(actualed.getTime() - 10 * 60 * 1000) //10 dakika öncesine kadar - // const twoHoursAfter = new Date(actualed.getTime() + 2 * 60 * 60 * 1000) // 2 saat sonrasına kadar - // return now >= tenMinutesBefore && now <= twoHoursAfter - // } - const widgets = () => { return { totalCount: classList.length, diff --git a/ui/src/views/classroom/RoomDetail.tsx b/ui/src/views/classroom/RoomDetail.tsx index a7c0c6a2..078116b8 100644 --- a/ui/src/views/classroom/RoomDetail.tsx +++ b/ui/src/views/classroom/RoomDetail.tsx @@ -404,6 +404,7 @@ const RoomDetail: React.FC = () => { user.id, user.name, user.role === 'teacher', + true ) } catch (error) { console.error('Failed to initialize services:', error) @@ -646,6 +647,7 @@ const RoomDetail: React.FC = () => { studentId, randomName, false, // öğrenci + true // aktif ) }