Exemplo n.º 1
0
        public async Task <ICommandResult> Handle(ExcluirAplicativoCommand request, CancellationToken cancellationToken)
        {
            if (!request.Valido())
            {
                _commandResult.AddFluentValidation(request.ValidationResult);
                return(_commandResult);
            }

            var aplicativo = await _aplicativoRepository.ObterPorIdComTracking(request.Id);

            if (aplicativo == null)
            {
                AdicionarErro("Id", "Nenhum Aplicativo encontrado com esse Id");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            if (!aplicativo.PermiteExcluir())
            {
                var desenvolvedores =
                    await _aplicativoRepository.ObterDesenvolvedoresRelacionados(aplicativo.Id);

                var desenvolvedoresVinculados = new StringBuilder();

                desenvolvedoresVinculados.AppendJoin(", ",
                                                     desenvolvedores.Take(desenvolvedores.Count())
                                                     .ToList()
                                                     .Select(a => a.Nome));

                AdicionarErro("Id", $@"Impossível excluir, pois este Aplicativo está vinculado aos Desenvolvedores: {desenvolvedoresVinculados}.");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            var sucesso = await _aplicativoRepository.Excluir(aplicativo);

            if (sucesso)
            {
                _commandResult.AddResult("Excluído com sucesso");
            }
            else
            {
                _commandResult.AddErro("Id", "Falha ao excluir");
            }

            return(_commandResult);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> DeleteAplicativo(int id)
        {
            var aplicativo = await _aplicativoRepository.ObterPorId(id);

            if (aplicativo == null)
            {
                return(NotFound());
            }

            var result = await _aplicativoRepository.Excluir(aplicativo);

            if (result.Equals(Resultado.Falha))
            {
                ModelState.AddModelError("Error", "Ocorreu uma falha e não foi possível deletar o aplicativo.");
                return(BadRequest(ModelState));
            }

            return(NoContent());
        }