public void ExcluirMotivoReprovacao(Candidato c)
        {
            CandidaturaReprovada reprovacao = db.CandidaturasReprovadas.FirstOrDefault(x => x.CodigoEleicao == c.CodigoEleicao && x.FuncionarioId == c.FuncionarioId);

            if (reprovacao != null)
            {
                db.CandidaturasReprovadas.Remove(reprovacao);
            }

            db.SaveChanges();
        }
 public CandidaturaReprovadaDTO(CandidaturaReprovada cand)
 {
     if (cand == null)
     {
         return;
     }
     Codigo               = cand.Codigo;
     FuncionarioId        = cand.FuncionarioId;
     MatriculaFuncionario = cand.Candidato?.Funcionario?.MatriculaFuncionario;
     CodigoEleicao        = cand.CodigoEleicao;
     Motivo               = cand.Motivo;
 }
        public CandidaturaReprovada ReprovarCandidatura(CandidaturaReprovada candidatura)
        {
            candidatura.Codigo          = 0;
            db.Entry(candidatura).State = System.Data.Entity.EntityState.Added;

            try
            {
                Candidato cand = GetCandidato(candidatura.FuncionarioId, candidatura.CodigoEleicao);

                db.SaveChanges();

                string   modulo = cand.Eleicao.CodigoModulo == 2 ? "a Comissão Interna de Trabalhadores" : "a CIPA";
                EmailDTO email  = new EmailDTO
                {
                    Message = EmailService.ReplaceParams(Resources.Emails.EmailReprovacaoCandidatura,
                                                         Tuple.Create("@MODULO", modulo), Tuple.Create("@NOME", cand.Funcionario.Nome),
                                                         Tuple.Create("@CARGO", cand.Funcionario.Cargo), Tuple.Create("@AREA", cand.Funcionario.Area),
                                                         Tuple.Create("@MOTIVO", candidatura.Motivo)),
                    To = new List <string> {
                        cand.Funcionario.Email
                    },
                    Copy = (cand.Funcionario != null && cand.Funcionario.Gestor != null) ?
                           new List <string> {
                        cand.Funcionario.Gestor.Email
                    } : new List <string> {
                    },
                    Subject = "Candidatura Reprovada"
                };

                Thread th = new Thread(EmailService.Send);
                th.Start(email);
            }
            catch (Exception e)
            {
                if (CandidatoExiste(candidatura.FuncionarioId, candidatura.CodigoEleicao))
                {
                    throw new CandidatoNaoEncontradoException();
                }
                else
                {
                    throw e;
                }
            }

            Candidato c = db.Candidatos.Find(candidatura.FuncionarioId, candidatura.CodigoEleicao);

            c.Validado = false;
            db.SaveChanges();
            return(candidatura);
        }
        public IHttpActionResult ReprovarCandidatura(int funcionarioId, int codEleicao, CandidaturaReprovada reprovacao)
        {
            if (!ModelState.IsValid)
            {
                return(Content(HttpStatusCode.BadRequest, ModelState));
            }

            if (funcionarioId != reprovacao.FuncionarioId || codEleicao != reprovacao.CodigoEleicao)
            {
                return(Content(HttpStatusCode.BadRequest, "Parâmetros da Requisição inconsistentes!"));
            }

            try
            {
                return(Ok(new CandidaturaReprovadaDTO(candidatosService.ReprovarCandidatura(reprovacao))));
            }
            catch
            {
                return(Content(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
            }
        }