public async Task <DeleteVideoCommandResponse> Handle(DeleteVideoCommand request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); if (server is null) { _logger.LogInformation($"Não foi encontrado servidor com id {request.ServerId}."); return(new DeleteVideoCommandResponse(false, new ServerNotFoundException(request.ServerId))); } var currentVideo = server.Videos.FirstOrDefault(x => x.Id == request.VideoId); if (currentVideo is null) { _logger.LogInformation($"Não foi encontrado video com id {request.ServerId}."); return(new DeleteVideoCommandResponse(false, new VideoNotFoundException(request.VideoId))); } await _videoRepository.RemoveContent(currentVideo.Path); _serverRepository.RemoveVideo(currentVideo); await _serverRepository.SaveChangesAsync(); return(new DeleteVideoCommandResponse(true, null)); }
public async Task <UpdateServerCommandResponse> Handle(UpdateServerCommand request, CancellationToken cancellationToken) { var validationResult = await _validator.ValidateAsync(request); if (!validationResult.IsValid) { var errors = validationResult.Errors .Select(x => x.ErrorMessage); return(new UpdateServerCommandResponse(null, errors)); } Server currentServer = await _serverRepository.GetAsync(request.Id); if (currentServer is null) { var errors = new List <string> { $"Servidor com identificador {request.Id} não encontrado." }; return(new UpdateServerCommandResponse(null, errors)); } _logger.LogInformation("Atualizando servidor com id {0}", currentServer.Id); currentServer.ChangeInfo(request.Name, request.IP, request.Port); _serverRepository.Update(currentServer); await _serverRepository.SaveChangesAsync(); _logger.LogInformation("Servidor com id {0} atualizado.", currentServer.Id); return(new UpdateServerCommandResponse(currentServer, null)); }
public async Task <CreateVideoCommandResponse> Handle(CreateVideoCommand request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); if (server is null) { var message = $"Não foi encontrado servidor com id {request.ServerId}."; return(FormatResponse(message, null)); } try { String path = await _videoRepository.SaveContent(request.Content); var newVideo = server.AddVideo(path, request.Description); _serverRepository.Update(server); await _serverRepository.SaveChangesAsync(); return(new CreateVideoCommandResponse(newVideo, null)); } catch (Exception ex) { var message = $"Não foi possível salvar o conteúdo do vídeo {request.Description}."; return(FormatResponse(message, ex)); } }
public async Task <String> Handle(GetVideoContentQuery request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); var video = server?.Videos?.FirstOrDefault(x => x.Id == request.VideoId); return(_videoRepository.GetContent(video?.Path)); }
public async Task <List <Video> > Handle(ListVideosQuery request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); if (server is null || server.Videos is null) { return(new List <Video>(0)); } return(server.Videos.ToList()); }
public async Task <bool> Handle(CheckServerStatusCommand request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); if (server is null) { _logger.LogInformation($"Não foi encontrado servidor com id {request.ServerId}."); return(false); } _logger.LogInformation("Tentativa de chamar o servidor {0} com o endereço {1}:{2}", server.Id, server.IP, server.Port); try { return(server.IsAvailable()); } catch (Exception e) { _logger.LogError("Ocorreu um erro ao tentar chamar o servidor {0}. Erro: {1}. Stacktrace: {2}", server.Name, e.Message, e.StackTrace); return(false); } }
public async Task <RecoverVideoCommandResponse> Handle(RecoverVideoCommand request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId, true); if (server is null) { return(FormatResponse($"Não foi encontrado servidor com id {request.ServerId}.")); } var currentVideo = server.Videos.FirstOrDefault(x => x.Id == request.VideoId); if (currentVideo is null) { return(FormatResponse($"Não foi encontrado video com id {request.VideoId}.")); } //TODO: recuperar dados de arquivo não é possível após exclusão, teria que mover para uma "lixeira lógica" por exemplo _serverRepository.RecoverVideo(currentVideo); await _serverRepository.SaveChangesAsync(); return(new RecoverVideoCommandResponse(true, null)); }
public async Task <Video> Handle(GetVideoQuery request, CancellationToken cancellationToken) { var server = await _serverRepository.GetAsync(request.ServerId); return(server?.Videos?.FirstOrDefault(x => x.Id == request.VideoId)); }