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; } }
partial void DeleteConslPregunta(ConslPregunta instance);
partial void InsertConslPregunta(ConslPregunta instance);
partial void UpdateConslPregunta(ConslPregunta instance);
private void detach_ConslPreguntas(ConslPregunta entity) { this.SendPropertyChanging(); entity.Consolidacion = null; }