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); } }
public async Task Execute(List <AppFileEntryChange> changes) { try { var changesDto = changes .Select(AppFileEntryMapper.MapToAppFileEntryChangeDto) .ToList(); var request = new AppFileEntryChangeRequest { ClassRoomName = _sessionService.ClassroomName, Changes = changesDto }; await _classroomHubClient .SendAsync("NotifyAppFileEntryChange", request); _logger.LogInformation("Enviados {Count} al concentrador", changesDto.Count); } catch (Exception ex) { _logger.LogError(ex, "No fue posible enviar al servidor " + "los cambios {@Changes}", changes); } }