PageRenderTime 86ms CodeModel.GetById 11ms app.highlight 64ms 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

Large files files are truncated, but you can click here to view the full file

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

Large files files are truncated, but you can click here to view the full file