Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }