예제 #1
0
        protected int ConsolidarPreguntas(int idmedicion)
        {
            try
            {
                int contador = 0;
                int idconsolidado = 0;
                var colcomp = from c in db.Componentes
                              select new { c.IdComponente };

                foreach (var comp in colcomp)
                {

                    var colpre = from p in db.Preguntas
                                 where p.IdComponente == comp.IdComponente
                                 select new { p.IdPregunta, p.IdPrivilegiado };

                    var colpreguntas = colpre.ToList();

                    if (colpreguntas.Count == 0)
                    {
                        return idconsolidado;
                    }

                    int cant_actores = (from a in db.Actores
                                        where a.IdRama != 1
                                        select a.IdActor).Count();
                    int idie = 0;

                    #region Por Pregunta

                    foreach (var pre in colpre)
                    {
                        object[,] actores_results = new object[cant_actores, 2];

                        for (int i = 0; i < cant_actores - 1; i++)
                        {
                            bool valor = false;
                            bool noaplica = false;

                            var resbyevalcount = (from rbe in db.ResultadosByEvaluacions
                                                  join r in db.Resultados on rbe.IdResultado equals r.IdResultados
                                                  join evalu in db.Evaluacions on rbe.IdEvaluacion equals evalu.IdEvaluacion
                                                  where r.IdPregunta == pre.IdPregunta && evalu.IdActor == i + 1
                                                  && evalu.IdEstado == 1 && evalu.IdMedicion == idmedicion
                                                  select new { r.IdPregunta, r.Valor, r.Pendiente, evalu.IdMedicion, evalu.IdIE }).Count();

                            if (resbyevalcount != 0)
                            {

                                var resbyeval = (from rbe in db.ResultadosByEvaluacions
                                                 join r in db.Resultados on rbe.IdResultado equals r.IdResultados
                                                 join evalu in db.Evaluacions on rbe.IdEvaluacion equals evalu.IdEvaluacion
                                                 where r.IdPregunta == pre.IdPregunta && evalu.IdActor == i + 1
                                                 && evalu.IdEstado == 1 && evalu.IdMedicion == idmedicion
                                                 select new { r.IdPregunta, r.Valor, r.Pendiente, evalu.IdMedicion, evalu.IdIE }).Single();

                                idie = Convert.ToInt32(resbyeval.IdIE);

                                if (resbyeval.Valor == true)
                                    valor = true;
                                else if (resbyeval.Valor == false)
                                    valor = false;
                                else if (resbyeval.Valor != true || resbyeval.Valor != false)
                                    noaplica = true;

                                actores_results[i, 0] = i + 1;
                                if (valor)
                                    actores_results[i, 1] = true;
                                if (!valor)
                                {
                                    if (!noaplica && !valor)
                                        actores_results[i, 1] = false;
                                    else
                                        actores_results[i, 1] = null;

                                }

                            }
                            int cant_si = 0;
                            int cant_no = 0;
                            int cant_noaplica = 0;
                            int res_privilegiado = 0;
                            for (int u = 0; u < actores_results.GetLength(0); u++)
                            {
                                if (pre.IdPrivilegiado == u)
                                {
                                    if (Convert.ToBoolean(actores_results[u, 1]) == true)
                                    {
                                        cant_si++;
                                        res_privilegiado = 1;
                                    }
                                    else if (Convert.ToBoolean(actores_results[u, 1]) == false)
                                    {
                                        cant_no++;
                                        res_privilegiado = 0;
                                    }
                                    else if (actores_results[u, 1] == null)
                                    {
                                        cant_noaplica++;
                                        res_privilegiado = 2;
                                    }
                                }
                                else
                                {
                                    if (Convert.ToBoolean(actores_results[u, 1]) == true)
                                    {
                                        cant_si++;
                                    }
                                    else if (Convert.ToBoolean(actores_results[u, 1]) == false)
                                    {
                                        cant_no++;
                                    }
                                    else if (actores_results[u, 1] == null)
                                        cant_noaplica++;
                                }
                            }
                            if (contador == 0)
                            {
                                Consolidacion objConsolidacion = new Consolidacion
                                {
                                    IdIE = idie,
                                    IdMedicion = idmedicion
                                };

                                db.Consolidacions.InsertOnSubmit(objConsolidacion);
                                db.SubmitChanges();
                                contador++;
                            }

                            var ult_idcons = (from cons in db.Consolidacions
                                              select cons.IdConsolidacion).Max();

                            idconsolidado = ult_idcons;

                            if (cant_si > cant_no)
                            {
                                ConslPregunta objConslPregunta = new ConslPregunta
                                {
                                    IdConsolidado = ult_idcons,
                                    IdPregunta = pre.IdPregunta,
                                    Valor = true
                                };
                                db.ConslPreguntas.InsertOnSubmit(objConslPregunta);
                                db.SubmitChanges();
                            }
                            if (cant_si < cant_no)
                            {
                                ConslPregunta objConslPregunta = new ConslPregunta
                                {
                                    IdConsolidado = ult_idcons,
                                    IdPregunta = pre.IdPregunta,
                                    Valor = false
                                };
                                db.ConslPreguntas.InsertOnSubmit(objConslPregunta);
                                db.SubmitChanges();
                            }
                            if (cant_si == cant_no)
                            {
                                if (res_privilegiado == 1)
                                {
                                    ConslPregunta objConslPregunta = new ConslPregunta
                                    {
                                        IdConsolidado = ult_idcons,
                                        IdPregunta = pre.IdPregunta,
                                        Valor = true
                                    };
                                    db.ConslPreguntas.InsertOnSubmit(objConslPregunta);
                                    db.SubmitChanges();
                                }
                                else if (res_privilegiado == 0)
                                {
                                    ConslPregunta objConslPregunta = new ConslPregunta
                                    {
                                        IdConsolidado = ult_idcons,
                                        IdPregunta = pre.IdPregunta,
                                        Valor = false
                                    };
                                    db.ConslPreguntas.InsertOnSubmit(objConslPregunta);
                                    db.SubmitChanges();

                                }
                                else
                                {

                                    ConslPregunta objConslPregunta = new ConslPregunta
                                    {
                                        IdConsolidado = ult_idcons,
                                        IdPregunta = pre.IdPregunta,
                                        NoAplica = true
                                    };
                                    db.ConslPreguntas.InsertOnSubmit(objConslPregunta);
                                    db.SubmitChanges();

                                }

                            }
                            else
                                break;

                        }
                    }
                    #endregion

                }

                return idconsolidado;
            }
            catch (LinqDataSourceValidationException)
            {
                return 0;
            }
            catch (Exception)
            {

                return 0;
            }
        }
예제 #2
0
 partial void DeleteConslPregunta(ConslPregunta instance);
예제 #3
0
 partial void InsertConslPregunta(ConslPregunta instance);
예제 #4
0
 partial void UpdateConslPregunta(ConslPregunta instance);
예제 #5
0
		private void detach_ConslPreguntas(ConslPregunta entity)
		{
			this.SendPropertyChanging();
			entity.Consolidacion = null;
		}