Exemplo n.º 1
0
        public async Task NotifyAppFileEntryChange(AppFileEntryChangeRequest request)
        {
            if (request == null)
            {
                throw new HubException("Solicitud no válida");
            }

            var classRoomName = request.ClassRoomName;
            var changes       = request.Changes;

            try
            {
                if (!ClassroomRepository.TryGetClassroom(classRoomName, out var classroom))
                {
                    throw new HubException("Sala no encontrada");
                }

                // Notificar a los clientes de la clase el cambio
                await Clients
                .Group(classroom.Name)
                .NewAppFileEntryChanges(changes);

                // Actualiza las entidades de archivo de la clase
                classroom
                .UpdateAppFileEntries(changes);

                Logger.LogDebug("Registrado cambio {Classroom} {@Changes} ",
                                classRoomName, changes);
            }
            catch (Exception ex) when(ex is not HubException)
            {
                Logger.LogError(ex, "No fue posible registar el cambio {Classroom} {@Changes} ",
                                classRoomName, changes);
            }
        }