public async Task Execute(IncluirAnuncioInput incluirAnuncioInput) { List <MarcaVeiculo> marcas = await _marcaVeiculoService.Buscar(); var marcaSelecionada = marcas.FirstOrDefault(marca => marca.ID == incluirAnuncioInput.IdMarca); if (marcaSelecionada == null) { _outputHandler.NotFound($"Marca selecionada inválida."); return; } List <ModeloVeiculo> modelos = await _modeloVeiculoService.Buscar(marcaSelecionada.ID); var modeloSelecionado = modelos.FirstOrDefault(modelo => modelo.ID == incluirAnuncioInput.IdModelo && modelo.MakeID == incluirAnuncioInput.IdMarca); if (modeloSelecionado == null) { _outputHandler.NotFound($"Modelo selecionado inválido."); return; } List <VersaoVeiculo> versoes = await _versaoVeiculoService.Buscar(modeloSelecionado.ID); var versaoSelecionada = versoes.FirstOrDefault(versao => versao.ID == incluirAnuncioInput.IdVersao && versao.ModelID == incluirAnuncioInput.IdModelo); if (versaoSelecionada == null) { _outputHandler.NotFound($"Versão selecionada inválida."); return; } var anuncio = _entityFactory.NovoAnuncio( marcaSelecionada.Name, modeloSelecionado.Name, versaoSelecionada.Name, incluirAnuncioInput.Ano, incluirAnuncioInput.Quilometragem, incluirAnuncioInput.Observacao); await _anuncioRepository.Add(anuncio); if (anuncio.ID == 0) { _outputHandler.NotFound($"Ocorreu um erro ao criar o anuncio, por favor tente novamente."); return; } var anuncioJson = JsonConvert.SerializeObject(anuncio); DistributedCacheEntryOptions opcoesCache = new DistributedCacheEntryOptions(); opcoesCache.SetAbsoluteExpiration(TimeSpan.FromMinutes(5)); _cache.SetString($"Anuncio:{anuncio.ID}", anuncioJson, opcoesCache); IncluirAnuncioOutput incluirAnuncioOutput = new IncluirAnuncioOutput(anuncio); _outputHandler.Default(incluirAnuncioOutput); }
public void Default(IncluirAnuncioOutput incluirAnuncioOutput) { var anuncio = new AnuncioModel { ID = incluirAnuncioOutput.Anuncio.ID, Marca = incluirAnuncioOutput.Anuncio.Marca, Modelo = incluirAnuncioOutput.Anuncio.Modelo, Versao = incluirAnuncioOutput.Anuncio.Versao, Ano = incluirAnuncioOutput.Anuncio.Ano, Quilometragem = incluirAnuncioOutput.Anuncio.Quilometragem, Observacao = incluirAnuncioOutput.Anuncio.Observacao }; var incluirAnuncioResponse = new IncluirAnuncioResponse(anuncio); ViewModel = new OkObjectResult(incluirAnuncioResponse); }