// GET <controller>/5
        /// <summary>
        /// Todas as Propostas do Partido
        /// </summary>
        /// <param name="partido">Sigla do Partido</param>
        /// <returns>Todas as Propostas dos Candidatos do Partido</returns>
        public IEnumerable<Models.Proposta> GetByPartido(string estado, string partido)
        {
            var candidatos = Transparencia.Candidato.GetAll(estado).Where(a => a.partido.ToLower() == partido.ToLower()).ToList();

            var lstPropostas = new List<Models.Proposta>();

            //Abre Conexao com a base
            using (Entities db = new Entities())
            {
                //Pega todas as propostas
                var dbPropostas = db.Propostas.ToList();

                foreach (var proposta in dbPropostas)
                {
                    Models.Proposta nProposta = proposta;
                    var candidato = candidatos.FirstOrDefault(c => c.id == proposta.CandidatoID);

                    if (candidato != null)
                    {
                        nProposta.Candidato = candidato;
                        lstPropostas.Add(nProposta);
                    }
                }

                lstPropostas = lstPropostas.Where(x => x.Candidato.Estado.ToUpper() == estado.ToUpper()).ToList();
            }

            return lstPropostas;
        }
        public Models.Proposta Post([FromBody]PropostaPost value)
        {
            var proposta = new DAL.Proposta(){
              CandidatoID = value.CandidatoID,
              Texto = value.Texto
            };

            using (Entities db = new Entities())
            {

                db.Propostas.Add(proposta);
                db.SaveChanges();
            }

            return (Models.Proposta)proposta;
        }
        // GET api/<controller>
        /// <summary>
        /// Obter Feed de Propostas
        /// </summary>
        /// <returns></returns>
        public IEnumerable<Models.Proposta> Get(string estado = "", string nome = "")
        {
            var candidatos = Transparencia.Candidato.GetAll(estado);

            if (!string.IsNullOrEmpty(nome)){
                candidatos = candidatos.Where(c => c.nome.ToLower().Contains(nome.ToLower())).ToList();
            }

            var lstPropostas = new List<Models.Proposta>();

            //Abre Conexao com a base
            using (Entities db = new Entities())
            {
                //Pega todas as propostas
                var dbPropostas = db.Propostas.ToList();

                foreach (var proposta in dbPropostas)
                {
                    Models.Proposta nProposta = proposta;
                    var candidato = candidatos.FirstOrDefault(c => c.id == proposta.CandidatoID);

                    if (candidato != null)
                    {
                        var gostados = db.GostadoCounter(nProposta.Id).FirstOrDefault();
                        if (gostados != null && gostados.Gostado != null)
                        {
                            nProposta.Gostados = gostados.Gostado.Value;
                            nProposta.NaoGostados = gostados.NaoGostado.Value;
                        }

                        nProposta.Candidato = candidato;
                        lstPropostas.Add(nProposta);
                        
                    }
                }

                lstPropostas = lstPropostas.Where(x => x.Candidato.Estado.ToUpper() == estado.ToUpper()).ToList();
            }

            return lstPropostas;
        }
        // PUT <controller>/5
        /// <summary>
        /// Like do Eleitor na Proposta
        /// </summary>
        /// <param name="id">Id da Proposta</param>
        /// <param name="fbid">Facebook Id do Eleitor</param>
        public Models.Proposta Put([FromBody]GosteiPost value)//TODO: Lucão
        {
            var proposta = new Models.Proposta();

            using (Entities db = new Entities())
            {
                var gostados = db.SP_Gostar(value.FBID, Convert.ToInt32(value.PropostaID), value.Gostato).First();
                proposta.Gostados = gostados.Gostado.Value;
                proposta.NaoGostados = gostados.NaoGostados.Value;
                proposta.Id = Convert.ToInt32(value.PropostaID);
            }

            return proposta;
        }