public void AsignaSesionesOtrosSubmodulos(int hora_inicial, int n_horas, int horas_asignadas, ClaseTeoricaInfo clase, ListaSesiones lista_sesiones, long sesiones_asignadas) { for (int i = horas_asignadas; i < n_horas; i++) { //intentar buscar un submodulo del mismo modulo que la clase asignada //con un orden secundario superior, que el instructor sea el mismo e //intentar asignarla al hueco ClaseTeoricaInfo cl_aux = null; foreach (ClaseTeoricaInfo clase_aux in _teoricas) { if (clase_aux.OidModulo == clase.OidModulo && clase_aux.OidSubmodulo != clase.OidSubmodulo //&& clase_aux.OrdenSecundario >= clase.OrdenSecundario && clase_aux.EEstadoClase == EEstadoClase.NoProgramada) { cl_aux = clase_aux; break; } } if (cl_aux != null) { AsignaSesion(cl_aux, hora_inicial + i, 1, lista_sesiones, sesiones_asignadas); } } }
/// <summary> /// Función que devuelve el nombre del módulo a la que pertenece una clase a partir del /// Oid y el tipo de la misma /// </summary> /// <param name="oid"></param> /// <param name="tipo"></param> /// <param name="teoricas"></param> /// <param name="practicas"></param> /// <param name="extras"></param> /// <param name="modulos"></param> /// <returns></returns> public string ObtieneNombreModulo(long oid, long tipo, ModuloList modulos) { long oid_clase = oid; long oid_modulo = 0; if (oid_clase < 0) { return(string.Empty); } if (tipo.Equals(0)) { ClaseTeoricaInfo clase = _teoricas.GetItem(oid_clase); oid_modulo = clase.OidModulo; } else { if (tipo.Equals(1)) { ClasePracticaInfo clase = null; foreach (ClasePracticaList lista in _practicas) { clase = lista.GetItem(oid_clase); if (clase != null) { break; } } oid_modulo = clase.OidModulo; } } ModuloInfo modulo = modulos.GetItem(oid_modulo); return(modulo.Texto); }
/// <summary> /// Comprueba que queden clases del mismo submódulo por impartir para rellenar el hueco con el /// número de horas de la sesión /// </summary> /// <param name="clase"></param> /// <param name="n_horas"></param> /// <returns></returns> public bool QuedanClasesSubmodulo(ClaseTeoricaInfo clase, int n_horas, out int horas_restantes) { horas_restantes = (int)(clase.TotalClases - clase.OrdenTerciario + 1); return(horas_restantes >= n_horas); }
/// <summary> /// Copia los atributos del objeto /// </summary> /// <param name="source">Objeto origen</param> protected void CopyValues(SesionCronogramaInfo source, ModuloList modulos, ClaseTeoricaList teoricas, ClasePracticaList practicas) { if (source == null) { return; } Oid = source.Oid; _base.Record.OidCronograma = source.OidCronograma; _base.Record.OidClaseTeorica = source.OidClaseTeorica; _base.Record.OidClasePractica = source.OidClasePractica; _base.Record.Semana = source.Semana; _base.Record.Dia = source.Dia; _base.Record.Turno = source.Turno; _base.Record.Numero = source.Numero; _base.Record.Texto = source.Texto; _base.Clase = source.Clase; _base.Modulo = source.Modulo; _base.Record.Fecha = source.Fecha; _base.Record.Hora = source.Hora; _base.Duracion = source.Duracion; long oid_modulo = 0; if (source.OidClaseTeorica > 0) { ClaseTeoricaInfo teorica = teoricas.GetItem(source.OidClaseTeorica); if (teorica != null) { oid_modulo = teorica.OidModulo; } } if (source.OidClasePractica > 0) { ClasePracticaInfo practica = practicas.GetItem(source.OidClasePractica); if (practica != null) { oid_modulo = practica.OidModulo; } } if (oid_modulo > 0) { ModuloInfo modulo = modulos.GetItem(oid_modulo); if (modulo != null) { _base.Modulo = modulo.NumeroModulo + " " + modulo.Texto; } } //if (_base.Record.OidClaseTeorica != 0) // _base.Duracion = "1"; //else // _base.Duracion = "5"; }
public bool AsignaInstructorTeorica(ClaseTeoricaInfo clase, int hora_inicial, int n_horas, ListaSesiones lista_sesiones, long sesiones_asignadas) { if (AsignaInstructorTeorica2(hora_inicial, n_horas, clase, lista_sesiones, sesiones_asignadas)) { return(true); } return(false); }
public void CopyFrom(ClaseTeoricaInfo source) { Oid = Convert.ToInt64(source.Tipo.ToString() + source.Oid.ToString("000000")); _titulo = source.Titulo; _oid_submodulo = source.OidSubmodulo; _oid_modulo = source.OidModulo; _tipo = (long)ETipoClase.Teorica; _orden_primario = source.OrdenPrimario; _orden_secundario = source.OrdenSecundario; _orden_terciario = source.OrdenTerciario; _estado = source.Estado; _incompatible = 0; _modulo = source.Modulo; _submodulo = source.Submodulo; _alias = source.Alias; _grupo = 0; }
public bool AsignaInstructorTeorica2(int hora_inicial, int n_horas, ClaseTeoricaInfo clase, ListaSesiones lista_sesiones, long sesiones_asignadas) { int horas_restantes = 0; if (QuedanClasesSubmodulo(clase, n_horas, out horas_restantes)) { AsignaSesion(clase, hora_inicial, n_horas, lista_sesiones, sesiones_asignadas); } else { AsignaSesion(clase, hora_inicial, horas_restantes, lista_sesiones, sesiones_asignadas); AsignaSesionesOtrosSubmodulos(hora_inicial, n_horas, horas_restantes, clase, lista_sesiones, sesiones_asignadas); } return(true); }
/// <summary> /// Comprueba que no se impartan varias sesiones del mismo módulo el mismo día /// </summary> /// <returns></returns> public bool MismoModuloMismoDia(int indice_horario, ClaseTeoricaInfo clase, ListaSesiones lista_sesiones) { int indice_dia = indice_horario - (indice_horario % 14); int contador = 0; while (contador < 14 && contador + indice_dia < 75) { if (clase.OidModulo == lista_sesiones[indice_dia + contador].OidModulo && indice_dia + contador != indice_horario && lista_sesiones[indice_dia + contador].OidClaseTeorica > 0) { return(true); } contador++; } return(false); }
public void CopyValues(ClaseTeoricaInfo source) { if (source == null) { return; } _record.CopyValues(source.Base.Record); _modulo = source.Modulo; _submodulo = source.Submodulo; _codigo_orden = source.CodigoOrden; _estado = source.Estado; _instructor = source.Instructor; _fecha = source.Fecha; _hora = source.Hora; _total_modulo = source.TotalModulo; _total_submodulo = source.TotalSubmodulo; }
protected virtual void CopyFrom(ClaseTeoricaInfo source) { if (source == null) { return; } Oid = source.Oid; OidPlan = source.OidPlan; OidModulo = source.OidModulo; OidSubmodulo = source.OidSubmodulo; OrdenPrimario = source.OrdenPrimario; OrdenSecundario = source.OrdenSecundario; Titulo = source.Titulo; Observaciones = source.Observaciones; OrdenTerciario = source.OrdenTerciario; Alias = source.Alias; TotalClases = source.TotalClases; Duracion = source.Duracion; }
public bool AsignaSesionTeorica(int hora_inicial, int n_horas, ListaSesiones lista_sesiones, long sesiones_asignadas, bool mismo_modulo) { int indice_teorica = 0; //Bucle para buscar una clase que pueda ir la sesión while (indice_teorica < _teoricas.Count) { ClaseTeoricaInfo clase = _teoricas[indice_teorica]; if (clase.EEstadoClase == EEstadoClase.NoProgramada && (!mismo_modulo || (mismo_modulo && !MismoModuloMismoDia(hora_inicial, clase, lista_sesiones)))) // aún no está programada { if (AsignaInstructorTeorica(clase, hora_inicial, n_horas, lista_sesiones, sesiones_asignadas)) { return(true); } } indice_teorica++; } return(false); }
public void AsignaSesion(ClaseTeoricaInfo clase, int hora_inicial, int n_horas, ListaSesiones lista_sesiones, long sesiones_asignadas) { clase.EEstadoClase = EEstadoClase.Programada; sesiones_asignadas++; lista_sesiones[hora_inicial].AsignaClaseASesion(clase); int indice_clase = _teoricas.IndexOf(clase) + 1; int asignadas = 1; while (indice_clase < _teoricas.Count && asignadas < n_horas) { if (_teoricas[indice_clase].OidSubmodulo == clase.OidSubmodulo && _teoricas[indice_clase].EEstadoClase == EEstadoClase.NoProgramada) { _teoricas[indice_clase].EEstadoClase = EEstadoClase.Programada; sesiones_asignadas++; lista_sesiones[hora_inicial + asignadas].AsignaClaseASesion(_teoricas[indice_clase]); asignadas++; } indice_clase++; } }
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> /// 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; } }
public void GeneraCronograma() { int semana = 1; int sesiones = -1; DateTime inicio_semana = _inicio_cronograma; int semanas_no_programadas = 0; while (semanas_no_programadas < 8) { sesiones = _cronograma.Sesiones.Count; ListaSesiones lista = GeneraHorario(semana, inicio_semana); for (int i = 0; i < lista.Count; i++) { if (lista[i].OidClaseTeorica > 0 || lista[i].OidClasePractica > 0) { SesionCronograma sesion = SesionCronograma.NewChild(_cronograma); sesion.MarkItemChild(); _cronograma.Sesiones.Add(sesion); sesion.OidClaseTeorica = lista[i].OidClaseTeorica; sesion.OidClasePractica = lista[i].OidClasePractica; sesion.Semana = semana; sesion.Dia = (int)i / 14 + 1; sesion.Turno = i % 14 + 1; sesion.Numero = 0; sesion.Duracion = string.Empty; sesion.Texto = string.Empty; sesion.Clase = string.Empty; sesion.Modulo = string.Empty; sesion.Fecha = lista[i].Fecha; sesion.Hora = lista[i].Hora; if (sesion.OidClaseTeorica > 0) { ClaseTeoricaInfo teorica = _teoricas.GetItem(sesion.OidClaseTeorica); sesion.Duracion = "1:00"; sesion.Texto = teorica.Alias; sesion.Clase = teorica.Alias; sesion.Modulo = teorica.Modulo; sesion.Submodulo = teorica.Submodulo; sesion.Alias = teorica.Alias; sesion.ETipoClase = ETipoClase.Teorica; sesion.OrdenPrimario = teorica.OrdenPrimario; sesion.OrdenSecundario = teorica.OrdenSecundario; sesion.OrdenTerciario = teorica.OrdenTerciario; } if (sesion.OidClasePractica > 0) { ClasePracticaInfo practica = _practicas[(int)lista[i].Grupo].GetItem(sesion.OidClasePractica); sesion.Duracion = practica.Duracion.ToString() + ":00"; sesion.Texto = practica.Alias + "G" + lista[i].Grupo.ToString(); sesion.Clase = practica.Alias + "G" + lista[i].Grupo.ToString(); sesion.Modulo = practica.Modulo; sesion.Submodulo = practica.Submodulo; sesion.Alias = practica.Alias; sesion.ETipoClase = ETipoClase.Practica; sesion.OrdenPrimario = practica.OrdenPrimario; sesion.OrdenSecundario = practica.OrdenSecundario; sesion.OrdenTerciario = practica.OrdenTerciario; sesion.Grupo = lista[i].Grupo; sesion.Incompatible = practica.Incompatible; } } } semana++; while (inicio_semana.DayOfWeek != DayOfWeek.Monday) { inicio_semana = inicio_semana.AddDays(-1); } inicio_semana = inicio_semana.AddDays(7); if (sesiones == _cronograma.Sesiones.Count) { semanas_no_programadas++; } else { semanas_no_programadas = 0; } if (inicio_semana > _fin_cronograma) { break; } } }