public IActionResult Delete(int id, PesquisaExameViewModel pesquisaExame, IFormCollection collection)
        {
            var exame = _exameContext.GetById(id);

            try
            {
                _exameContext.Delete(id);

                var situacoes               = _situacaoPessoaContext.GetByIdPaciente(exame.Paciente.Idpessoa);
                var exames                  = _exameContext.GetByIdPaciente(exame.Paciente.Idpessoa);
                var pessoaTrabalhaEstado    = _pessoaTrabalhaEstadoContext.GetByIdPessoa(exame.Paciente.Idpessoa);
                var pessoaTrabalhaMunicipio = _pessoaTrabalhaMunicipioContext.GetByIdPessoa(exame.Paciente.Idpessoa);
                var examesPaciente          = _exameContext.GetByIdPaciente(exame.Paciente.Idpessoa);
                var examesNotificados       = _exameContext.GetByIdAgente(exame.Paciente.Idpessoa, DateTime.MinValue, DateTime.MaxValue);
                if (situacoes.Count == 1 && pessoaTrabalhaEstado == null && pessoaTrabalhaMunicipio == null &&
                    examesPaciente.Count == 0 && examesNotificados.Count == 0)
                {
                    var situacao = situacoes.First();
                    _situacaoPessoaContext.Delete(situacao.Idpessoa, situacao.IdVirusBacteria);
                    _pessoaContext.Delete(exame.Paciente.Idpessoa);
                }
            }
            catch
            {
                TempData["mensagemErro"] = "Houve problemas na exclusão do exame. Tente novamente em alguns minutos." +
                                           " Se o erro persistir, entre em contato com a Fábrica de Software da UFS pelo email [email protected]";
                return(RedirectToAction("Index", "Exame", pesquisaExame));
            }

            TempData["mensagemSucesso"] = "O Exame foi removido com sucesso!";
            return(RedirectToAction("Index", "Exame", pesquisaExame));
        }
        public ActionResult Delete(string entidade, int idPessoa)
        {
            var agenteEstado    = _pessoaTrabalhaEstadoService.GetByIdPessoa(idPessoa);
            var agenteMunicipio = _pessoaTrabalhaMunicipioService.GetByIdPessoa(idPessoa);

            if (agenteEstado != null)
            {
                _pessoaTrabalhaEstadoService.Delete(idPessoa);
            }
            if (agenteMunicipio != null)
            {
                _pessoaTrabalhaMunicipioService.Delete(idPessoa);
            }

            var exames = _exameService.GetByIdPaciente(idPessoa);

            if (exames.Count() == 0)
            {
                var examesRealizados = _exameService.GetByIdAgente(idPessoa, DateTime.MinValue, DateTime.MaxValue);
                var usuario          = _usuarioService.GetByIdPessoa(idPessoa);
                if (usuario != null && examesRealizados.Count() == 0)
                {
                    _recuperarSenhaService.DeleteByUser(usuario.IdUsuario);
                    _usuarioService.Delete(usuario.IdUsuario);
                }
                _pessoaService.Delete(idPessoa);
            }
            else
            {
                var usuario = _usuarioService.GetByIdPessoa(idPessoa);
                usuario.TipoUsuario = 0;
                _usuarioService.Update(usuario);
            }

            int responsavel;

            if (entidade.Equals("Agente"))
            {
                responsavel = 0;
            }
            else
            {
                responsavel = 1;
            }

            TempData["responseOp"] = entidade + " excluído com sucesso!";

            return(RedirectToAction(nameof(IndexApproveAgent), new { ehResponsavel = responsavel }));
        }