PageRenderTime 59ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/Docs/07-Implementacion/Source/trunk/EDUAR_Regular/EDUAR/EDUAR_UI/Private/Reports/reportPromedios.aspx.cs

http://blpm.googlecode.com/
C# | 1748 lines | 1334 code | 180 blank | 234 comment | 134 complexity | 1b8d51d4f208f72bb70e646b0319365e MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using EDUAR_BusinessLogic.Common;
  10. using EDUAR_BusinessLogic.Reports;
  11. using EDUAR_BusinessLogic.Shared;
  12. using EDUAR_Entities;
  13. using EDUAR_Entities.Reports;
  14. using EDUAR_UI.Shared;
  15. using EDUAR_UI.Utilidades;
  16. using EDUAR_Utility.Constantes;
  17. using EDUAR_Utility.Enumeraciones;
  18. namespace EDUAR_UI
  19. {
  20. public partial class reportPromedios : EDUARBasePage
  21. {
  22. #region --[Propiedades]--
  23. /// <summary>
  24. /// Gets or sets the filtro promedios.
  25. /// </summary>
  26. /// <value>
  27. /// The filtro sanciones.
  28. /// </value>
  29. public FilPromedioCalificacionesPeriodo filtroReporte
  30. {
  31. get
  32. {
  33. if (ViewState["filtroPromedios"] == null)
  34. filtroReporte = new FilPromedioCalificacionesPeriodo();
  35. return (FilPromedioCalificacionesPeriodo)ViewState["filtroPromedios"];
  36. }
  37. set
  38. {
  39. ViewState["filtroPromedios"] = value;
  40. }
  41. }
  42. /// <summary>
  43. /// Gets or sets the filtro incidencias.
  44. /// </summary>
  45. /// <value>
  46. /// The filtro incidencias.
  47. /// </value>
  48. public FilIncidenciasAlumno filtroReporteIncidencias
  49. {
  50. get
  51. {
  52. if (ViewState["filtroIncidencias"] == null)
  53. filtroReporteIncidencias = new FilIncidenciasAlumno();
  54. return (FilIncidenciasAlumno)ViewState["filtroIncidencias"];
  55. }
  56. set
  57. {
  58. ViewState["filtroIncidencias"] = value;
  59. }
  60. }
  61. /// <summary>
  62. /// Gets or sets the lista promedios.
  63. /// </summary>
  64. /// <value>
  65. /// The lista sanciones.
  66. /// </value>
  67. public List<RptPromedioCalificacionesPeriodo> listaReporte
  68. {
  69. get
  70. {
  71. if (Session["listaPromedios"] == null)
  72. listaReporte = new List<RptPromedioCalificacionesPeriodo>();
  73. return (List<RptPromedioCalificacionesPeriodo>)Session["listaPromedios"];
  74. }
  75. set
  76. {
  77. Session["listaPromedios"] = value;
  78. }
  79. }
  80. /// <summary>
  81. /// Gets or sets the lista consolidada inasistencias.
  82. /// </summary>
  83. /// <value>
  84. /// The lista consolidada inasistencias.
  85. /// </value>
  86. public List<RptConsolidadoInasistenciasPeriodo> listaReporteInasistencias
  87. {
  88. get
  89. {
  90. if (Session["listaConsolidadaInasistencias"] == null)
  91. listaReporteInasistencias = new List<RptConsolidadoInasistenciasPeriodo>();
  92. return (List<RptConsolidadoInasistenciasPeriodo>)Session["listaConsolidadaInasistencias"];
  93. }
  94. set
  95. {
  96. Session["listaConsolidadaInasistencias"] = value;
  97. }
  98. }
  99. /// <summary>
  100. /// Gets or sets the lista consolidada sanciones.
  101. /// </summary>
  102. /// <value>
  103. /// The lista consolidada sanciones.
  104. /// </value>
  105. public List<RptConsolidadoSancionesPeriodo> listaReporteSanciones
  106. {
  107. get
  108. {
  109. if (Session["listaConsolidadaSanciones"] == null)
  110. listaReporteSanciones = new List<RptConsolidadoSancionesPeriodo>();
  111. return (List<RptConsolidadoSancionesPeriodo>)Session["listaConsolidadaSanciones"];
  112. }
  113. set
  114. {
  115. Session["listaConsolidadaSanciones"] = value;
  116. }
  117. }
  118. /// <summary>
  119. /// Gets or sets the filtros aplicados.
  120. /// </summary>
  121. /// <value>
  122. /// The filtros aplicados.
  123. /// </value>
  124. public string filtrosAplicados
  125. {
  126. get
  127. {
  128. if (Session["filtrosAplicados"] == null)
  129. filtrosAplicados = string.Empty;
  130. return Session["filtrosAplicados"].ToString();
  131. }
  132. set
  133. {
  134. Session["filtrosAplicados"] = value;
  135. }
  136. }
  137. /// <summary>
  138. /// Gets or sets the lista asignaturas.
  139. /// </summary>
  140. /// <value>
  141. /// The lista sanciones.
  142. /// </value>
  143. public List<Asignatura> listaAsignatura
  144. {
  145. get
  146. {
  147. if (ViewState["listaAsignatura"] == null)
  148. listaAsignatura = new List<Asignatura>();
  149. return (List<Asignatura>)ViewState["listaAsignatura"];
  150. }
  151. set
  152. {
  153. ViewState["listaAsignatura"] = value;
  154. }
  155. }
  156. /// <summary>
  157. /// Gets or sets the lista tipo asistencia.
  158. /// </summary>
  159. /// <value>
  160. /// The lista tipo asistencia.
  161. /// </value>
  162. public List<TipoAsistencia> listaTipoAsistencia
  163. {
  164. get
  165. {
  166. if (ViewState["listaTipoAsistencia"] == null)
  167. {
  168. listaTipoAsistencia = new List<TipoAsistencia>();
  169. BLTipoAsistencia objBLTipoAsistencia = new BLTipoAsistencia();
  170. listaTipoAsistencia = objBLTipoAsistencia.GetTipoAsistencia(null);
  171. }
  172. return (List<TipoAsistencia>)ViewState["listaTipoAsistencia"];
  173. }
  174. set
  175. {
  176. ViewState["listaTipoAsistencia"] = value;
  177. }
  178. }
  179. /// <summary>
  180. /// Gets or sets the lista tipo sancion.
  181. /// </summary>
  182. /// <value>
  183. /// The lista tipo sancion.
  184. /// </value>
  185. public List<TipoSancion> listaTipoSancion
  186. {
  187. get
  188. {
  189. if (ViewState["listaTipoSancion"] == null)
  190. {
  191. listaTipoSancion = new List<TipoSancion>();
  192. BLTipoSancion objBLTipoSancion = new BLTipoSancion();
  193. listaTipoSancion = objBLTipoSancion.GetTipoSancion(null);
  194. }
  195. return (List<TipoSancion>)ViewState["listaTipoSancion"];
  196. }
  197. set
  198. {
  199. ViewState["listaTipoSancion"] = value;
  200. }
  201. }
  202. /// <summary>
  203. /// Gets or sets the lista motivo sancion.
  204. /// </summary>
  205. /// <value>
  206. /// The lista motivo sancion.
  207. /// </value>
  208. public List<MotivoSancion> listaMotivoSancion
  209. {
  210. get
  211. {
  212. if (ViewState["listaMotivoSancion"] == null)
  213. {
  214. listaMotivoSancion = new List<MotivoSancion>();
  215. BLMotivoSancion objBLMotivoSancion = new BLMotivoSancion();
  216. listaMotivoSancion = objBLMotivoSancion.GetMotivoSanciones(null);
  217. }
  218. return (List<MotivoSancion>)ViewState["listaMotivoSancion"];
  219. }
  220. set
  221. {
  222. ViewState["listaMotivoSancion"] = value;
  223. }
  224. }
  225. /// <summary>
  226. /// Gets or sets the lista ciclo lectivo.
  227. /// </summary>
  228. /// <value>
  229. /// The lista ciclo lectivo.
  230. /// </value>
  231. public List<CicloLectivo> listaCicloLectivo
  232. {
  233. get
  234. {
  235. if (ViewState["listaCicloLectivo"] == null)
  236. {
  237. listaCicloLectivo = new List<CicloLectivo>();
  238. BLCicloLectivo objBLCicloLectivo = new BLCicloLectivo();
  239. listaCicloLectivo = objBLCicloLectivo.GetCicloLectivos(null);
  240. }
  241. return (List<CicloLectivo>)ViewState["listaCicloLectivo"];
  242. }
  243. set
  244. {
  245. ViewState["listaCicloLectivo"] = value;
  246. }
  247. }
  248. #endregion
  249. #region --[Eventos]--
  250. /// <summary>
  251. /// Método que se ejecuta al dibujar los controles de la página.
  252. /// Se utiliza para gestionar las excepciones del método Page_Load().
  253. /// </summary>
  254. /// <param name="e"></param>
  255. protected override void OnPreRender(EventArgs e)
  256. {
  257. base.OnPreRender(e);
  258. if (AvisoMostrar)
  259. {
  260. AvisoMostrar = false;
  261. try
  262. {
  263. Master.ManageExceptions(AvisoExcepcion);
  264. }
  265. catch (Exception ex) { Master.ManageExceptions(ex); }
  266. }
  267. }
  268. /// <summary>
  269. /// Handles the Load event of the Page control.
  270. /// </summary>
  271. /// <param name="sender">The source of the event.</param>
  272. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  273. protected void Page_Load(object sender, EventArgs e)
  274. {
  275. try
  276. {
  277. rptResultado.ExportarPDFClick += (ExportarPDF);
  278. rptResultado.VolverClick += (VolverReporte);
  279. rptResultado.PaginarGrilla += (PaginarGrilla);
  280. rptResultado.GraficarClick += (GraficarReporte);
  281. Master.BotonAvisoAceptar += (VentanaAceptar);
  282. if (!Page.IsPostBack)
  283. {
  284. TablaGrafico = null;
  285. CargarPresentacion();
  286. divReporte.Visible = false;
  287. btnBuscar.Visible = true;
  288. divAccion.Visible = true;
  289. divFiltros.Visible = true;
  290. lblAsignatura.Visible = true;
  291. ddlAsignatura.Visible = true;
  292. }
  293. CargarGrillaResultado();
  294. }
  295. catch (Exception ex)
  296. {
  297. AvisoMostrar = true;
  298. AvisoExcepcion = ex;
  299. }
  300. }
  301. /// <summary>
  302. /// Graficars the reporte.
  303. /// </summary>
  304. /// <param name="sender">The sender.</param>
  305. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  306. protected void GraficarReporte(object sender, EventArgs e)
  307. {
  308. try
  309. {
  310. switch (rdlAccion.SelectedValue)
  311. {
  312. case "0":
  313. GraficarPromedios();
  314. break;
  315. case "1":
  316. GraficarInasistencia();
  317. break;
  318. case "2":
  319. GraficarSanciones();
  320. break;
  321. default:
  322. break;
  323. }
  324. }
  325. catch (Exception ex)
  326. { Master.ManageExceptions(ex); }
  327. }
  328. /// <summary>
  329. /// Graficars the promedios.
  330. /// </summary>
  331. private void GraficarPromedios()
  332. {
  333. // Cuando se elija
  334. try
  335. {
  336. GenerarDatosGraficoCalificaciones();
  337. Double sumaNotas = 0;
  338. rptResultado.graficoReporte.LimpiarSeries();
  339. var serie = new List<RptPromedioCalificacionesPeriodo>();
  340. rptResultado.graficoReporte.habilitarTorta = false;
  341. foreach (var item in listaAsignatura)
  342. {
  343. sumaNotas = 0;
  344. var listaParcial = listaReporte.FindAll(p => p.asignatura == item.nombre);
  345. if (listaParcial.Count > 0)
  346. {
  347. foreach (var nota in listaParcial)
  348. {
  349. sumaNotas += Convert.ToDouble(nota.promedio);
  350. }
  351. serie.Add(new RptPromedioCalificacionesPeriodo
  352. {
  353. promedio = Math.Round(sumaNotas / listaParcial.Count, 2).ToString(CultureInfo.InvariantCulture),
  354. asignatura = item.nombre
  355. //asignatura = ""
  356. });
  357. }
  358. }
  359. DataTable dt = UIUtilidades.BuildDataTable<RptPromedioCalificacionesPeriodo>(serie);
  360. rptResultado.graficoReporte.AgregarSerie("Asignatura", dt, "asignatura", "promedio");
  361. //rptResultado.graficoReporte.AgregarSerie("", dt, "asignatura", "promedio");
  362. BLValoresEscalaCalificacion objBLNivelAprobacion = new BLValoresEscalaCalificacion();
  363. ValoresEscalaCalificacion escala = new ValoresEscalaCalificacion();
  364. escala = objBLNivelAprobacion.GetNivelProbacion();
  365. List<ValoresEscalaCalificacion> listaEscala = new List<ValoresEscalaCalificacion>();
  366. foreach (RptPromedioCalificacionesPeriodo item in serie)
  367. {
  368. listaEscala.Add(new ValoresEscalaCalificacion
  369. {
  370. valor = escala.valor,
  371. nombre = item.asignatura
  372. });
  373. }
  374. DataTable dtEscala = UIUtilidades.BuildDataTable<ValoresEscalaCalificacion>(listaEscala);
  375. rptResultado.graficoReporte.AgregarSerie("Nivel de Aprobación (" + escala.nombre + ")", dtEscala, "nombre", "valor", true);
  376. string alumno = string.Empty;
  377. if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) > 0)
  378. alumno = "\n" + ddlAlumno.SelectedItem.Text + "\n";
  379. string Titulo = "Promedio Por Asignatura \n" + ddlCurso.SelectedItem.Text + " - " + ddlCicloLectivo.SelectedItem.Text;
  380. if (ddlPeriodo.Items.Count > 0 && Convert.ToInt32(ddlPeriodo.SelectedValue) > 0)
  381. Titulo += " - " + ddlPeriodo.SelectedItem.Text;
  382. Titulo += alumno;
  383. rptResultado.graficoReporte.Titulo = Titulo;
  384. rptResultado.graficoReporte.GraficarBarra();
  385. }
  386. catch (Exception ex)
  387. { Master.ManageExceptions(ex); }
  388. }
  389. /// <summary>
  390. /// Graficars the inasistencia.
  391. /// </summary>
  392. private void GraficarInasistencia()
  393. {
  394. try
  395. {
  396. GenerarDatosGraficoInasistencias();
  397. rptResultado.graficoReporte.LimpiarSeries();
  398. var serie = new List<RptInasistenciasAlumnoPeriodo>();
  399. if (ddlAlumno.SelectedIndex <= 0 && ddlCurso.SelectedIndex <= 0)
  400. {
  401. //foreach (var item in listaTipoAsistencia)
  402. for (int i = 0; i <= 6; i++)
  403. {
  404. // Esto es una chanchada, si anda lo corrijo con un listado de niveles
  405. var listaPorNivel = listaReporteInasistencias.FindAll(p => p.nivel.Substring(0, 1) == i.ToString());
  406. if (listaPorNivel.Count > 0)
  407. {
  408. serie.Add(new RptInasistenciasAlumnoPeriodo
  409. {
  410. curso = i.ToString() + "ş Ańo",
  411. alumno = listaPorNivel.Count.ToString()
  412. });
  413. }
  414. }
  415. DataTable dt = UIUtilidades.BuildDataTable<RptInasistenciasAlumnoPeriodo>(serie);
  416. rptResultado.graficoReporte.AgregarSerie("Inasistencias", dt, "curso", "alumno");
  417. string alumno = string.Empty;
  418. if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) > 0)
  419. alumno = "\n" + ddlAlumno.SelectedItem.Text + "\n";
  420. string Titulo = "Inasistencias \n" + ddlCurso.SelectedItem.Text + " - " + ddlCicloLectivo.SelectedItem.Text;
  421. if (ddlPeriodo.Items.Count > 0 && Convert.ToInt32(ddlPeriodo.SelectedValue) > 0)
  422. Titulo += " - " + ddlPeriodo.SelectedItem.Text;
  423. Titulo += alumno;
  424. rptResultado.graficoReporte.Titulo = Titulo;
  425. }
  426. else //if (ddlCurso.SelectedIndex > 0 && ddlAlumno.SelectedIndex <= 0)
  427. {
  428. foreach (var item in listaTipoAsistencia)
  429. {
  430. var listaPorTipoAsistencia = listaReporteInasistencias.FindAll(p => p.motivo == item.descripcion);
  431. if (listaPorTipoAsistencia.Count > 0)
  432. {
  433. serie.Add(new RptInasistenciasAlumnoPeriodo
  434. {
  435. motivo = item.descripcion,
  436. alumno = listaPorTipoAsistencia.Count.ToString()
  437. });
  438. }
  439. }
  440. DataTable dt = UIUtilidades.BuildDataTable<RptInasistenciasAlumnoPeriodo>(serie);
  441. rptResultado.graficoReporte.AgregarSerie("Inasistencias", dt, "motivo", "alumno");
  442. string alumno = string.Empty;
  443. if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) > 0)
  444. alumno = "\n" + ddlAlumno.SelectedItem.Text + "\n";
  445. string Titulo = "Motivos de Inasistencias \n" + ddlCurso.SelectedItem.Text + " - " + ddlCicloLectivo.SelectedItem.Text;
  446. if (ddlPeriodo.Items.Count > 0 && Convert.ToInt32(ddlPeriodo.SelectedValue) > 0)
  447. Titulo += " - " + ddlPeriodo.SelectedItem.Text;
  448. Titulo += alumno;
  449. rptResultado.graficoReporte.Titulo = Titulo;
  450. string escala = BLConfiguracionGlobal.ObtenerConfiguracion(EDUAR_Utility.Enumeraciones.enumConfiguraciones.LimiteInasistencias);
  451. List<ValoresEscalaCalificacion> listaEscala = new List<ValoresEscalaCalificacion>();
  452. foreach (RptInasistenciasAlumnoPeriodo item in serie)
  453. {
  454. listaEscala.Add(new ValoresEscalaCalificacion
  455. {
  456. valor = escala,
  457. nombre = item.motivo
  458. });
  459. }
  460. DataTable dtEscala = UIUtilidades.BuildDataTable<ValoresEscalaCalificacion>(listaEscala);
  461. rptResultado.graficoReporte.AgregarSerie("Máximo de Faltas (" + escala + ")", dtEscala, "nombre", "valor", true);
  462. }
  463. rptResultado.graficoReporte.GraficarBarra();
  464. }
  465. catch (Exception ex)
  466. { Master.ManageExceptions(ex); }
  467. }
  468. /// <summary>
  469. /// Graficars the sanciones.
  470. /// </summary>
  471. private void GraficarSanciones()
  472. {
  473. try
  474. {
  475. GenerarDatosGraficoSanciones();
  476. RptSancionesAlumnoPeriodo rptAux;
  477. rptResultado.graficoReporte.LimpiarSeries();
  478. var serie = new List<RptSancionesAlumnoPeriodo>();
  479. if (ddlAlumno.SelectedIndex > 0)
  480. {
  481. var listaParcial = listaReporteSanciones.FindAll(p => p.alumno == ddlAlumno.SelectedItem.Text);
  482. foreach (var item in listaTipoSancion)
  483. {
  484. var listaPorTipoSancion = listaParcial.FindAll(p => p.tipo == item.nombre);
  485. if (listaPorTipoSancion.Count > 0)
  486. {
  487. rptAux = new RptSancionesAlumnoPeriodo();
  488. rptAux.tipo = item.nombre;
  489. rptAux.cantidad = 0;
  490. foreach (var item2 in listaPorTipoSancion)
  491. {
  492. rptAux.cantidad += Convert.ToInt16(item2.sanciones);
  493. }
  494. serie.Add(rptAux);
  495. }
  496. }
  497. if (serie != null)
  498. {
  499. DataTable dt = UIUtilidades.BuildDataTable<RptSancionesAlumnoPeriodo>(serie);
  500. // En cantidad envio la cantidad de sanciones y en tipo la sancion
  501. rptResultado.graficoReporte.AgregarSerie(ddlAlumno.SelectedItem.Text, dt, "tipo", "cantidad");
  502. rptResultado.graficoReporte.Titulo = "Sanciones " + ddlAlumno.SelectedItem.Text;
  503. }
  504. string escala = BLConfiguracionGlobal.ObtenerConfiguracion(EDUAR_Utility.Enumeraciones.enumConfiguraciones.SancionesExpulsion);
  505. List<ValoresEscalaCalificacion> listaEscala = new List<ValoresEscalaCalificacion>();
  506. foreach (RptSancionesAlumnoPeriodo item in serie)
  507. {
  508. listaEscala.Add(new ValoresEscalaCalificacion
  509. {
  510. valor = escala,
  511. nombre = item.tipo
  512. });
  513. }
  514. DataTable dtEscala = UIUtilidades.BuildDataTable<ValoresEscalaCalificacion>(listaEscala);
  515. rptResultado.graficoReporte.AgregarSerie("Nivel de Expulsión (" + escala + ")", dtEscala, "nombre", "valor", true);
  516. }
  517. else
  518. {
  519. foreach (var item in listaTipoSancion)
  520. {
  521. var listaPorTipoSancion = listaReporteSanciones.FindAll(p => p.tipo == item.nombre);
  522. if (listaPorTipoSancion.Count > 0)
  523. {
  524. rptAux = new RptSancionesAlumnoPeriodo();
  525. rptAux.tipo = item.nombre;
  526. rptAux.cantidad = 0;
  527. foreach (var item2 in listaPorTipoSancion)
  528. {
  529. rptAux.cantidad += Convert.ToInt16(item2.sanciones);
  530. }
  531. serie.Add(rptAux);
  532. }
  533. }
  534. DataTable dt = UIUtilidades.BuildDataTable<RptSancionesAlumnoPeriodo>(serie);
  535. rptResultado.graficoReporte.AgregarSerie("Sanciones", dt, "tipo", "cantidad");
  536. string alumno = string.Empty;
  537. if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) > 0)
  538. alumno = "\n" + ddlAlumno.SelectedItem.Text + "\n";
  539. string Titulo = "Sanciones \n" + ddlCurso.SelectedItem.Text + " - " + ddlCicloLectivo.SelectedItem.Text;
  540. if (ddlPeriodo.Items.Count > 0 && Convert.ToInt32(ddlPeriodo.SelectedValue) > 0)
  541. Titulo += " - " + ddlPeriodo.SelectedItem.Text;
  542. Titulo += alumno;
  543. rptResultado.graficoReporte.Titulo = Titulo;
  544. }
  545. rptResultado.graficoReporte.GraficarBarra();
  546. }
  547. catch (Exception ex)
  548. { Master.ManageExceptions(ex); }
  549. }
  550. /// <summary>
  551. /// Ventanas the aceptar.
  552. /// </summary>
  553. /// <param name="sender">The sender.</param>
  554. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  555. protected void VentanaAceptar(object sender, EventArgs e)
  556. {
  557. //divFiltros.Visible = true;
  558. //divReporte.Visible = false;
  559. }
  560. /// <summary>
  561. /// Handles the Click event of the btnBuscar control.
  562. /// </summary>
  563. /// <param name="sender">The source of the event.</param>
  564. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  565. protected void btnBuscar_Click(object sender, EventArgs e)
  566. {
  567. try
  568. {
  569. string mensaje = ValidarPagina(rdlAccion.SelectedValue);
  570. if (string.IsNullOrEmpty(mensaje))
  571. {
  572. switch (rdlAccion.SelectedValue)
  573. {
  574. case "0":
  575. if (BuscarPromedios())
  576. {
  577. divFiltros.Visible = false;
  578. }
  579. break;
  580. case "1":
  581. if (BuscarInasistencias())
  582. {
  583. divFiltros.Visible = false;
  584. }
  585. break;
  586. case "2":
  587. if (BuscarSanciones())
  588. {
  589. divFiltros.Visible = false;
  590. }
  591. break;
  592. default:
  593. break;
  594. }
  595. divReporte.Visible = true;
  596. btnBuscar.Visible = false; //Se supone que no es mas necesario
  597. divAccion.Visible = false;
  598. }
  599. else
  600. { Master.MostrarMensaje("Faltan Datos", UIConstantesGenerales.MensajeDatosFaltantes + mensaje, EDUAR_Utility.Enumeraciones.enumTipoVentanaInformacion.Advertencia); }
  601. }
  602. catch (Exception ex)
  603. { Master.ManageExceptions(ex); }
  604. }
  605. /// <summary>
  606. /// Validars the pagina.
  607. /// </summary>
  608. /// <param name="opcion">The opcion.</param>
  609. /// <returns></returns>
  610. private string ValidarPagina(string opcion)
  611. {
  612. string mensaje = string.Empty;
  613. switch (opcion)
  614. {
  615. case "0":
  616. if (string.IsNullOrEmpty(ddlCicloLectivo.SelectedValue) || Convert.ToInt32(ddlCicloLectivo.SelectedValue) <= 0)
  617. mensaje = "- Ciclo Lectivo<br />";
  618. if (string.IsNullOrEmpty(ddlCurso.SelectedValue) || Convert.ToInt32(ddlCurso.SelectedValue) <= 0)
  619. mensaje += "- Curso<br />";
  620. break;
  621. case "1":
  622. case "2":
  623. if (string.IsNullOrEmpty(ddlCicloLectivo.SelectedValue) || Convert.ToInt32(ddlCicloLectivo.SelectedValue) <= 0)
  624. mensaje = "- Ciclo Lectivo<br />";
  625. //if (string.IsNullOrEmpty(ddlCurso.SelectedValue) || Convert.ToInt32(ddlCurso.SelectedValue) <= 0)
  626. // mensaje += "- Curso<br />";
  627. break;
  628. default:
  629. break;
  630. }
  631. return mensaje;
  632. }
  633. /// <summary>
  634. /// Exportars the PDF.
  635. /// </summary>
  636. /// <param name="sender">The sender.</param>
  637. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  638. protected void ExportarPDF(object sender, EventArgs e)
  639. {
  640. try
  641. {
  642. ExportPDF.ExportarPDF(Page.Title, rptResultado.dtReporte, ObjSessionDataUI.ObjDTUsuario.Nombre, filtrosAplicados);
  643. }
  644. catch (Exception ex)
  645. { Master.ManageExceptions(ex); }
  646. }
  647. /// <summary>
  648. /// Volvers the reporte.
  649. /// </summary>
  650. /// <param name="sender">The sender.</param>
  651. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  652. protected void VolverReporte(object sender, EventArgs e)
  653. {
  654. try
  655. {
  656. CargarPresentacion();
  657. CargarValoresEnControles();
  658. btnBuscar.Visible = true;
  659. divAccion.Visible = true;
  660. divFiltros.Visible = true;
  661. divReporte.Visible = false;
  662. }
  663. catch (Exception ex)
  664. { Master.ManageExceptions(ex); }
  665. }
  666. /// <summary>
  667. /// Cargars the valores en controles.
  668. /// </summary>
  669. private void CargarValoresEnControles()
  670. {
  671. switch (rdlAccion.SelectedValue)
  672. {
  673. case "0":
  674. ddlCicloLectivo.SelectedValue = (filtroReporte.idCicloLectivo > 0) ? filtroReporte.idCicloLectivo.ToString() : "-1";
  675. if (filtroReporte.idCicloLectivo > 0)
  676. CargarComboCursos(filtroReporte.idCicloLectivo, ddlCurso);
  677. ddlCurso.SelectedValue = (filtroReporte.idCurso > 0) ? filtroReporte.idCurso.ToString() : "-1";
  678. ddlPeriodo.SelectedValue = (filtroReporte.idPeriodo > 0) ? filtroReporte.idPeriodo.ToString() : "-1";
  679. if (filtroReporte.idCurso > 0)
  680. {
  681. CargarAlumnos(filtroReporte.idCurso);
  682. CargarComboAsignatura();
  683. }
  684. ddlAlumno.SelectedValue = (filtroReporte.idAlumno > 0) ? filtroReporte.idAlumno.ToString() : "-1";
  685. ddlAlumno.Enabled = (filtroReporte.idCurso > 0);
  686. //ddlAsignatura.SelectedIndex = (filtroReporte.idAsignatura > 0) ? filtroReporte.idAsignatura.ToString() : "-1";
  687. ddlAsignatura.Disabled = (filtroReporte.idCurso < 0);
  688. lblAsignatura.Visible = true;
  689. ddlAsignatura.Visible = true;
  690. ddlTipoSancion.Visible = false;
  691. lblTipoSanción.Visible = false;
  692. ddlMotivoSancion.Visible = false;
  693. lblMotivoSanción.Visible = false;
  694. ddlAsistencia.Visible = false;
  695. lblTipoAsistencia.Visible = false;
  696. break;
  697. case "1":
  698. ddlCicloLectivo.SelectedValue = (filtroReporteIncidencias.idCicloLectivo > 0) ? filtroReporteIncidencias.idCicloLectivo.ToString() : "-1";
  699. if (filtroReporteIncidencias.idCicloLectivo > 0)
  700. CargarComboCursos(filtroReporteIncidencias.idCicloLectivo, ddlCurso);
  701. ddlCurso.SelectedValue = (filtroReporteIncidencias.idCurso > 0) ? filtroReporteIncidencias.idCurso.ToString() : "-1";
  702. ddlPeriodo.SelectedValue = (filtroReporteIncidencias.idPeriodo > 0) ? filtroReporteIncidencias.idPeriodo.ToString() : "-1";
  703. if (filtroReporteIncidencias.idCurso > 0)
  704. {
  705. CargarAlumnos(filtroReporteIncidencias.idCurso);
  706. }
  707. ddlAlumno.SelectedValue = (filtroReporteIncidencias.idAlumno > 0) ? filtroReporteIncidencias.idAlumno.ToString() : "-1";
  708. ddlAlumno.Enabled = (filtroReporteIncidencias.idCurso > 0);
  709. lblAsignatura.Visible = false;
  710. ddlAsignatura.Visible = false;
  711. ddlTipoSancion.Visible = false;
  712. lblTipoSanción.Visible = false;
  713. ddlMotivoSancion.Visible = false;
  714. lblMotivoSanción.Visible = false;
  715. ddlAsistencia.Visible = true;
  716. lblTipoAsistencia.Visible = true;
  717. break;
  718. case "2":
  719. ddlCicloLectivo.SelectedValue = (filtroReporteIncidencias.idCicloLectivo > 0) ? filtroReporteIncidencias.idCicloLectivo.ToString() : "-1";
  720. if (filtroReporteIncidencias.idCicloLectivo > 0)
  721. CargarComboCursos(filtroReporteIncidencias.idCicloLectivo, ddlCurso);
  722. ddlCurso.SelectedValue = (filtroReporteIncidencias.idCurso > 0) ? filtroReporteIncidencias.idCurso.ToString() : "-1";
  723. ddlPeriodo.SelectedValue = (filtroReporteIncidencias.idPeriodo > 0) ? filtroReporteIncidencias.idPeriodo.ToString() : "-1";
  724. if (filtroReporteIncidencias.idCurso > 0)
  725. {
  726. CargarAlumnos(filtroReporteIncidencias.idCurso);
  727. }
  728. ddlAlumno.SelectedValue = (filtroReporteIncidencias.idAlumno > 0) ? filtroReporteIncidencias.idAlumno.ToString() : "-1";
  729. ddlAlumno.Enabled = (filtroReporteIncidencias.idCurso > 0);
  730. lblAsignatura.Visible = false;
  731. ddlAsignatura.Visible = false;
  732. ddlTipoSancion.Visible = true;
  733. lblTipoSanción.Visible = true;
  734. ddlMotivoSancion.Visible = true;
  735. lblMotivoSanción.Visible = true;
  736. ddlAsistencia.Visible = false;
  737. lblTipoAsistencia.Visible = false;
  738. break;
  739. default:
  740. break;
  741. }
  742. }
  743. /// <summary>
  744. /// Paginars the grilla.
  745. /// </summary>
  746. /// <param name="sender">The sender.</param>
  747. /// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewPageEventArgs"/> instance containing the event data.</param>
  748. protected void PaginarGrilla(object sender, GridViewPageEventArgs e)
  749. {
  750. try
  751. {
  752. int pagina = e.NewPageIndex;
  753. rptResultado.GrillaReporte.PageIndex = pagina;
  754. switch (rdlAccion.SelectedValue)
  755. {
  756. case "0":
  757. rptResultado.CargarReporte<RptPromedioCalificacionesPeriodo>(listaReporte);
  758. break;
  759. case "1":
  760. rptResultado.CargarReporte<RptConsolidadoInasistenciasPeriodo>(listaReporteInasistencias);
  761. break;
  762. case "2":
  763. rptResultado.CargarReporte<RptConsolidadoSancionesPeriodo>(listaReporteSanciones);
  764. break;
  765. default:
  766. break;
  767. }
  768. }
  769. catch (Exception ex)
  770. {
  771. Master.ManageExceptions(ex);
  772. }
  773. }
  774. /// <summary>
  775. /// Handles the SelectedIndexChanged event of the ddlCicloLectivo control.
  776. /// </summary>
  777. /// <param name="sender">The source of the event.</param>
  778. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  779. protected void ddlCicloLectivo_SelectedIndexChanged(object sender, EventArgs e)
  780. {
  781. try
  782. {
  783. HabilitaCursoYPeriodo();
  784. }
  785. catch (Exception ex)
  786. {
  787. Master.ManageExceptions(ex);
  788. }
  789. }
  790. /// <summary>
  791. /// Handles the SelectedIndexChanged event of the ddlCurso control.
  792. /// </summary>
  793. /// <param name="sender">The source of the event.</param>
  794. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  795. protected void ddlCurso_SelectedIndexChanged(object sender, EventArgs e)
  796. {
  797. try
  798. {
  799. int idCurso = Convert.ToInt32(ddlCurso.SelectedValue);
  800. if (idCurso > 0)
  801. {
  802. CargarAlumnos(idCurso);
  803. ddlAlumno.Enabled = true;
  804. CargarComboAsignatura();
  805. }
  806. else
  807. {
  808. ddlAlumno.Items.Clear();
  809. ddlAlumno.Enabled = false;
  810. ddlAsignatura.Items.Clear();
  811. ddlAsignatura.Disabled = true;
  812. }
  813. }
  814. catch (Exception ex)
  815. {
  816. Master.ManageExceptions(ex);
  817. }
  818. }
  819. #endregion
  820. #region --[Métodos Privados]--
  821. /// <summary>
  822. /// Cargars the presentacion.
  823. /// </summary>
  824. private void CargarPresentacion()
  825. {
  826. ddlAlumno.Items.Clear();
  827. ddlAsignatura.Items.Clear();
  828. CargarCombos();
  829. lblAsignatura.Visible = true;
  830. ddlAsignatura.Visible = true;
  831. ddlTipoSancion.Visible = false;
  832. lblTipoSanción.Visible = false;
  833. ddlMotivoSancion.Visible = false;
  834. lblMotivoSanción.Visible = false;
  835. ddlAsistencia.Visible = false;
  836. lblTipoAsistencia.Visible = false;
  837. btnBuscar.Visible = true;
  838. divAccion.Visible = true;
  839. divReporte.Visible = false;
  840. }
  841. /// <summary>
  842. /// Buscars the promedios.
  843. /// </summary>
  844. private bool BuscarPromedios()
  845. {
  846. StringBuilder filtros = new StringBuilder();
  847. if (Convert.ToInt32(ddlCicloLectivo.SelectedValue) > 0 && Convert.ToInt32(ddlCurso.SelectedValue) > 0)
  848. {
  849. filtros.AppendLine("- " + ddlCicloLectivo.SelectedItem.Text + " - Curso: " + ddlCurso.SelectedItem.Text);
  850. filtroReporte.idCicloLectivo = Convert.ToInt32(ddlCicloLectivo.SelectedValue);
  851. filtroReporte.idCurso = 0;
  852. if (ddlCurso.SelectedIndex > 0)
  853. filtroReporte.idCurso = Convert.ToInt32(ddlCurso.SelectedValue);
  854. int idPeriodo = 0;
  855. int.TryParse(ddlPeriodo.SelectedValue, out idPeriodo);
  856. if (idPeriodo > 0)
  857. {
  858. filtros.AppendLine("- Periodo: " + ddlPeriodo.SelectedItem.Text);
  859. filtroReporte.idPeriodo = idPeriodo;
  860. }
  861. List<Asignatura> listaAsignatura = new List<Asignatura>();
  862. foreach (System.Web.UI.WebControls.ListItem item in ddlAsignatura.Items)
  863. {
  864. if (item.Selected)
  865. {
  866. if (!filtros.ToString().Contains("- Asignatura"))
  867. filtros.AppendLine("- Asignatura");
  868. filtros.AppendLine(" * " + item.Text);
  869. listaAsignatura.Add(new Asignatura() { idAsignatura = Convert.ToInt16(item.Value) });
  870. }
  871. }
  872. filtroReporte.listaAsignaturas = listaAsignatura;
  873. filtroReporte.idAlumno = 0;
  874. if (ddlAlumno.SelectedIndex > 0)
  875. filtroReporte.idAlumno = Convert.ToInt32(ddlAlumno.SelectedValue);
  876. BLRptPromedioCalificacionesPeriodo objBLReporte = new BLRptPromedioCalificacionesPeriodo();
  877. listaReporte = objBLReporte.GetRptPromedioCalificaciones(filtroReporte);
  878. listaReporte.Sort((p, q) => String.Compare(p.alumno, q.alumno));
  879. filtrosAplicados = filtros.ToString();
  880. rptResultado.CargarReporte<RptPromedioCalificacionesPeriodo>(listaReporte);
  881. return true;
  882. }
  883. else
  884. return false;
  885. }
  886. /// <summary>
  887. /// Buscars the inasistencias.
  888. /// </summary>
  889. private bool BuscarInasistencias()
  890. {
  891. StringBuilder filtros = new StringBuilder();
  892. if (Convert.ToInt32(ddlCicloLectivo.SelectedValue) > 0 /*&& Convert.ToInt32(ddlCurso.SelectedValue) > 0*/)
  893. {
  894. filtros.AppendLine("- " + ddlCicloLectivo.SelectedItem.Text);
  895. if (Convert.ToInt32(ddlCurso.SelectedValue) > 0)
  896. filtros.AppendLine(" - Curso: " + ddlCurso.SelectedItem.Text);
  897. filtroReporteIncidencias.idCicloLectivo = Convert.ToInt32(ddlCicloLectivo.SelectedValue);
  898. filtroReporteIncidencias.idCurso = 0;
  899. if (ddlCurso.SelectedIndex > 0)
  900. filtroReporteIncidencias.idCurso = Convert.ToInt32(ddlCurso.SelectedValue);
  901. filtroReporteIncidencias.idPeriodo = 0;
  902. //TODO: Testear el siguiente condicional
  903. if (ddlPeriodo.SelectedIndex > 0)
  904. filtroReporteIncidencias.idPeriodo = Convert.ToInt32(ddlPeriodo.SelectedValue);
  905. filtroReporteIncidencias.idAlumno = 0;
  906. if (ddlAlumno.SelectedIndex > 0)
  907. filtroReporteIncidencias.idAlumno = Convert.ToInt32(ddlAlumno.SelectedValue);
  908. List<TipoAsistencia> listaTipoAsistencia = new List<TipoAsistencia>();
  909. foreach (System.Web.UI.WebControls.ListItem item in ddlAsistencia.Items)
  910. {
  911. if (item.Selected)
  912. {
  913. if (!filtros.ToString().Contains("- Tipo de Inasistencia"))
  914. filtros.AppendLine("- Tipo de Inasistencia");
  915. filtros.AppendLine(" * " + item.Text);
  916. listaTipoAsistencia.Add(new TipoAsistencia() { idTipoAsistencia = Convert.ToInt16(item.Value) });
  917. }
  918. }
  919. filtroReporteIncidencias.listaTiposAsistencia = listaTipoAsistencia;
  920. BLRptConsolidadoInasistenciasPeriodo objBLReporte = new BLRptConsolidadoInasistenciasPeriodo();
  921. listaReporteInasistencias = objBLReporte.GetRptConsolidadoInasistencias(filtroReporteIncidencias);
  922. listaReporteInasistencias.Sort((p, q) => String.Compare(p.alumno, q.alumno));
  923. filtrosAplicados = filtros.ToString();
  924. rptResultado.CargarReporte<RptConsolidadoInasistenciasPeriodo>(listaReporteInasistencias);
  925. return true;
  926. }
  927. else
  928. return false;
  929. }
  930. /// <summary>
  931. /// Buscars the sanciones.
  932. /// </summary>
  933. private bool BuscarSanciones()
  934. {
  935. StringBuilder filtros = new StringBuilder();
  936. if (Convert.ToInt32(ddlCicloLectivo.SelectedValue) > 0 /*&& Convert.ToInt32(ddlCurso.SelectedValue) > 0*/)
  937. {
  938. filtros.AppendLine("- " + ddlCicloLectivo.SelectedItem.Text);
  939. if (Convert.ToInt32(ddlCurso.SelectedValue) > 0)
  940. filtros.AppendLine(" - Curso: " + ddlCurso.SelectedItem.Text);
  941. filtroReporteIncidencias.idCicloLectivo = Convert.ToInt32(ddlCicloLectivo.SelectedValue);
  942. filtroReporteIncidencias.idCurso = 0;
  943. if (ddlCurso.SelectedIndex > 0)
  944. filtroReporteIncidencias.idCurso = Convert.ToInt32(ddlCurso.SelectedValue);
  945. filtroReporteIncidencias.idPeriodo = 0;
  946. if (ddlPeriodo.SelectedIndex > 0)
  947. filtroReporteIncidencias.idPeriodo = Convert.ToInt32(ddlPeriodo.SelectedValue);
  948. filtroReporteIncidencias.idAlumno = 0;
  949. if (ddlAlumno.SelectedIndex > 0)
  950. filtroReporteIncidencias.idAlumno = Convert.ToInt32(ddlAlumno.SelectedValue);
  951. #region --[Tipo Sanción]--
  952. List<TipoSancion> listaTipoSancionSelect = new List<TipoSancion>();
  953. foreach (System.Web.UI.WebControls.ListItem item in ddlTipoSancion.Items)
  954. {
  955. if (item.Selected)
  956. {
  957. if (!filtros.ToString().Contains("- Tipo de Sanción"))
  958. filtros.AppendLine("- Tipo de Sanción");
  959. filtros.AppendLine(" * " + item.Text);
  960. listaTipoSancionSelect.Add(new TipoSancion() { idTipoSancion = Convert.ToInt16(item.Value) });
  961. }
  962. }
  963. filtroReporteIncidencias.listaTipoSancion = listaTipoSancionSelect;
  964. #endregion
  965. #region --[Motivo Sanción]--
  966. List<MotivoSancion> listaMotivoSancionSelect = new List<MotivoSancion>();
  967. foreach (System.Web.UI.WebControls.ListItem item in ddlMotivoSancion.Items)
  968. {
  969. if (item.Selected)
  970. {
  971. if (!filtros.ToString().Contains("- Motivo de Sanción"))
  972. filtros.AppendLine("- Motivo de Sanción");
  973. filtros.AppendLine(" * " + item.Text);
  974. listaMotivoSancionSelect.Add(new MotivoSancion() { idMotivoSancion = Convert.ToInt16(item.Value) });
  975. }
  976. }
  977. filtroReporteIncidencias.listaMotivoSancion = listaMotivoSancionSelect;
  978. #endregion
  979. BLRptConsolidadoSancionesPeriodo objBLReporte = new BLRptConsolidadoSancionesPeriodo();
  980. listaReporteSanciones = objBLReporte.GetRptConsolidadoSanciones(filtroReporteIncidencias);
  981. listaReporteSanciones.Sort((p, q) => String.Compare(p.alumno, q.alumno));
  982. filtrosAplicados = filtros.ToString();
  983. rptResultado.CargarReporte<RptConsolidadoSancionesPeriodo>(listaReporteSanciones);
  984. return true;
  985. }
  986. else
  987. return false;
  988. }
  989. /// <summary>
  990. /// Cargars the combos.
  991. /// </summary>
  992. private void CargarCombos()
  993. {
  994. UIUtilidades.BindCombo<CicloLectivo>(ddlCicloLectivo, listaCicloLectivo, "idCicloLectivo", "nombre", true);
  995. List<Curso> listaCurso = new List<Curso>();
  996. UIUtilidades.BindCombo<Curso>(ddlCurso, listaCurso, "idCurso", "Nombre", true);
  997. ddlCicloLectivo.SelectedIndex = ddlCicloLectivo.Items.Count - 1;
  998. HabilitaCursoYPeriodo();
  999. #region --[Tipo Asistencia]--
  1000. // Ordena la lista alfabéticamente por la descripción
  1001. listaTipoAsistencia.Sort((p, q) => string.Compare(p.descripcion, q.descripcion));
  1002. if (ddlAsistencia.Items.Count == 0)
  1003. // Carga el combo de tipo de asistencia para filtrar
  1004. foreach (TipoAsistencia item in listaTipoAsistencia)
  1005. {
  1006. ddlAsistencia.Items.Add(new System.Web.UI.WebControls.ListItem(item.descripcion, item.idTipoAsistencia.ToString()));
  1007. }
  1008. #endregion
  1009. #region --[Tipo Sanción]--
  1010. // Ordena la lista alfabéticamente por la descripción
  1011. listaTipoSancion.Sort((p, q) => string.Compare(p.nombre, q.nombre));
  1012. if (ddlTipoSancion.Items.Count == 0)
  1013. // Carga el combo de tipo de asistencia para filtrar
  1014. foreach (TipoSancion item in listaTipoSancion)
  1015. {
  1016. ddlTipoSancion.Items.Add(new System.Web.UI.WebControls.ListItem(item.nombre, item.idTipoSancion.ToString()));
  1017. }
  1018. #endregion
  1019. #region --[Motivo Sanción]--
  1020. // Ordena la lista alfabéticamente por la descripción
  1021. listaMotivoSancion.Sort((p, q) => string.Compare(p.descripcion, q.descripcion));
  1022. if (ddlMotivoSancion.Items.Count == 0)
  1023. // Carga el combo de tipo de asistencia para filtrar
  1024. foreach (MotivoSancion item in listaMotivoSancion)
  1025. {
  1026. ddlMotivoSancion.Items.Add(new System.Web.UI.WebControls.ListItem(item.descripcion, item.idMotivoSancion.ToString()));
  1027. }
  1028. #endregion
  1029. //ddlPeriodo.Enabled = false;
  1030. ddlAsignatura.Disabled = true;
  1031. ddlAlumno.Enabled = false;
  1032. }
  1033. /// <summary>
  1034. /// Cargars the combo cursos.
  1035. /// </summary>
  1036. /// <param name="idCicloLectivo">The id ciclo lectivo.</param>
  1037. /// <param name="ddlCurso">The DDL curso.</param>
  1038. private void CargarComboCursos(int idCicloLectivo, DropDownList ddlCurso)
  1039. {
  1040. if (idCicloLectivo > 0)
  1041. {
  1042. List<Curso> listaCurso = new List<Curso>();
  1043. BLCicloLectivo objBLCicloLectivo = new BLCicloLectivo();
  1044. Asignatura objAsignatura = new Asignatura();
  1045. objAsignatura.curso.cicloLectivo.idCicloLectivo = idCicloLectivo;
  1046. if (User.IsInRole(enumRoles.Docente.ToString()))
  1047. objAsignatura.docente.username = ObjSessionDataUI.ObjDTUsuario.Nombre;
  1048. listaCurso = objBLCicloLectivo.GetCursosByAsignatura(objAsignatura);
  1049. UIUtilidades.BindCombo<Curso>(ddlCurso, listaCurso, "idCurso", "nombre", true);
  1050. ddlCurso.Enabled = true;
  1051. }
  1052. else
  1053. {
  1054. ddlCurso.Enabled = false;
  1055. }
  1056. }
  1057. /// <summary>
  1058. /// Cargars the combo periodos.
  1059. /// </summary>
  1060. /// <param name="idCicloLectivo">The id ciclo lectivo.</param>
  1061. /// <param name="ddlPeriodo">The DDL periodo.</param>
  1062. private void CargarComboPeriodos(int idCicloLectivo, DropDownList ddlPeriodo)
  1063. {
  1064. if (idCicloLectivo > 0)
  1065. {
  1066. BLCicloLectivo objBLCicloLectivo = new BLCicloLectivo();
  1067. UIUtilidades.BindCombo<Periodo>(ddlPeriodo, objBLCicloLectivo.GetPeriodosByCicloLectivo(idCicloLectivo), "idPeriodo", "nombre", true);
  1068. ddlPeriodo.Enabled = true;
  1069. }
  1070. else
  1071. {
  1072. ddlPeriodo.Enabled = false;
  1073. }
  1074. }
  1075. /// <summary>
  1076. /// Cargars the combo asignatura.
  1077. /// </summary>
  1078. private void CargarComboAsignatura()
  1079. {
  1080. BLAsignatura objBLAsignatura = new BLAsignatura();
  1081. Asignatura materia = new Asignatura();
  1082. materia.cursoCicloLectivo.idCursoCicloLectivo = Convert.ToInt32(ddlCurso.SelectedValue);
  1083. listaAsignatura = objBLAsignatura.GetAsignaturasCurso(materia);
  1084. listaAsignatura.Sort((p, q) => string.Compare(p.nombre, q.nombre));
  1085. ddlAsignatura.Items.Clear();
  1086. foreach (Asignatura asignatura in listaAsignatura)
  1087. {
  1088. ddlAsignatura.Items.Add(new System.Web.UI.WebControls.ListItem(asignatura.nombre, asignatura.idAsignatura.ToString()));
  1089. }
  1090. if (ddlAsignatura.Items.Count > 0)
  1091. ddlAsignatura.Disabled = false;
  1092. }
  1093. /// <summary>
  1094. /// Handles the OnSelectedIndexChanged event of the rdlAccion control.
  1095. /// </summary>
  1096. /// <param name="sender">The source of the event.</param>
  1097. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  1098. protected void rdlAccion_OnSelectedIndexChanged(object sender, EventArgs e)
  1099. {
  1100. try
  1101. {
  1102. switch (rdlAccion.SelectedValue)
  1103. {
  1104. case "0":
  1105. CargarPresentacion();
  1106. divReporte.Visible = false;
  1107. btnBuscar.Visible = true;
  1108. divAccion.Visible = true;
  1109. divFiltros.Visible = true;
  1110. lblAsignatura.Visible = true;
  1111. ddlAsignatura.Visible = true;
  1112. ddlTipoSancion.Visible = false;
  1113. lblTipoSanción.Visible = false;
  1114. ddlMotivoSancion.Visible = false;
  1115. lblMotivoSanción.Visible = false;
  1116. ddlAsistencia.Visible = false;
  1117. lblTipoAsistencia.Visible = false;
  1118. break;
  1119. case "1":
  1120. CargarPresentacion();
  1121. divReporte.Visible = false;
  1122. btnBuscar.Visible = true;
  1123. divAccion.Visible = true;
  1124. divFiltros.Visible = true;
  1125. lblAsignatura.Visible = false;
  1126. ddlAsignatura.Visible = false;
  1127. ddlTipoSancion.Visible = false;
  1128. lblTipoSanción.Visible = false;
  1129. ddlMotivoSancion.Visible = false;
  1130. lblMotivoSanción.Visible = false;
  1131. ddlAsistencia.Visible = true;
  1132. lblTipoAsistencia.Visible = true;
  1133. break;
  1134. case "2":
  1135. CargarPresentacion();
  1136. divReporte.Visible = false;
  1137. btnBuscar.Visible = true;
  1138. divAccion.Visible = true;
  1139. divFiltros.Visible = true;
  1140. lblAsignatura.Visible = false;
  1141. ddlAsignatura.Visible = false;
  1142. ddlTipoSancion.Visible = true;
  1143. lblTipoSanción.Visible = true;
  1144. ddlMotivoSancion.Visible = true;
  1145. lblMotivoSanción.Visible = true;
  1146. ddlAsistencia.Visible = false;
  1147. lblTipoAsistencia.Visible = false;
  1148. break;
  1149. default:
  1150. break;
  1151. }
  1152. }
  1153. catch (Exception ex)
  1154. {
  1155. Master.ManageExceptions(ex);
  1156. }
  1157. }
  1158. /// <summary>
  1159. /// Cargars the alumnos.
  1160. /// </summary>
  1161. /// <param name="idCurso">The id curso.</param>
  1162. private void CargarAlumnos(int idCurso)
  1163. {
  1164. BLAlumno objBLAlumno = new BLAlumno();
  1165. UIUtilidades.BindCombo<Alumno>(ddlAlumno, objBLAlumno.GetAlumnos(new AlumnoCurso(idCurso)), "idAlumno", "apellido", "nombre", true);
  1166. }
  1167. /// <summary>
  1168. /// Habilitas the curso Y periodo.
  1169. /// </summary>
  1170. private void HabilitaCursoYPeriodo()
  1171. {
  1172. int idCicloLectivo = 0;
  1173. idCicloLectivo = Convert.ToInt32(ddlCicloLectivo.SelectedValue);
  1174. CargarComboCursos(idCicloLectivo, ddlCurso);
  1175. CargarComboPeriodos(idCicloLectivo, ddlPeriodo);
  1176. ddlCurso.Enabled = true;
  1177. ddlPeriodo.Enabled = true;
  1178. udpCurso.Update();
  1179. udpPeriodo.Update();
  1180. }
  1181. /// <summary>
  1182. /// Generars the datos grafico.
  1183. /// </summary>
  1184. private void GenerarDatosGraficoCalificaciones()
  1185. {
  1186. TablaGrafico = new List<TablaGrafico>();
  1187. TablaGrafico tabla3 = new TablaGrafico();
  1188. tabla3.listaCuerpo = new List<List<string>>();
  1189. List<string> encabezado3 = new List<string>();
  1190. List<string> fila3 = new List<string>();
  1191. tabla3.titulo = "Periodo Analizado: " + listaReporte[0].periodo;
  1192. var cantAlumnos =
  1193. from p in listaReporte
  1194. group p by p.alumno into g
  1195. select new { Alumno = g.Key, Cantidad = g.Count() };
  1196. //TablaGrafico.Add("- Cantidad de Alumnos analizados: " + cantAlumnos.Count().ToString());
  1197. encabezado3.Add("Cantidad de Alumnos");
  1198. fila3.Add(cantAlumnos.Count().ToString());
  1199. //TablaGrafico.Add("- Cantidad de Calificaciones: " + listaReporte.Count.ToString());
  1200. encabezado3.Add("Cantidad de Calificaciones");
  1201. fila3.Add(listaReporte.Count().ToString());
  1202. tabla3.listaEncabezados = encabezado3;
  1203. tabla3.listaCuerpo.Add(fila3);
  1204. TablaGrafico.Add(tabla3);
  1205. if (ddlAsignatura.Items.Count == 0 || Convert.ToInt32(ddlAsignatura.SelectedIndex) < 0)
  1206. {
  1207. var topPromedio =
  1208. (from p in listaReporte
  1209. group p by p.asignatura into g
  1210. orderby g.Average(p => Convert.ToDouble(p.promedio)) descending
  1211. select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)), Cantidad = g.Count() }).Distinct().Take(3);
  1212. if (topPromedio.Count() > 1)
  1213. {
  1214. TablaGrafico tabla2 = new TablaGrafico();
  1215. tabla2.listaCuerpo = new List<List<string>>();
  1216. List<string> encabezado2 = new List<string>();
  1217. List<List<string>> filasTabla2 = new List<List<string>>();
  1218. List<string> fila2 = new List<string>();
  1219. //TablaGrafico.Add("- Desviacion Estandar por materia: ");
  1220. tabla2.titulo = "Top 3 Materias con mejor desempeńo";
  1221. encabezado2.Add("Asignatura");
  1222. encabezado2.Add("Promedio");
  1223. //TablaGrafico.Add("- Top 3 Materias con mejor desempeńo:");
  1224. foreach (var item in topPromedio)
  1225. {
  1226. // TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.00") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString());
  1227. fila2 = new List<string>();
  1228. fila2.Add(item.Asignatura);
  1229. fila2.Add(item.Promedio.ToString("#.00"));
  1230. filasTabla2.Add(fila2);
  1231. }
  1232. tabla2.listaEncabezados = encabezado2;
  1233. tabla2.listaCuerpo = filasTabla2;
  1234. TablaGrafico.Add(tabla2);
  1235. }
  1236. var worstPromedio =
  1237. (from p in listaReporte
  1238. group p by p.asignatura into g
  1239. orderby g.Average(p => Convert.ToDouble(p.promedio)) ascending
  1240. select new { Asignatura = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)), Cantidad = g.Count() }).Distinct().Take(3);
  1241. if (worstPromedio.Count() > 3)
  1242. {
  1243. //TablaGrafico.Add("- Top 3 Materias con bajo desempeńo:");
  1244. TablaGrafico tabla4 = new TablaGrafico();
  1245. tabla4.listaCuerpo = new List<List<string>>();
  1246. List<string> encabezado4 = new List<string>();
  1247. List<List<string>> filasTabla4 = new List<List<string>>();
  1248. List<string> fila4 = new List<string>();
  1249. //TablaGrafico.Add("- Top 3 Materias con mejor desempeńo:");
  1250. tabla4.titulo = "Top 3 Asignaturas con mejor desempeńo";
  1251. encabezado4.Add("Asignatura");
  1252. encabezado4.Add("Promedio");
  1253. tabla4.listaEncabezados = encabezado4;
  1254. foreach (var item in worstPromedio)
  1255. {
  1256. //TablaGrafico.Add(item.Asignatura + " - Promedio: " + item.Promedio.ToString("#.00") + " - Cantidad de Evaluaciones: " + item.Cantidad.ToString());
  1257. fila4 = new List<string>();
  1258. fila4.Add(item.Asignatura);
  1259. fila4.Add(item.Promedio.ToString("#.##"));
  1260. filasTabla4.Add(fila4);
  1261. }
  1262. tabla4.listaEncabezados = encabezado4;
  1263. tabla4.listaCuerpo = filasTabla4;
  1264. TablaGrafico.Add(tabla4);
  1265. }
  1266. }
  1267. if (ddlAlumno.Items.Count > 0 && Convert.ToInt32(ddlAlumno.SelectedValue) < 0)
  1268. {
  1269. var worstAlumnos =
  1270. (from p in listaReporte
  1271. group p by p.alumno into g
  1272. orderby g.Average(p => Convert.ToDouble(p.promedio)) ascending
  1273. select new { Alumno = g.Key, Promedio = g.Average(p => Convert.ToDouble(p.promedio)) }).Distinct().Take(3);
  1274. if (worstAlumnos.Count() > 1)
  1275. {
  1276. TablaGrafico tabla5 = new TablaGrafico();
  1277. tabla5.listaCuerpo = new List<List<string>>();
  1278. List<string> encabezado5 = new List<string>();
  1279. List<List<string>> filasTabla5 = new List<List<string>>();
  1280. List<string> fila5 = new List<string>();
  1281. tabla5.titulo = "Top Alumnos a observar";
  1282. encabezado5.Add("Alumno");
  1283. encabezado5.Add("Promedio General");
  1284. //TablaGrafico.Add("- Top Alumnos a observar:");
  1285. foreach (var item in worstAlumnos)
  1286. {
  1287. //TablaGrafico.Add(item.Alumno + " - Promedio General: " + item.Promedio.ToString("#.00"));
  1288. fila5 = new List<string>();
  1289. fila5.Add(item.Alumno);
  1290. fila5.Add(item.Promedio.ToString("#.00"));
  1291. filasTabla5.Add(fila5);
  1292. }
  1293. tabla5.listaEncabezados = encabezado5;
  1294. tabla5.listaCuerpo = filasTabla5;
  1295. TablaGrafico.Add(tabla5);
  1296. }
  1297. }
  1298. }
  1299. /// <summary>
  1300. /// Generars the datos grafico.
  1301. /// </summary>
  1302. private void GenerarDatosGraficoInasistencias()
  1303. {
  1304. TablaGrafico = new List<TablaGrafico>();
  1305. TablaGrafico tabla3 = new TablaGrafico();
  1306. tabla3.listaCuerpo = new List<List<string>>();
  1307. List<string> encabezado3 = new List<string>();
  1308. List<string> fila3 = new List<string>();
  1309. tabla3.titulo = "Periodo Analizado: " + listaReporteInasistencias[0].periodo;
  1310. var cantAlumnos =
  1311. from p in listaReporteInasistencias
  1312. group p by p.alumno into g
  1313. select new { Alumno = g.Key, Cantidad = g.Count() };
  1314. encabezado3.Add("Cantidad de Alumnos");
  1315. fila3.Add(cantAlumnos.Count().ToString());
  1316. encabezado3.Add("Inasistencias Totales");
  1317. fila3.Add(listaReporteInasistencias.Count().ToString());
  1318. tabla3.listaEncabezados = encabezado3;
  1319. tabla3.listaCuerpo.Add(fila3);
  1320. TablaGrafico.Add(tabla3);
  1321. var worstAlumnos =
  1322. (from p in listaReporteInasistencias
  1323. group p by p.alumno into g
  1324. orderby g.Sum(p => Convert.ToDouble(p.inasistencias)) descending
  1325. select new { Alumno = g.Key, Faltas = g.Sum(p => Convert.ToDouble(p.inasistencias)) }).Distinct().Take(3);
  1326. if (worstAlumnos.Count() > 1)
  1327. {
  1328. TablaGrafico tabla2 = new TablaGrafico();
  1329. tabla2.listaCuerpo = new List<List<string>>();
  1330. List<string> encabezado2 = new List<string>();
  1331. List<List<string>> filasTabla2 = new List<List<string>>();
  1332. List<string> fila2 = new List<string>();
  1333. tabla2.titulo = "Top Alumnos a observar";
  1334. encabezado2.Add("Alumno");
  1335. encabezado2.Add("Inasistencias");
  1336. foreach (var item in worstAlumnos)
  1337. {
  1338. fila2 = new List<string>();
  1339. fila2.Add(item.Alumno);
  1340. fila2.Add(item.Faltas.ToString());
  1341. filasTabla2.Add(fila2);
  1342. }
  1343. tabla2.listaEncabezados = encabezado2;
  1344. tabla2.listaCuerpo = filasTabla2;
  1345. TablaGrafico.Add(tabla2);
  1346. }
  1347. var worstAlumnosByMotivo =
  1348. (from p in listaReporteInasistencias
  1349. group p by new { p.alumno, p.motivo } into g
  1350. orderby g.Sum(p => Convert.ToDouble(p.inasistencias)) descending
  1351. select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Faltas = g.Sum(p => Convert.ToDouble(p.inasistencias)) }).Distinct().Take(3);
  1352. if (worstAlumnosByMotivo.Count() > 1)
  1353. {
  1354. TablaGrafico tabla5 = new TablaGrafico();
  1355. tabla5.listaCuerpo = new List<List<string>>();
  1356. List<string> encabezado5 = new List<string>();
  1357. List<List<string>> filasTabla5 = new List<List<string>>();
  1358. List<string> fila5 = new List<string>();
  1359. tabla5.titulo = "Top Alumnos a observar por Cantidad y Motivo de Inasistencias";
  1360. encabezado5.Add("Alumno");
  1361. encabezado5.Add("Motivo");
  1362. encabezado5.Add("Cantidad");
  1363. //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Motivo de Inasistencias:");
  1364. foreach (var item in worstAlumnosByMotivo)
  1365. {
  1366. //TablaGrafico.Add("Alumno: " + item.Alumno + " Motivo: " + item.Motivo + " - Cantidad de Inasistencias: " + item.Faltas);
  1367. fila5 = new List<string>();
  1368. fila5.Add(item.Alumno);
  1369. fila5.Add(item.Motivo);
  1370. fila5.Add(item.Faltas.ToString());
  1371. filasTabla5.Add(fila5);
  1372. }
  1373. tabla5.listaEncabezados = encabezado5;
  1374. tabla5.listaCuerpo = filasTabla5;
  1375. TablaGrafico.Add(tabla5);
  1376. }
  1377. }
  1378. /// <summary>
  1379. /// Generars the datos grafico.
  1380. /// </summary>
  1381. private void GenerarDatosGraficoSanciones()
  1382. {
  1383. TablaGrafico = new List<TablaGrafico>();
  1384. TablaGrafico tabla3 = new TablaGrafico();
  1385. tabla3.listaCuerpo = new List<List<string>>();
  1386. List<string> encabezado3 = new List<string>();
  1387. List<string> fila3 = new List<string>();
  1388. tabla3.titulo = "Periodo Analizado: " + listaReporteSanciones[0].periodo;
  1389. var cantAlumnos =
  1390. from p in listaReporteSanciones
  1391. group p by p.alumno into g
  1392. select new { Alumno = g.Key, Cantidad = g.Count() };
  1393. //TablaGrafico.Add("- Cantidad de Alumnos analizados: " + cantAlumnos.Count().ToString());
  1394. //if (listaReporteSanciones.Count() > 0)
  1395. // TablaGrafico.Add("- Periodo de notas: " + listaReporteSanciones[0].periodo);
  1396. encabezado3.Add("Cantidad de Alumnos");
  1397. fila3.Add(cantAlumnos.Count().ToString());
  1398. //TablaGrafico.Add("- Cantidad de Calificaciones: " + listaReporte.Count.ToString());
  1399. //encabezado3.Add("Sanciones Totales");
  1400. //fila3.Add(listaReporteSanciones.Count().ToString());
  1401. tabla3.listaEncabezados = encabezado3;
  1402. tabla3.listaCuerpo.Add(fila3);
  1403. TablaGrafico.Add(tabla3);
  1404. var worstAlumnos =
  1405. (from p in listaReporteSanciones
  1406. group p by p.alumno into g
  1407. orderby g.Sum(p => Convert.ToInt16(p.sanciones)) descending
  1408. select new { Alumno = g.Key, Sanciones = g.Sum(p => Convert.ToInt16(p.sanciones)) }).Distinct().Take(3);
  1409. if (worstAlumnos.Count() > 1)
  1410. {
  1411. TablaGrafico tabla2 = new TablaGrafico();
  1412. tabla2.listaCuerpo = new List<List<string>>();
  1413. List<string> encabezado2 = new List<string>();
  1414. List<List<string>> filasTabla2 = new List<List<string>>();
  1415. List<string> fila2 = new List<string>();
  1416. //TablaGrafico.Add("- Desviacion Estandar por materia: ");
  1417. tabla2.titulo = "Top Alumnos a observar por Cantidad de Sanciones";
  1418. encabezado2.Add("Alumno");
  1419. encabezado2.Add("Sanciones");
  1420. //TablaGrafico.Add("- Top Alumnos a observar por Cantidad de Sanciones:");
  1421. foreach (var item in worstAlumnos)
  1422. {
  1423. //TablaGrafico.Add("Alumno: " + item.Alumno + " - Cantidad de Sanciones: " + item.Sanciones);
  1424. fila2 = new List<string>();
  1425. fila2.Add(item.Alumno);
  1426. fila2.Add(item.Sanciones.ToString());
  1427. filasTabla2.Add(fila2);
  1428. }
  1429. tabla2.listaEncabezados = encabezado2;
  1430. tabla2.listaCuerpo = filasTabla2;
  1431. TablaGrafico.Add(tabla2);
  1432. }
  1433. var SancionesPorTipo =
  1434. (from p in listaReporteSanciones
  1435. group p by p.tipo into g
  1436. orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending
  1437. select new { Tipo = g.Key, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3);
  1438. TablaGrafico tabla4 = new TablaGrafico();
  1439. tabla4.listaCuerpo = new List<List<string>>();
  1440. List<string> encabezado4 = new List<string>();
  1441. List<List<string>> filasTabla4 = new List<List<string>>();
  1442. List<string> fila4 = new List<string>();
  1443. //TablaGrafico.Add("- Desviacion Estandar por materia: ");
  1444. tabla4.titulo = "Cantidad de Sanciones según Tipo";
  1445. encabezado4.Add("Alumno");
  1446. encabezado4.Add("Sanciones");
  1447. //TablaGrafico.Add("- Cantidad de Sanciones según Tipo:");
  1448. foreach (var item in SancionesPorTipo)
  1449. {
  1450. //TablaGrafico.Add("Tipo de Sancion: " + item.Tipo + " - Cantidad de Sanciones: " + item.Sanciones);
  1451. fila4 = new List<string>();
  1452. fila4.Add(item.Tipo);
  1453. fila4.Add(item.Sanciones.ToString());
  1454. filasTabla4.Add(fila4);
  1455. }
  1456. tabla4.listaEncabezados = encabezado4;
  1457. tabla4.listaCuerpo = filasTabla4;
  1458. TablaGrafico.Add(tabla4);
  1459. var SancionesPorMotivo = (from p in listaReporteSanciones
  1460. group p by p.motivo into g
  1461. orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending
  1462. select new { Motivo = g.Key, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3);
  1463. TablaGrafico tabla5 = new TablaGrafico();
  1464. tabla5.listaCuerpo = new List<List<string>>();
  1465. List<string> encabezado5 = new List<string>();
  1466. List<List<string>> filasTabla5 = new List<List<string>>();
  1467. List<string> fila5 = new List<string>();
  1468. tabla5.titulo = "Cantidad de Sanciones según Motivo";
  1469. encabezado5.Add("Motivo");
  1470. encabezado5.Add("Cantidad");
  1471. //TablaGrafico.Add("- Cantidad de Sanciones según Motivo:");
  1472. foreach (var item in SancionesPorMotivo)
  1473. {
  1474. //TablaGrafico.Add("Motivo de Sancion: " + item.Motivo + " - Cantidad de Sanciones: " + item.Sanciones);
  1475. fila5 = new List<string>();
  1476. fila5.Add(item.Motivo);
  1477. fila5.Add(item.Sanciones.ToString());
  1478. filasTabla5.Add(fila5);
  1479. }
  1480. tabla5.listaEncabezados = encabezado5;
  1481. tabla5.listaCuerpo = filasTabla5;
  1482. TablaGrafico.Add(tabla5);
  1483. var worstAlumnosByMotivo = (from p in listaReporteSanciones
  1484. group p by new { p.alumno, p.motivo } into g
  1485. orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending
  1486. select new { Alumno = g.Key.alumno, Motivo = g.Key.motivo, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3);
  1487. if (worstAlumnosByMotivo.Count() > 1)
  1488. {
  1489. //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Motivo de Sanciones:");
  1490. TablaGrafico tabla6 = new TablaGrafico();
  1491. tabla6.listaCuerpo = new List<List<string>>();
  1492. List<string> encabezado6 = new List<string>();
  1493. List<List<string>> filasTabla6 = new List<List<string>>();
  1494. List<string> fila6 = new List<string>();
  1495. tabla6.titulo = "Top Alumnos a observar por Cantidad y Motivo de Sanciones";
  1496. encabezado6.Add("Alumno");
  1497. encabezado6.Add("Motivo");
  1498. encabezado6.Add("Cantidad");
  1499. foreach (var item in worstAlumnosByMotivo)
  1500. {
  1501. //TablaGrafico.Add("Alumno: " + item.Alumno + " Motivo: " + item.Motivo + " - Cantidad de Sanciones: " + item.Sanciones);
  1502. fila6 = new List<string>();
  1503. fila6.Add(item.Alumno);
  1504. fila6.Add(item.Motivo);
  1505. fila6.Add(item.Sanciones.ToString());
  1506. filasTabla6.Add(fila6);
  1507. }
  1508. tabla6.listaEncabezados = encabezado6;
  1509. tabla6.listaCuerpo = filasTabla6;
  1510. TablaGrafico.Add(tabla6);
  1511. }
  1512. var worstAlumnosByTipo =
  1513. (from p in listaReporteSanciones
  1514. group p by new { p.alumno, p.tipo } into g
  1515. orderby g.Sum(p => Convert.ToInt32(p.sanciones)) descending
  1516. select new { Alumno = g.Key.alumno, Tipo = g.Key.tipo, Sanciones = g.Sum(p => Convert.ToInt32(p.sanciones)) }).Distinct().Take(3);
  1517. if (worstAlumnosByTipo.Count() > 1)
  1518. {
  1519. //TablaGrafico.Add("- Top Alumnos a observar por Cantidad y Tipo de Sanciones:");
  1520. TablaGrafico tabla7 = new TablaGrafico();
  1521. tabla7.listaCuerpo = new List<List<string>>();
  1522. List<string> encabezado7 = new List<string>();
  1523. List<List<string>> filasTabla7 = new List<List<string>>();
  1524. List<string> fila7 = new List<string>();
  1525. tabla7.titulo = "Top Alumnos a observar por Cantidad y Tipo de Sanciones";
  1526. encabezado7.Add("Alumno");
  1527. encabezado7.Add("Tipo");
  1528. encabezado7.Add("Cantidad");
  1529. foreach (var item in worstAlumnosByTipo)
  1530. {
  1531. //TablaGrafico.Add("Alumno: " + item.Alumno + " Tipo: " + item.Tipo + " - Cantidad de Sanciones: " + item.Sanciones);
  1532. fila7 = new List<string>();
  1533. fila7.Add(item.Alumno);
  1534. fila7.Add(item.Tipo);
  1535. fila7.Add(item.Sanciones.ToString());
  1536. filasTabla7.Add(fila7);
  1537. }
  1538. tabla7.listaEncabezados = encabezado7;
  1539. tabla7.listaCuerpo = filasTabla7;
  1540. TablaGrafico.Add(tabla7);
  1541. }
  1542. }
  1543. /// <summary>
  1544. /// Cargars the grilla resultado.
  1545. /// </summary>
  1546. private void CargarGrillaResultado()
  1547. {
  1548. switch (rdlAccion.SelectedValue)
  1549. {
  1550. case "0":
  1551. if (listaReporte != null)
  1552. rptResultado.CargarReporte<RptPromedioCalificacionesPeriodo>(listaReporte);
  1553. break;
  1554. case "1":
  1555. if (listaReporteInasistencias != null)
  1556. rptResultado.CargarReporte<RptConsolidadoInasistenciasPeriodo>(listaReporteInasistencias);
  1557. break;
  1558. case "2":
  1559. if (listaReporteSanciones != null)
  1560. rptResultado.CargarReporte<RptConsolidadoSancionesPeriodo>(listaReporteSanciones);
  1561. break;
  1562. default:
  1563. break;
  1564. }
  1565. }
  1566. #endregion
  1567. }
  1568. }