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); }
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()); }