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);
            }
        }
        public async Task Handle(ClassroomHubClientConnectedEvent notification, CancellationToken cancellationToken)
        {
            try
            {
                var request = CreateStartClassroomRequest();

                await _classroomHubClient
                .SendAsync("StartClassroom", request);

                var classRoomUrl = GetClassroomUrl();

                await _bus.Publish(new ClassroomStartedEvent(),
                                   cancellationToken);

                _logger
                .LogInformation("Clase iniciada en: {Url}", classRoomUrl);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "No fue posible iniciar la sala");
            }
        }
        protected override async Task Handle(SendRequestedFileCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var path = _logicPathRepository
                           .Get(request.FileId);

                var content = FileHelper
                              .GetFileContent(path);

                var response = new FileContentResponse(request.Id, content);

                await _classroomHubClient
                .SendAsync(methodName : request.TargetMethod, response);

                _logger.LogDebug("Enviado contenido archivo {Id}",
                                 request.FileId);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "No fue posible responder a la solicitud de contenido " +
                                 "de archivo {@Request} ", request);
            }
        }