示例#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);
            }
        }
        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);
            }
        }