/// <summary> /// Copia los atributos del objeto /// </summary> /// <param name="source">Objeto origen</param> protected void CopyValues(SesionInfo source, InstructorInfo instructor, ClaseTeoricaList teoricas, ClasePracticaList practicas, ClaseExtraList extras, string clases, long grupo, bool print_alumno) { if (source == null) { return; } Oid = source.Oid; _base.Record.OidHorario = source.OidHorario; _base.Record.OidClaseTeorica = source.OidClaseTeorica; _base.Record.OidClasePractica = source.OidClasePractica; _base.Record.OidClaseExtra = source.OidClaseExtra; _base.Record.OidProfesor = source.OidProfesor; _base.Record.Fecha = source.Fecha; _base.Record.Hora = source.Hora; _base.Record.Estado = source.Estado; _base.Record.Observaciones = source.Observaciones; _base.Record.Grupo = grupo; _base.Record.Forzada = source.Forzada; if (OidClaseTeorica != 0) { ClaseTeoricaInfo clase = teoricas.GetItem(OidClaseTeorica); if (clase != null) { _modulo = ModuloInfo.Get(clase.OidModulo, false).Alias; _submodulo = SubmoduloInfo.Get(clase.OidSubmodulo, false).Codigo; // clases; if (instructor != null) { foreach (Submodulo_InstructorInfo item in instructor.Submodulos) { if (item.OidSubmodulo == clase.OidSubmodulo && item.FechaInicio.Date <= source.Fecha.Date && item.FechaFin >= source.Fecha.Date ) { instructor = InstructorInfo.Get(item.OidInstructorSuplente); break; } } if (instructor != null) { _instructor = instructor.Apellidos + ", " + instructor.NombrePropio; } } } } else { if (OidClasePractica != 0) { ClasePracticaInfo clase = practicas.GetItem(OidClasePractica); if (clase != null) { _modulo = ModuloInfo.Get(clase.OidModulo, false).Alias; _submodulo = clases; _titulo = clase.Alias; if (instructor != null) { foreach (Submodulo_InstructorInfo item in instructor.Submodulos) { if (item.OidSubmodulo == clase.OidSubmodulo && item.FechaInicio.Date <= source.Fecha.Date && item.FechaFin >= source.Fecha.Date ) { instructor = InstructorInfo.Get(item.OidInstructorSuplente); break; } } if (instructor != null) { _instructor = instructor.Apellidos + ", " + instructor.NombrePropio; } } } } else { if (OidClaseExtra != 0) { ClaseExtraInfo clase = extras.GetItem(OidClaseExtra); if (clase != null) { _modulo = ModuloInfo.Get(clase.OidModulo, false).Alias; _submodulo = SubmoduloInfo.Get(clase.OidSubmodulo, false).Codigo; //clases; if (instructor != null) { foreach (Submodulo_InstructorInfo item in instructor.Submodulos) { if (item.OidSubmodulo == clase.OidSubmodulo && item.FechaInicio.Date <= source.Fecha.Date && item.FechaFin >= source.Fecha.Date ) { instructor = InstructorInfo.Get(item.OidInstructorSuplente); break; } } if (instructor != null) { _instructor = instructor.Apellidos + ", " + instructor.NombrePropio; } } } } } } if (print_alumno) { _instructor = string.Empty; } }
private static void FormatReport(HorarioRpt rpt, ListaSesiones list, bool alumnos, /*bool autorizado,*/ ClaseTeoricaList teoricas, List <ClasePracticaList> practicas, ClaseExtraList extras /*, * InstructorList instructores*/) { List <string> lista = new List <string>(); lista.Add("Lunes8AM"); lista.Add("Lunes"); lista.Add("Lunes2"); lista.Add("Lunes3"); lista.Add("Lunes4"); lista.Add("Lunes5"); lista.Add("Lunes6"); lista.Add("Lunes7"); lista.Add("Lunes8"); lista.Add("Lunes9"); lista.Add("Lunes10"); lista.Add("Lunes11"); lista.Add("Lunes12"); lista.Add("Lunes13"); lista.Add("Martes8AM"); lista.Add("Martes"); lista.Add("Martes2"); lista.Add("Martes3"); lista.Add("Martes4"); lista.Add("Martes5"); lista.Add("Martes6"); lista.Add("Martes7"); lista.Add("Martes8"); lista.Add("Martes9"); lista.Add("Martes10"); lista.Add("Martes11"); lista.Add("Martes12"); lista.Add("Martes13"); lista.Add("Miercoles8AM"); lista.Add("Miercoles"); lista.Add("Miercoles2"); lista.Add("Miercoles3"); lista.Add("Miercoles4"); lista.Add("Miercoles5"); lista.Add("Miercoles6"); lista.Add("Miercoles7"); lista.Add("Miercoles8"); lista.Add("Miercoles9"); lista.Add("Miercoles10"); lista.Add("Miercoles12"); lista.Add("Miercoles11"); lista.Add("Miercoles13"); lista.Add("Jueves8AM"); lista.Add("Jueves"); lista.Add("Jueves2"); lista.Add("Jueves3"); lista.Add("Jueves4"); lista.Add("Jueves5"); lista.Add("Jueves6"); lista.Add("Jueves7"); lista.Add("Jueves8"); lista.Add("Jueves9"); lista.Add("Jueves10"); lista.Add("Jueves11"); lista.Add("Jueves12"); lista.Add("Jueves13"); lista.Add("Viernes8AM"); lista.Add("Viernes"); lista.Add("Viernes2"); lista.Add("Viernes3"); lista.Add("Viernes4"); lista.Add("Viernes5"); lista.Add("Viernes6"); lista.Add("Viernes7"); lista.Add("Viernes8"); lista.Add("Viernes9"); lista.Add("Viernes10"); lista.Add("Viernes11"); lista.Add("Viernes12"); lista.Add("Viernes13"); lista.Add("Sabado"); lista.Add("Sabado2"); lista.Add("Sabado3"); lista.Add("Sabado4"); lista.Add("Sabado5"); InstructorList instructores = InstructorList.GetList(true); int ultimo = 0; int n_clases = 0; string aux = string.Empty; foreach (SesionAuxiliar info in list) { int indice = list.IndexOf(info); //si la sesión no tienen ninguna clase asignada, se elimina la etiqueta if (info.OidClaseTeorica <= 0 && info.OidClasePractica == 0 && info.OidClaseExtra == 0) { rpt.SetParameterValue(lista[indice], ""); ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = true; } else { //si la sesión tiene una clase asignada una clase teórica if (info.OidClaseTeorica != 0) { ClaseTeoricaInfo teorica = teoricas.GetItem(info.OidClaseTeorica); //si no es la primera clase del día //se comprueba si pertenece a la misma clase que la hora anterior if (indice % 14 != 0 && list[indice - 1].OidClaseTeorica > 0) { bool misma_clase = false; if (teorica.OidModulo == teoricas.GetItem(list[indice - 1].OidClaseTeorica).OidModulo && teorica.OidSubmodulo == teoricas.GetItem(list[indice - 1].OidClaseTeorica).OidSubmodulo && info.OidProfesor == list[indice - 1].OidProfesor) { misma_clase = true; rpt.SetParameterValue(lista[indice], ""); ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = true; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; int ind = aux.IndexOf(instructor); if (ind == -1) { misma_clase = false; } } else { aux = Environment.NewLine + aux; } if (misma_clase) { ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Height = ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Height + 720; rpt.SetParameterValue(lista[ultimo], aux); if (n_clases == 1) { ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Top += 80; } n_clases++; } } if (!misma_clase) { ModuloInfo modulo = ModuloInfo.Get(teorica.OidModulo, false); aux = Environment.NewLine + modulo.Alias + Environment.NewLine; aux += teorica.Submodulo + Environment.NewLine; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; aux += instructor; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = false; ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Top -= 80; rpt.SetParameterValue(lista[indice], aux); ultimo = indice; n_clases = 1; } } else { ModuloInfo modulo = ModuloInfo.Get(teorica.OidModulo, false); aux = Environment.NewLine + modulo.Alias + Environment.NewLine; aux += teorica.Submodulo + Environment.NewLine; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; aux += instructor; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = false; ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Top -= 80; rpt.SetParameterValue(lista[indice], aux); ultimo = indice; n_clases = 1; } } else { if (info.OidClasePractica != 0) { ClasePracticaInfo practica = practicas[(int)info.Grupo].GetItem(info.OidClasePractica); //if (indice % 14 != 0) { int ind_aux = 1; bool esta = false; bool anterior = false; //if (indice % 14 != 0) //{ while (ind_aux < 5 && (indice - ind_aux) >= 0 && (indice - ind_aux) % 14 < indice % 14) { if (list[indice - ind_aux].OidClasePractica != 0 && practica.OidModulo == practicas[(int)list[indice - ind_aux].Grupo].GetItem(list[indice - ind_aux].OidClasePractica).OidModulo && info.OidProfesor == list[indice - ind_aux].OidProfesor && info.Grupo == list[indice - ind_aux].Grupo) //comprobación de grupo por si fuera la misma práctica para los dos grupos { esta = true; break; } if (list[indice - ind_aux].OidClasePractica != 0) { anterior = true; } ind_aux++; } ind_aux = 1; bool posterior = false; while (ind_aux < 5 && (indice + ind_aux) % 14 > indice % 14 && (indice + ind_aux) < 75) { if (list[indice + ind_aux].OidClasePractica != 0 && list[indice + ind_aux].OidClasePractica != list[indice].OidClasePractica) { posterior = true; } ind_aux++; } //} if (!esta) { aux = Environment.NewLine + practica.Modulo + Environment.NewLine; aux += practica.Alias + " G" + list[indice].Grupo.ToString() + Environment.NewLine; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; aux += instructor; aux += Environment.NewLine; aux += "5H"; } rpt.SetParameterValue(lista[indice], aux); if (!anterior) { if (posterior) { ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Height = 1560; } else { ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Height = 3200; } } else { int top = 0; int i = 1; while (i < 5 && indice - i >= 0) { if (!((FieldObject)(rpt.Section3.ReportObjects[lista[indice - i]])).ObjectFormat.EnableSuppress) { top = ((FieldObject)(rpt.Section3.ReportObjects[lista[indice - i]])).Top + 1560 + 240; break; } i++; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Height = 1560; ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Top = top; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = false; } else { rpt.SetParameterValue(lista[indice], ""); ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = true; } } } else { ClaseExtraInfo extra = extras.GetItem(info.OidClaseExtra); //si no es la primera clase del día //se comprueba si pertenece a la misma clase que la hora anterior if (indice % 14 != 0 && list[indice - 1].OidClaseExtra > 0) { bool misma_clase = false; if (extra.OidModulo == extras.GetItem(list[indice - 1].OidClaseExtra).OidModulo && extra.OidSubmodulo == extras.GetItem(list[indice - 1].OidClaseExtra).OidSubmodulo && info.OidProfesor == list[indice - 1].OidProfesor) { misma_clase = true; rpt.SetParameterValue(lista[indice], ""); ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = true; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; int ind = aux.IndexOf(instructor); if (ind == -1) { misma_clase = false; } } else { aux = Environment.NewLine + aux; } if (misma_clase) { ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Height = ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Height + 720; rpt.SetParameterValue(lista[ultimo], aux); if (n_clases == 1) { ((FieldObject)(rpt.Section3.ReportObjects[lista[ultimo]])).Top += 80; } n_clases++; } } if (!misma_clase) { ModuloInfo modulo = ModuloInfo.Get(extra.OidModulo, false); aux = Environment.NewLine + modulo.Alias + Environment.NewLine; aux += extra.Submodulo + Environment.NewLine; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; aux += instructor; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = false; ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Top -= 80; rpt.SetParameterValue(lista[indice], aux); ultimo = indice; n_clases = 1; } } else { ModuloInfo modulo = ModuloInfo.Get(extra.OidModulo, false); aux = Environment.NewLine + modulo.Alias + Environment.NewLine; aux += extra.Submodulo + Environment.NewLine; if (!alumnos) { InstructorInfo item = instructores.GetItem(info.OidProfesor); string instructor = item.Alias; instructor += Environment.NewLine; aux += instructor; } ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).ObjectFormat.EnableSuppress = false; ((FieldObject)(rpt.Section3.ReportObjects[lista[indice]])).Top -= 80; rpt.SetParameterValue(lista[indice], aux); ultimo = indice; n_clases = 1; } } } } } }
/// <summary> /// Retrieve the complete list from db /// </summary> /// <returns>SesionList</returns> public static SesionList GetSesionesList() { CriteriaEx criteria = Sesion.GetCriteria(Sesion.OpenSession()); criteria.Childs = false; criteria.Query = Sesions.SELECT_SESIONES_ORDENADAS(); //No criteria. Retrieve all de List SesionList list = DataPortal.Fetch <SesionList>(criteria); CloseSession(criteria.SessionCode); SesionList sesiones = new SesionList(); ClaseTeoricaList teoricas = ClaseTeoricaList.GetList(); ClasePracticaList practicas = ClasePracticaList.GetList(); ClaseExtraList extras = ClaseExtraList.GetList(); int count = 0; long oid_modulo = 0; sesiones.IsReadOnly = false; foreach (SesionInfo item in list) { if (item.OidClaseTeorica > 0 || item.OidClasePractica > 0 || item.OidClaseExtra > 0) { long oid_modulo_item = 0; if (item.OidClasePractica != 0) { oid_modulo_item = practicas.GetItem(item.OidClasePractica).OidModulo; } if (item.OidClaseTeorica != 0) { oid_modulo_item = teoricas.GetItem(item.OidClaseTeorica).OidModulo; } if (item.OidClaseExtra != 0) { oid_modulo_item = extras.GetItem(item.OidClaseExtra).OidModulo; } if (oid_modulo_item > 0) { if (count == 0) { sesiones.AddItem(item); oid_modulo = oid_modulo_item; count++; } else { SesionInfo ultima = sesiones[sesiones.Count - 1]; if (ultima.OidHorario == item.OidHorario && ultima.Fecha.Date.Equals(item.Fecha.Date) && ultima.Hora.AddHours(count).Hour.Equals(item.Hora.Hour) && ultima.OidProfesor == item.OidProfesor && oid_modulo_item == oid_modulo && ((ultima.OidClasePractica != 0 && item.OidClasePractica != 0) || (ultima.OidClaseTeorica != 0 && item.OidClaseTeorica != 0) || (ultima.OidClaseExtra != 0 && item.OidClaseExtra != 0))) { count++; if (count == 3) { count = 0; } } else { sesiones.AddItem(item); oid_modulo = oid_modulo_item; count = 1; } } } } } sesiones.IsReadOnly = true; return(sesiones); }