示例#1
0
        /// <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);
        }