public ActionResult Resultados(int Votacion_ID)
        {
            try { this.VotacionesProxy = new ADESCOMBUSINESS.Areas.Votaciones.Methods.VotacionesBusiness((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"]); }
            catch (Exception ex) { return(RedirectToAction("SesionExpired", "Inicio", new { Area = "", Mensaje = ex.Message })); }

            ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones Votacion = new ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones();
            Votacion = VotacionesProxy.GetByID(Votacion_ID);

            if (Votacion.VOT_Estatus.Equals("CAN") || Votacion.VOT_Estatus.Equals("ACT"))
            {
                @ViewBag.Error = "No hay resultados";
                return(View("NoResults"));
            }
            else
            {
                //Llenar ResResultadoCompuesto
                ADESCOMBUSINESS.Areas.Votaciones.Models.ResResultadoCompuesto Resultado = new ADESCOMBUSINESS.Areas.Votaciones.Models.ResResultadoCompuesto();

                Resultado.Votacion  = Votacion;
                Resultado.Preguntas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.ResPreguntaCompuesta>();

                //Traer preguntas de la votación
                List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas> ListaPreguntas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas>();
                ListaPreguntas = ADESCOMBUSINESS.Areas.Votaciones.Methods.PreguntasBusiness.GetByVotacion_ID((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"], Votacion_ID);

                //bool primera = true;
                int participaron = 0;
                foreach (ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas Pregunta in ListaPreguntas)
                {
                    List <ADESCOMBUSINESS.Areas.Votaciones.Models.ResRespuestaCompuesta> RespuestasCompuestas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.ResRespuestaCompuesta>();
                    RespuestasCompuestas = ADESCOMBUSINESS.Areas.Votaciones.Methods.OpcRespuestasBusiness.GetResultsByPregunta_ID((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"], Votacion_ID, Pregunta.Pregunta_ID);

                    ADESCOMBUSINESS.Areas.Votaciones.Models.ResPreguntaCompuesta PreguntaCompuesta = new ADESCOMBUSINESS.Areas.Votaciones.Models.ResPreguntaCompuesta();
                    PreguntaCompuesta.Pregunta   = Pregunta;
                    PreguntaCompuesta.Respuestas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.ResRespuestaCompuesta>();
                    foreach (ADESCOMBUSINESS.Areas.Votaciones.Models.ResRespuestaCompuesta RespuestaCompuesta in RespuestasCompuestas)
                    {
                        PreguntaCompuesta.Respuestas.Add(RespuestaCompuesta);
                        //if (primera == true)
                        //participaron++;
                        participaron += RespuestaCompuesta.Votos;
                    }

                    Resultado.Preguntas.Add(PreguntaCompuesta);
                    //primera = false;
                }

                if (Votacion.VOT_Padron <= 0)
                {
                    ViewBag.Participacion = "0 (0.00%)";
                }
                else
                {
                    decimal porcPart = decimal.Round((decimal)(participaron * 100) / (decimal)Votacion.VOT_Padron, 2);
                    ViewBag.Participacion = participaron.ToString() + " (" + porcPart.ToString() + "%)";
                }

                return(View("Resultados", Resultado));
            }
        }
        public ActionResult CancelarConfirmed(int Votacion_ID)
        {
            ViewBag.Votacion_ID = Votacion_ID;
            try { this.VotacionesProxy = new ADESCOMBUSINESS.Areas.Votaciones.Methods.VotacionesBusiness((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"]); }
            catch (Exception ex) { return(RedirectToAction("SesionExpired", "Inicio", new { Area = "", Mensaje = ex.Message })); }
            OBJVOT_Votaciones = VotacionesProxy.GetByID(Votacion_ID);

            if (OBJVOT_Votaciones == null)
            {
                return(HttpNotFound());
            }

            try
            {
                bool Status = VotacionesProxy.CancelarVotacion(Votacion_ID);
                if (!Status)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                ViewBag.Error = "OK";
            }
            catch (Exception ex)
            {
                ViewBag.Error = ex.Message;
            }

            return(View("Cancelar"));
        }
        public ActionResult Editar(int Votacion_ID)
        {
            try { this.VotacionesProxy = new ADESCOMBUSINESS.Areas.Votaciones.Methods.VotacionesBusiness((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"]); }
            catch (Exception ex) { return(RedirectToAction("SesionExpired", "Inicio", new { Area = "", Mensaje = ex.Message })); }

            ADESCOMBUSINESS.Areas.Votaciones.Models.VotacionesCompuesto VotacionCompuesta = new ADESCOMBUSINESS.Areas.Votaciones.Models.VotacionesCompuesto();
            ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones      Votacion          = new ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones();
            Votacion = VotacionesProxy.GetByID(Votacion_ID);

            List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas> ListaPreguntas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas>();

            ListaPreguntas = ADESCOMBUSINESS.Areas.Votaciones.Methods.PreguntasBusiness.GetByVotacion_ID((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"], Votacion_ID);

            VotacionCompuesta.Votacion  = Votacion;
            VotacionCompuesta.Preguntas = ListaPreguntas;

            if (VotacionCompuesta.Votacion.VOT_Estatus.Equals("ACT"))
            {
                return(View("Editar", VotacionCompuesta));
            }
            else
            {
                String Status = String.Empty;
                switch (VotacionCompuesta.Votacion.VOT_Estatus)
                {
                /*Nunca se va a dar este caso
                 * case "ACT":
                 *  Status = "No Iniciada";
                 *  break;*/
                case "INI":
                    Status = "Iniciada";
                    break;

                case "FIN":
                    Status = "Finalizada";
                    break;

                case "CAN":
                    Status = "Cancelada";
                    break;
                }
                ViewBag.Estatus = Status;
                return(View("Detalle", VotacionCompuesta));
            }
        }
        public ActionResult Editar(FormCollection Form)
        {
            bool error         = false;
            int  Votacion_ID   = 0;
            bool TipoOperacion = false;

            try { this.VotacionesProxy = new ADESCOMBUSINESS.Areas.Votaciones.Methods.VotacionesBusiness((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"]); }
            catch (Exception ex) { return(RedirectToAction("SesionExpired", "Inicio", new { Area = "", Mensaje = ex.Message })); }

            Votacion_ID   = Convert.ToInt32(Form["Votacion.Votacion_ID"]);
            TipoOperacion = Convert.ToBoolean(Form["tipo_operacion"]);

            ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones Registro = new ADESCOMBUSINESS.Areas.Votaciones.Models.VOT_Votaciones();
            Registro = VotacionesProxy.GetByID(Votacion_ID);

            List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas> ListaPreguntas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas>();

            ListaPreguntas = ADESCOMBUSINESS.Areas.Votaciones.Methods.PreguntasBusiness.GetByVotacion_ID((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"], Votacion_ID);

            if (String.IsNullOrEmpty(Form["Votacion.VOT_Titulo"]))
            {
                ModelState.AddModelError("Votacion.VOT_Titulo", "Campo requerido");
            }

            if (String.IsNullOrEmpty(Form["Votacion.VOT_Fin"]))
            {
                ModelState.AddModelError("Votacion.VOT_Fin", "Campo requerido");
            }
            else
            {
                Registro.VOT_Fin = Convert.ToDateTime(Form["Votacion.VOT_Fin"]);
            }

            Registro.VOT_Titulo         = Form["Votacion.VOT_Titulo"];
            Registro.VOT_SolComentarios = Form["Votacion.VOT_SolComentarios"].Contains("true") ? true : false;

            //GuardarCambios e Iniciar
            if (TipoOperacion == true)
            {
                if (Registro.VOT_Fin.Date < DateTime.Now.Date)
                {
                    ModelState.AddModelError("Votacion.VOT_Fin", "La fecha de fin debe ser mayor o igual a la fecha de hoy");
                }

                //Validar Preguntas y respuestas
                if (ListaPreguntas == null || ListaPreguntas.Count <= 0)
                {
                    error         = true;
                    ViewBag.Error = "Se debe incluir al menos una pregunta con respuestas";
                }
                else
                {
                    bool tienenResp = true;
                    foreach (ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_Preguntas preg in ListaPreguntas)
                    {
                        List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_OpcRespuestas> ListaRepuestas = new List <ADESCOMBUSINESS.Areas.Votaciones.Models.VwVOT_OpcRespuestas>();
                        ListaRepuestas = ADESCOMBUSINESS.Areas.Votaciones.Methods.OpcRespuestasBusiness.GetByPregunta_ID((ADESCOMBUSINESS.DataAccess.Models.LoginRS)Session["InfoUser"], preg.Pregunta_ID);
                        if (ListaRepuestas == null || ListaRepuestas.Count <= 0)
                        {
                            tienenResp = false;
                            break;
                        }
                    }

                    if (!tienenResp)
                    {
                        error         = true;
                        ViewBag.Error = "Todas las preguntas deben tener repuestas";
                    }
                }
            }

            if (ModelState.IsValid && error == false)
            {
                try
                {
                    if (TipoOperacion == true)
                    {
                        //GuardarCambios e Iniciar
                        bool Status = VotacionesProxy.GuardarVotacion(Registro, true);
                        if (!Status)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }
                    }
                    else
                    {
                        //Sólo Guardar
                        bool Status = VotacionesProxy.GuardarVotacion(Registro, false);
                        if (!Status)
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }
                    }

                    ViewBag.Error = "OK";
                }
                catch (Exception ex)
                {
                    ViewBag.Error = ex.Message;
                }
            }

            ADESCOMBUSINESS.Areas.Votaciones.Models.VotacionesCompuesto VotacionCompuesta = new ADESCOMBUSINESS.Areas.Votaciones.Models.VotacionesCompuesto();
            VotacionCompuesta.Votacion  = Registro;
            VotacionCompuesta.Preguntas = ListaPreguntas;

            return(View(VotacionCompuesta));
        }