protected override void RellenaPromociones()
        {
            if (_entity.Promociones == null)
            {
                return;
            }

            _promociones_select = new Dictionary <string, PromocionInfo>();

            foreach (ExamenPromocionInfo item in _entity.Promociones)
            {
                PromocionInfo info = promociones.GetItem(item.OidPromocion);
                if (info != null)
                {
                    _promociones_select.Add(info.Numero + " - " + info.Nombre, info);
                }
            }

            Promociones_CLB.Items.Clear();

            foreach (KeyValuePair <string, PromocionInfo> item in _promociones_select)
            {
                Promociones_CLB.Items.Add(item.Key, true);
            }
        }
Example #2
0
 public DateSelectForm(PromocionInfo promo, bool IsModal, Form parent)
     : base(IsModal, parent)
 {
     _promocion = promo;
     InitializeComponent();
     SetFormData();
 }
        private void Filtrar_BT_Click(object sender, EventArgs e)
        {
            while (Arbol_TV.Nodes.Count != 0)
            {
                int count = Arbol_TV.Nodes.Count - 1;
                for (int i = count; i >= 0; i--)
                {
                    Arbol_TV.Nodes.Remove(Arbol_TV.Nodes[i]);
                }
            }

            if (((ComboBoxSource)Promocion_CB.SelectedItem).Oid == 0)
            {
                foreach (PromocionInfo item in _promociones)
                {
                    SetAlumnosValues(null, item);
                }
            }
            else
            {
                PromocionInfo p = _promociones.GetItem(((ComboBoxSource)Promocion_CB.SelectedItem).Oid);
                if (p != null)
                {
                    SetAlumnosValues(null, p);
                }
            }
        }
 private void Arbol_TV_AfterCheck(object sender, TreeViewEventArgs e)
 {
     if (e.Node.Level == 0)
     {
         foreach (TreeNode t in e.Node.Nodes)
         {
             t.Checked = e.Node.Checked;
         }
     }
     else
     {
         if (e.Node.Level == 1)
         {
             AlumnoInfo alumno = e.Node.Tag as AlumnoInfo;
             foreach (Alumno_PromocionInfo item in alumno.Promociones)
             {
                 foreach (TreeNode t in Arbol_TV.Nodes)
                 {
                     PromocionInfo promocion = t.Tag as PromocionInfo;
                     if (promocion.Oid == item.OidPromocion)
                     {
                         foreach (TreeNode n in t.Nodes)
                         {
                             if ((n.Tag as AlumnoInfo).Oid == alumno.Oid && n.Checked != e.Node.Checked)
                             {
                                 n.Checked = e.Node.Checked;
                             }
                         }
                         break;
                     }
                 }
             }
         }
     }
 }
Example #5
0
        public override void RefreshSecondaryData()
        {
            Plan_TB.Text = PlanEstudiosInfo.Get(_entity.OidPlan).Nombre;
            PgMng.Grow(string.Empty, "Plan_TB");

            Promocion_TB.Text = PromocionInfo.Get(_entity.OidPromocion).Nombre;
            PgMng.Grow(string.Empty, "Promocion_TB");
        }
Example #6
0
        /// <summary>
        /// Implementa Save_button_Click
        /// </summary>
        protected override void SubmitAction()
        {
            AlumnoInfo    alumno    = TodosAlumno_CkB.Checked ? null : _alumno;
            PromocionInfo promocion = TodosPromocion_CkB.Checked ? null : _promocion;

            string filtro = GetFilterValues();

            AlumnoReportMng reportMng = new AlumnoReportMng(AppContext.ActiveSchema, string.Empty, filtro);

            AlumnoList    alumnos = GetAlumnoList(alumno, promocion);
            PromocionList promos  = GetPromocionList(promocion);

            if (Documentos_CLB.GetItemCheckState(0) == CheckState.Checked)
            {
                MatriculaPromocionRpt rpt = reportMng.GetMatriculaPromocionReport(alumnos, promos);

                if (rpt != null)
                {
                    ReportViewer.SetReport(rpt);
                    ReportViewer.ShowDialog();
                }
                else
                {
                    MessageBox.Show(moleQule.Face.Resources.Messages.NO_DATA_REPORTS);
                }
            }

            /*if (Documentos_CLB.GetItemCheckState(1) == CheckState.Checked)
             * {
             *  MatriculaPromocionRpt rpt = reportMng.GetMatriculaPromocionReport(list, promocion);
             *
             *  if (rpt != null)
             *  {
             *      ReportViewer.SetReport(rpt);
             *      ReportViewer.ShowDialog();
             *  }
             *  else
             *      MessageBox.Show(moleQule.Face.Resources.Messages.NO_DATA_REPORTS);
             * }*/

            if (Documentos_CLB.GetItemCheckState(2) == CheckState.Checked)
            {
                DocumentacionRpt rpt = reportMng.GetDocumentacionReport(alumnos, promos);

                if (rpt != null)
                {
                    ReportViewer.SetReport(rpt);
                    ReportViewer.ShowDialog();
                }
                else
                {
                    MessageBox.Show(moleQule.Face.Resources.Messages.NO_DATA_REPORTS);
                }
            }
            _action_result = DialogResult.OK;
        }
Example #7
0
        private void Producto_BT_Click(object sender, EventArgs e)
        {
            PromocionSelectForm form = new PromocionSelectForm(this);

            if (form.ShowDialog() == DialogResult.OK)
            {
                _promocion        = form.Selected as PromocionInfo;
                Promocion_TB.Text = _promocion.Nombre;
            }
        }
Example #8
0
        protected override void RellenaPromociones()
        {
            if (_entity.Promociones == null)
            {
                return;
            }
            try
            {
                _promociones_select = new Dictionary <string, PromocionInfo>();

                foreach (ExamenPromocion item in _entity.Promociones)
                {
                    PromocionInfo info = promociones.GetItem(item.OidPromocion);
                    if (info != null)
                    {
                        _promociones_select.Add(info.Numero + " - " + info.Nombre, info);
                    }
                }

                //Promociones_CLB.Items.Clear();

                foreach (KeyValuePair <string, PromocionInfo> item in _promociones_todas)
                {
                    if (_promociones_select.ContainsKey(item.Key))
                    {
                        int index = Promociones_CLB.Items.IndexOf(item.Key);

                        if (index >= 0)
                        {
                            if (Promociones_CLB.GetItemCheckState(index) == CheckState.Unchecked)
                            {
                                Promociones_CLB.SetItemChecked(index, true);
                            }
                        }
                        else
                        {
                            Promociones_CLB.Items.Add(item.Key, true);
                        }
                    }
                    else
                    {
                        int index = Promociones_CLB.Items.IndexOf(item.Key);

                        if (index >= 0)
                        {
                            if (Promociones_CLB.GetItemCheckState(index) == CheckState.Checked)
                            {
                                Promociones_CLB.SetItemChecked(index, false);
                            }
                        }
                    }
                }
            }
            catch { throw new iQException("RellenaPromociones"); }
        }
Example #9
0
 public ClasesPracticasProgramadasForm(bool isModal, Form parent, ClasePracticaList list, PromocionInfo promocion)
     : base(isModal, parent, list)
 {
     InitializeComponent();
     _view_mode = molView.Select;
     _promocion = promocion;
     // Parche para poder abrir el formulario en modo diseño y no perder la configuracion de columnas
     DatosLocal_BS    = Datos;
     Tabla.DataSource = DatosLocal_BS;
     SetMainDataGridView(Tabla);
     Datos.DataSource = ClasePracticaList.NewList().GetSortedList();
 }
Example #10
0
        public ClasesTeoricasDisponiblesForm(bool isModal, Form parent, ClaseTeoricaList list, PromocionInfo promocion)
            : base(isModal, parent, list)
        {
            InitializeComponent();
            _view_mode = molView.Select;
            _promocion = promocion;

            // Parche para poder abrir el formulario en modo diseño y no perder la configuracion de columnas
            DatosLocal_BS    = Datos;
            Tabla.DataSource = DatosLocal_BS;
            SetMainDataGridView(Tabla);
            Datos.DataSource = ClaseTeoricaList.NewList().GetSortedList();

            this.Text = Resources.Labels.CLASE_HORARIO_TITLE;
        }
Example #11
0
        private void Promocion_BT_Click(object sender, EventArgs e)
        {
            if (promociones == null)
            {
                return;
            }
            if (this is ExamenViewForm)
            {
                return;
            }

            try
            {
                PromocionSelectForm form = new PromocionSelectForm(this, promociones);

                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    if (form.Selected is PromocionInfo)
                    {
                        PromocionInfo info = form.Selected as PromocionInfo;

                        ExamenPromocion item = Entity.Promociones.GetItem(new FCriteria <long>("OidPromocion", info.Oid));
                        if (item == null)
                        {
                            ExamenPromocion nuevo = Entity.Promociones.NewItem(Entity);
                            nuevo.OidPromocion = info.Oid;
                        }
                    }
                    else if (form.Selected is SortedBindingList <PromocionInfo> )
                    {
                        SortedBindingList <PromocionInfo> promos = form.Selected as SortedBindingList <PromocionInfo>;

                        foreach (PromocionInfo info in promos)
                        {
                            ExamenPromocion item = Entity.Promociones.GetItem(new FCriteria <long>("OidPromocion", info.Oid));
                            if (item == null)
                            {
                                ExamenPromocion nuevo = Entity.Promociones.NewItem(Entity);
                                nuevo.OidPromocion = info.Oid;
                            }
                        }
                    }

                    RellenaPromociones();
                }
            }
            catch { throw new iQException("Promocion_BT_Click"); }
        }
Example #12
0
        /// <summary>
        /// Asigna el objeto principal al origen de datos
        /// <returns>void</returns>
        /// </summary>
        protected override void RefreshMainData()
        {
            Datos.DataSource = _entity;
            if (!_editable)
            {
                Promocion_CB.SelectedValue = _entity.OidPromocion;
                Tipo_CB.SelectedItem       = _combo_tipo.Buscar(_entity.Tipo);

                foreach (ExamenPromocion item in _entity.Promociones)
                {
                    PromocionInfo info = _promociones.GetItem(item.OidPromocion);
                    _promociones_select.Add(info.Numero + " - " + info.Nombre, info);
                    Promociones_CLB.Items.Add(info.Numero + " - " + info.Nombre, true);
                }
            }
        }
Example #13
0
        protected PromocionList GetPromocionList(PromocionInfo promocion)
        {
            List <PromocionInfo> promociones = new List <PromocionInfo>();
            PromocionList        list;

            if (promocion != null)
            {
                promociones.Add(promocion);
                list = PromocionList.GetList(promociones);
            }
            else
            {
                list = PromocionList.GetList(false);
            }

            return(list);
        }
        private void Promocion_BT_Click(object sender, EventArgs e)
        {
            PromocionList lista_promociones = PromocionList.GetList(false);

            if (_promociones_todas.Count == 0)
            {
                foreach (PromocionInfo info in lista_promociones)
                {
                    _promociones_todas.Add(info.Numero + " - " + info.Nombre, info);
                }
            }
            PromocionSelectForm form = new PromocionSelectForm(this, lista_promociones);

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                if (form.Selected is PromocionInfo)
                {
                    PromocionInfo info = form.Selected as PromocionInfo;

                    if (!_promociones.ContainsKey(info.Numero + " - " + info.Nombre))
                    {
                        _promociones.Add(info.Numero + " - " + info.Nombre, info);
                    }
                }
                else if (form.Selected is SortedBindingList <PromocionInfo> )
                {
                    SortedBindingList <PromocionInfo> promociones = form.Selected as SortedBindingList <PromocionInfo>;

                    foreach (PromocionInfo info in promociones)
                    {
                        if (!_promociones.ContainsKey(info.Numero + " - " + info.Nombre))
                        {
                            _promociones.Add(info.Numero + " - " + info.Nombre, info);
                        }
                    }
                }

                Promociones_CLB.Items.Clear();

                foreach (KeyValuePair <string, PromocionInfo> item in _promociones)
                {
                    Promociones_CLB.Items.Add(item.Key, true);
                }
            }
        }
Example #15
0
        private void Promociones_CLB_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (this is ExamenViewForm)
            {
                return;
            }

            if (e.NewValue == e.CurrentValue)
            {
                return;
            }

            try
            {
                PromocionInfo promo = _promociones_todas[Promociones_CLB.Items[e.Index].ToString()];

                if (e.NewValue == CheckState.Unchecked)
                {
                    ExamenPromocion item = Entity.Promociones.GetItem(new FCriteria <long>("OidPromocion", promo.Oid));

                    foreach (Alumno_Examen alumno in Entity.Alumnos)
                    {
                        if (alumno.OidPromocion == promo.Oid)
                        {
                            MessageBox.Show("No se puede eliminar un curso que tiene alumnos incluidos en el examen.");
                            return;
                        }
                    }
                    Entity.Promociones.Remove(item);
                    RellenaPromociones();
                }
                else if (e.NewValue == CheckState.Checked)
                {
                    ExamenPromocion esta = Entity.Promociones.GetItem(new FCriteria <long>("OidPromocion", promo.Oid));
                    if (esta == null)
                    {
                        ExamenPromocion item = Entity.Promociones.NewItem(Entity);
                        item.OidPromocion = promo.Oid;
                        RellenaPromociones();
                    }
                }
            }
            catch { throw new iQException("Promociones_CLB_ItemCheck"); }
        }
        //public override void PrintObject()
        //{
        //}

        //#endregion

        //#region Buttons

        //protected override void PrintAction()
        //{
        //    switch (TabControl.SelectedTab.Name)
        //    {
        //        case "General_TP":
        //            {
        //                PrintObject();
        //            } break;

        //        default:
        //            {
        //                PrintSelectSkinForm psform = new PrintSelectSkinForm(true);
        //                psform.EnableDetail(false);
        //                psform.ShowDialog();
        //                if (psform.DialogResult == DialogResult.Cancel) return;

        //                switch (TabControl.SelectedTab.Name)
        //                {
        //                    case "Redes_TP":
        //                        {
        //                            PrintData(Entidad.Red, psform.Source, psform.Type);
        //                        } break;

        //                }
        //            } break;
        //    }
        //}

        #endregion

        #region Buttons

        /// <summary>
        /// Implementa Save_button_Click
        /// </summary>
        protected override void SaveAction()
        {
#if TRACE
            moleQule.Library.Timer t = new moleQule.Library.Timer();
#endif
            if (!_generado)
            {
                MessageBox.Show("No se ha generado ningún cronograma");
                _action_result = DialogResult.Ignore;
                return;
            }
            else
            {
                _entity.FechaCreacion = DateTime.Today;
                if (_entity.Plan == string.Empty)
                {
                    PlanEstudiosInfo plan = PlanEstudiosInfo.Get(_entity.OidPlan, false);
                    if (plan != null)
                    {
                        _entity.Plan = plan.Nombre;
                    }
                }
                if (_entity.Promocion == string.Empty)
                {
                    PromocionInfo promocion = PromocionInfo.Get(_entity.OidPromocion, false);
                    if (promocion != null)
                    {
                        _entity.Promocion = promocion.Nombre;
                    }
                }


                foreach (Sesion_Promocion item in _entity.Configuracion)
                {
                    item.HoraInicio = DateTime.Parse(item.Hora);
                }
#if TRACE
                t.Record("FechaCreacion");
#endif
                _action_result = SaveObject() ? DialogResult.OK : DialogResult.Ignore;
            }
        }
Example #17
0
        protected AlumnoList GetAlumnoList(AlumnoInfo alumno, PromocionInfo promocion)
        {
            List <AlumnoInfo> alumnos = new List <AlumnoInfo>();
            AlumnoList        list;

            if (alumno != null)
            {
                alumnos.Add(alumno);
                list = AlumnoList.GetList(alumnos);
            }
            else
            {
                if (promocion != null)
                {
                    list = AlumnoList.GetListByPromocion(promocion.Oid, false);
                }
                else
                {
                    list = AlumnoList.GetList(false);
                }
            }

            return(list);
        }
        private void DoGeneraCronograma()
        {
            PgMng.Reset(10, 1, Resources.Messages.GENERANDO_CRONOGRAMA, this);

            try
            {
                int clases_dia    = 0;
                int clases_sabado = 0;
                int total_dias    = 5;
                PgMng.Grow();

                List <bool> activas_dia = new List <bool>();

                if (CLB_1.CheckedIndices.Contains(0))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(1))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(2))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(3))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(4))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(5))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(6))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(7))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(0))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(1))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(2))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(3))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(4))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(5))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                PgMng.Grow();

                List <bool> activas_sabado = new List <bool>();

                if (CLB_3.CheckedIndices.Contains(0))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(1))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(2))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(3))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(4))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                PgMng.Grow();

                if (clases_sabado > 0)
                {
                    total_dias = 6;
                }

                _entity.Configuracion = Sesiones_Promociones.NewChildList();

                for (int row_index = 0; row_index < Datos_Sesiones.List.Count; row_index++)
                {
                    Sesion_Promocion sp     = Sesion_Promocion.NewChild(_entity);
                    Sesion_Promocion sp_row = ((Sesion_Promocion)Datos_Sesiones.List[row_index]);
                    sp.Hora       = sp_row.Hora;
                    sp.HoraInicio = sp_row.HoraInicio;
                    sp.NHoras     = sp_row.NHoras;
                    _entity.Configuracion.Add(sp);
                }

                moleQule.Library.Timer t = new moleQule.Library.Timer();
                //t.Start();
                //t.Record("inicio");
                PromocionInfo    promocion = PromocionInfo.Get(_entity.OidPromocion, false);
                PlanEstudiosInfo plan      = PlanEstudiosInfo.Get(_entity.OidPlan, false);
                if (promocion != null)
                {
                    if (_entity.GeneraCronograma(promocion.Oid != 0 ? promocion.FechaInicio : plan.Fecha, DateTime.MaxValue, (int)Semana_NUD.Value, clases_dia, clases_sabado, total_dias, (int)Practicas_NUD.Value, t, activas_dia, activas_sabado))
                    {
                        //t.Record("fin");
                        //MessageBox.Show(t.GetCronos());
                        //t.Record("GeneraCronograma");
                        //MessageBox.Show("Cronograma generado con éxito");
                        _generado = true;
                    }
                    else
                    {
                        MessageBox.Show("No se ha podido generar el cronograma.\n" +
                                        "Compruebe que no se hayan eliminado clases que ya estuvieran planificadas.");
                        _generado = false;
                    }
                }
                else
                {
                    MessageBox.Show("No se ha podido generar el cronograma.\n" +
                                    "Seleccione una promoción.");
                    _generado = false;
                }
                //Generar_BT.Enabled = false;
                PgMng.Grow();
            }
            finally { PgMng.FillUp(); }
            if (_generado)
            {
                PgMng.ShowInfoException(Resources.Messages.CRONOGRAMA_GENERADO_CON_EXITO);
                Submit_BT.PerformClick();
            }
        }
        protected override bool CrearPartes()
        {
            int  count      = 0;
            long oid_modulo = 0;
            int  index      = 0;

            PgMng.Reset(4, 1, Resources.Messages.CREANDO_PARTES_ASISTENCIA, this);

            try
            {
                PromocionInfo promo   = PromocionInfo.Get(_entity.OidPromocion, true);
                AlumnoList    alumnos = AlumnoList.GetListByPromocion(promo.Oid, true);

                if (promo.Sesiones.Count == 0)
                {
                    Promocion promocion = Promocion.Get(_entity.OidPromocion, false);
                    promocion.LoadChilds(typeof(Sesion_Promocion));
                    List <List <long> > duracion_sesiones = _entity.RellenaHorasSemana();
                    foreach (List <long> lista in duracion_sesiones)
                    {
                        foreach (long item in lista)
                        {
                            Sesion_Promocion ses = Sesion_Promocion.NewChild(promocion);
                            ses.NHoras = duracion_sesiones.IndexOf(lista) + 1;
                            if (item > 69)
                            {
                                ses.Sabado = true;
                            }
                            ses.HoraInicio = DateTime.Parse((item % 14 + 10).ToString("00") + ":00");
                            promocion.Sesiones.Add(ses);
                        }
                    }
                    promo = promocion.GetInfo(true);
                    promocion.CloseSession();
                }
                PgMng.Grow();

                foreach (Sesion item in _entity.Sesions)
                {
                    //Desmarca las clases que han sido marcadas como impartidas pero que tienen
                    //fecha y horas mayor que la actual
                    if (item.Fecha.Date > DateTime.Today.Date

                        /*|| (item.Fecha.Date.Equals(DateTime.Today.Date)
                         * && item.Hora.TimeOfDay > DateTime.Today.TimeOfDay)*/
                        && item.Estado == 3)
                    {
                        item.Estado = 2;
                    }

                    //No genera partes de asistencia para clases que no se han impartido
                    //if (item.Estado != 3)
                    //    continue;

                    //si ya hay un parte para esta práctica no se vuelve a crear
                    if (item.OidClasePractica > 0)
                    {
                        bool esta = false;
                        foreach (ParteAsistencia p in _entity.Asistencias)
                        {
                            //ClasePracticaInfo clase = null;

                            /*foreach (ClasePracticaList listap in _practicas)
                             * {
                             *  clase = listap.GetItem(item.OidClasePractica);
                             *  if (clase != null) break;
                             * }*/
                            //clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            foreach (Clase_Parte cp in p.Clases)
                            {
                                if (cp.Tipo == 2 &&
                                    cp.OidClase == item.OidClasePractica &&
                                    (cp.Grupo == 3 || cp.Grupo == item.Grupo))
                                {
                                    esta = true;
                                    break;
                                }
                            }

                            /*if (p.Tipo == 2 && p.Sesiones.Contains(item.OidClasePractica.ToString())
                             *  && !p.Texto.Contains(" G" + Convert.ToString(3 - item.Grupo) + " "))
                             * {
                             *  esta = true;
                             *  break;
                             * }*/
                            if (esta)
                            {
                                break;
                            }
                        }
                        if (esta)
                        {
                            continue;
                        }
                    }

                    if (item.OidClaseTeorica > 0 ||
                        item.OidClasePractica > 0 ||
                        item.OidClaseExtra > 0)
                    {
                        string aux             = string.Empty;
                        long   oid_modulo_item = 0;
                        string sesion          = string.Empty;
                        long   tipo            = 0;
                        long   oid_clase       = 0;
                        long   grupo           = 3;

                        if (item.OidClasePractica != 0)
                        {
                            ClasePracticaInfo clase = null;

                            /*foreach (ClasePracticaList listap in _practicas)
                             * {
                             *  clase = listap.GetItem(item.OidClasePractica);
                             *  if (clase != null) break;
                             * }*/
                            clase           = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias + " G" + item.Grupo.ToString();
                            sesion          = clase.Oid.ToString();
                            tipo            = 2;
                            grupo           = clase.Grupo;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseTeorica != 0)
                        {
                            ClaseTeoricaInfo clase = _teoricas.GetItem(item.OidClaseTeorica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 1;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseExtra != 0)
                        {
                            ClaseExtraInfo clase = _extras.GetItem(item.OidClaseExtra);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 3;
                            oid_clase       = clase.Oid;
                        }

                        if (oid_modulo_item != 0)
                        {
                            if (item.OidClasePractica == 0)
                            {
                                foreach (Sesion_PromocionInfo ses in promo.Sesiones)
                                {
                                    if (ses.HoraInicio.TimeOfDay == item.Hora.TimeOfDay)
                                    {
                                        count = 0;
                                        break;
                                    }
                                }
                            }
                            if (count == 0)
                            {
                                ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                parte.Texto                 = aux + " ";
                                parte.Sesiones              = sesion + " ";
                                parte.Fecha                 = item.Fecha;
                                parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                parte.Tipo                  = tipo;
                                parte.OidInstructor         = item.OidProfesor;
                                parte.OidInstructorEfectivo = item.OidProfesor;
                                parte.CreateAlumnosList(alumnos, item.Grupo);
                                if (index == _entity.Sesions.Count - 1)
                                {
                                    parte.NHoras = count.ToString() + ":00";
                                }
                                parte.MarkItemChild();
                                _entity.Asistencias.AddItem(parte);
                                oid_modulo = oid_modulo_item;
                                count++;
                                if (tipo == 2)
                                {
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = "5:00";
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                }
                                else
                                {
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = count.ToString() + ":00";
                                }
                            }
                            else
                            {
                                ParteAsistencia ultima = _entity.Asistencias[_entity.Asistencias.Count - 1];

                                if (ultima.OidHorario == item.OidHorario &&
                                    ultima.Fecha.Date.Equals(item.Fecha.Date) &&
                                    Convert.ToDateTime(ultima.HoraInicio).AddHours(count).Hour.Equals(item.Hora.Hour) &&
                                    ultima.OidInstructor == item.OidProfesor &&
                                    oid_modulo_item == oid_modulo &&
                                    ((ultima.Tipo == 1 && item.OidClaseTeorica > 0) ||
                                     (ultima.Tipo == 2 && item.OidClasePractica > 0) ||
                                     (ultima.Tipo == 3 && item.OidClaseExtra > 0)))
                                {
                                    count++;
                                    sesion += " ";
                                    if ((item.OidClasePractica > 0 && _entity.Asistencias[_entity.Asistencias.Count - 1].Sesiones != sesion) || item.OidClasePractica == 0)
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].Texto    += aux + " ";
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].Sesiones += sesion;
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras    = count.ToString() + ":00";
                                        if (index == _entity.Sesions.Count - 1)
                                        {
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].Fecha = item.Fecha;
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].Hora = item.Hora;
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].OidInstructor = item.OidProfesor;
                                            count = 0;
                                        }
                                    }
                                    else
                                    {
                                        ClasePracticaInfo clase = null;
                                        clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                        string texto_aux = clase.Alias + " G" + item.Grupo.ToString() + " ";
                                        if (_entity.Asistencias[_entity.Asistencias.Count - 1].Texto != texto_aux)
                                        {
                                            _entity.Asistencias[_entity.Asistencias.Count - 1].Texto = clase.Alias;

                                            _entity.Asistencias[_entity.Asistencias.Count - 1].CreateAlumnosList(alumnos, 3);
                                            _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                        }
                                    }
                                }
                                else
                                {
                                    ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                    parte.Texto                 = aux + " ";
                                    parte.Sesiones              = sesion + " ";
                                    parte.Fecha                 = item.Fecha;
                                    parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                    parte.Tipo                  = tipo;
                                    parte.OidInstructor         = item.OidProfesor;
                                    parte.OidInstructorEfectivo = item.OidProfesor;
                                    parte.CreateAlumnosList(alumnos, item.Grupo);
                                    if (index == _entity.Sesions.Count - 1)
                                    {
                                        parte.NHoras = count.ToString() + ":00";
                                    }
                                    parte.MarkItemChild();
                                    _entity.Asistencias.AddItem(parte);
                                    oid_modulo = oid_modulo_item;
                                    count      = 1;
                                    if (tipo == 2)
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = "5:00";
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                    }
                                    else
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = count.ToString() + ":00";
                                    }
                                }
                            }
                            Clase_Parte registro = _entity.Asistencias[_entity.Asistencias.Count - 1].Clases.NewItem(_entity.Asistencias[_entity.Asistencias.Count - 1]);
                            registro.OidClase = oid_clase;
                            registro.Tipo     = tipo;
                            registro.Grupo    = grupo;
                        }
                    }
                    index++;
                }
                PgMng.Grow();

                return(true);
            }
            catch { return(false); }
            finally { PgMng.FillUp(); }
        }
        protected override void DoPromociones()
        {
            try
            {
                PgMng.Reset(15, 1, Resources.Messages.UPDATING_PROMOCION_HORARIO, this);
                DateTime hoy = DateTime.Today;

                // si la fecha del horario que se va a cargar es anterior a la del día en el que se edita
                // no se tiene en cuenta si las clases sesiones planificadas se han impartido o no para meterlas
                // en las lista, ya que de ningún modo se va a permitir modificar un horario antiguo
                if (hoy.Date >= Entity.FechaInicial)
                {
                    hoy = Entity.FechaInicial;
                }
                else
                {
                    while (hoy.DayOfWeek != DayOfWeek.Monday)
                    {
                        hoy = hoy.AddDays(-1);
                    }
                }

                for (int i = 1; i < 3; i++)
                {
                    ClasePracticaList practicas = ClasePracticaList.GetDisponiblesList(Entity.OidPlan, Entity.OidPromocion, Entity.Oid, i);
                    if (_practicas.Count <= i)
                    {
                        _practicas.Add(practicas);
                    }
                    else
                    {
                        _practicas[i] = practicas;
                    }
                    PgMng.Grow(string.Empty, "Rellena clases prácticas grupo " + i.ToString());
                }
                _teoricas = ClaseTeoricaList.GetDisponiblesList(Entity.OidPlan, Entity.OidPromocion, Entity.Oid);
                PgMng.Grow(string.Empty, "Rellena clases teóricas");
                _extras = ClaseExtraList.GetDisponiblesList(Entity.OidPromocion, Entity.Oid);
                PgMng.Grow(string.Empty, "Rellena clases extra");

                //_combo_clases = Submodulo.GetComboClases(_teoricas, ClasePracticaList.Merge(_practicas[1],_practicas[2]), _extras);
                //pmg.Grow("combo clases");

                //pmg.Grow("Rellena fecha");

                while (_day.DayOfWeek != System.DayOfWeek.Monday)
                {
                    _day = _day.AddDays(-1);
                }
                Fecha_DTP.Value = _day;
                DoSetFecha();

                if (Promocion_CB.SelectedItem != null)
                {
                    //ResetSesiones(false);
                    PgMng.Grow(string.Empty, "reset sesiones");
                    _profesores = InstructorList.GetInstructoresHorariosList(((ComboBoxSource)Promocion_CB.SelectedItem).Oid, EntityInfo.FechaInicial, EntityInfo.FechaFinal);
                }

                if (_profesores != null)
                {
                    _disponibilidades = _profesores.GetDisponibilidadesProfesores(_day);
                }
                PgMng.Grow(string.Empty, "_profesores");


                if (Entity.OidPromocion != 0)
                {
                    PromocionInfo promocion = _promociones.GetItem(Entity.OidPromocion);
                    _entity.Promocion = promocion.Nombre;
                    PlanEstudiosInfo plan = _planes.GetItem(promocion.OidPlan);
                    _entity.Plan = plan.Nombre;

                    PgMng.Grow(string.Empty, "Promociones");
                    //_profesores = InstructorList.GetInstructoresHorariosList(Entity.OidPromocion);
                    PgMng.Grow(string.Empty, "GetInstructoresHorarioList");

                    CLB_1.SetItemChecked(0, promocion.H8AM);
                    CLB_1.SetItemChecked(1, promocion.H0);
                    CLB_1.SetItemChecked(2, promocion.H1);
                    CLB_1.SetItemChecked(3, promocion.H2);
                    CLB_1.SetItemChecked(4, promocion.H3);
                    CLB_1.SetItemChecked(5, promocion.H4);
                    CLB_1.SetItemChecked(6, promocion.H5);
                    CLB_1.SetItemChecked(7, promocion.H6);
                    CLB_1.SetItemChecked(8, promocion.H7);
                    CLB_1.SetItemChecked(9, promocion.H8);
                    CLB_1.SetItemChecked(10, promocion.H9);
                    CLB_1.SetItemChecked(11, promocion.H10);
                    CLB_1.SetItemChecked(12, promocion.H11);
                    CLB_1.SetItemChecked(13, promocion.H12);

                    CLB_2.SetItemChecked(0, promocion.HS0);
                    CLB_2.SetItemChecked(1, promocion.HS1);
                    CLB_2.SetItemChecked(2, promocion.HS2);
                    CLB_2.SetItemChecked(3, promocion.HS3);
                    CLB_2.SetItemChecked(4, promocion.HS4);

                    PgMng.Grow(string.Empty, "SetItemChecked");

                    Entity.CopiaConfiguracion(promocion);
                }
                PgMng.Grow(string.Empty, "Inicializa horas disponibles");

                if (!_generado)
                {
                    Generar_BT.Enabled = true;
                }
                Instructores_BT.Enabled     = true;
                Planes_BT.Enabled           = true;
                Disponibilidades_BT.Enabled = true;

                if (_lista_sesiones == null)
                {
                    _lista_sesiones = new ListaSesiones(Entity.FechaInicial);
                }
                RellenaCasillas();
            }
            finally
            {
                PgMng.FillUp();
            }
        }
        /// <summary>
        /// Función recursiva que va creando el árbol de submódulos y preguntas
        /// </summary>
        /// <param name="padre"></param>
        /// <param name="apartado"></param>
        private void SetAlumnosValues(TreeNode padre, PromocionInfo promocion)
        {
            TreeNode nodo = new TreeNode(promocion.Numero + " - " + promocion.Nombre);

            nodo.NodeFont         = new Font("Tahoma", (float)8.25, FontStyle.Regular);
            nodo.ForeColor        = System.Drawing.Color.Black;
            nodo.Tag              = promocion;
            nodo.SelectedImageKey = "submodulo";

            if (_alumnos == null)
            {
                _alumnos = AlumnoList.GetAlumnosAdmitidosList(_entity.OidModulo, _entity.Desarrollo, _entity.Oid, ExamenPromocionList.GetChildList(_entity.Promociones), _entity.FechaExamen, true);
            }

            foreach (AlumnoInfo alumno in _alumnos)
            {
                bool pertenece = false;

                if (alumno.Promociones == null)
                {
                    alumno.LoadChilds(typeof(Alumno_Promocion), false);
                }
                foreach (Alumno_PromocionInfo item in alumno.Promociones)
                {
                    if (item.OidPromocion == promocion.Oid)
                    {
                        pertenece = true;
                        break;
                    }
                }

                if (pertenece)
                {
                    TreeNode nodo_p = new TreeNode("[" + alumno.NExpediente + "] " + alumno.Apellidos + ", " + alumno.Nombre);
                    nodo_p.NodeFont  = new Font("Tahoma", (float)8.25, FontStyle.Regular);
                    nodo_p.ForeColor = System.Drawing.Color.Black;
                    nodo_p.Tag       = alumno;

                    foreach (Alumno_Examen item in _entity.Alumnos)
                    {
                        if (item.OidAlumno == alumno.Oid)
                        {
                            nodo_p.Checked = true;
                            break;
                        }
                    }

                    nodo.Nodes.Add(nodo_p);
                }
            }

            if (nodo.Nodes.Count > 0)
            {
                if (padre == null)
                {
                    Arbol_TV.Nodes.Add(nodo);
                }
                else
                {
                    padre.Nodes.Add(nodo);
                }
            }
        }
 protected override void GetFormSourceData(long oid)
 {
     _entity  = PromocionInfo.Get(oid, true);
     _mf_type = ManagerFormType.MFView;
 }
        protected override bool CrearPartes()
        {
            int  count      = 0;
            long oid_modulo = 0;
            int  index      = 0;
            long tipo       = 0;

            PgMng.Reset(6, 1, Resources.Messages.CREANDO_PARTES_ASISTENCIA, this);

            try
            {
                PromocionInfo promo   = PromocionInfo.Get(_entity.OidPromocion, true);
                AlumnoList    alumnos = AlumnoList.GetListByPromocion(promo.Oid, true);

                if (promo.Sesiones.Count == 0)
                {
                    Promocion promocion = Promocion.Get(_entity.OidPromocion, false);
                    promocion.LoadChilds(typeof(Sesion_Promocion));
                    List <List <long> > duracion_sesiones = _entity.RellenaHorasSemana();
                    foreach (List <long> lista in duracion_sesiones)
                    {
                        foreach (long item in lista)
                        {
                            Sesion_Promocion ses = Sesion_Promocion.NewChild(promocion);
                            ses.NHoras = duracion_sesiones.IndexOf(lista) + 1;
                            if (item > 69)
                            {
                                ses.Sabado = true;
                            }
                            ses.HoraInicio = DateTime.Parse((item % 14 + 10).ToString("00") + ":00");
                            promocion.Sesiones.Add(ses);
                        }
                    }
                    promo = promocion.GetInfo(true);
                    promocion.CloseSession();
                }
                PgMng.Grow();

                if (!_entity.IsDirty)
                {
                    return(true);
                }

                //guarda la lista de partes de asistencia anterior
                ParteAsistencias partes = _entity.Asistencias.Clone();

                PgMng.Grow();

                ParteAsistencias nueva       = ParteAsistencias.NewChildList();
                HorarioInfo      horario_old = HorarioInfo.Get(_entity.Oid, true);

                //genera la nueva lista de partes de asistencia
                for (int sesion_ind = 0; sesion_ind < _entity.Sesions.Count; sesion_ind++)
                {
                    Sesion item = _entity.Sesions[sesion_ind];

                    bool confirmada = false;

                    if (item.OidClasePractica != 0)
                    {
                        bool incluida = false;

                        foreach (ParteAsistencia parte_practicas in nueva)
                        {
                            if (parte_practicas.Tipo == 2)
                            {
                                ClasePracticaInfo p_info = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                if (p_info != null &&
                                    (parte_practicas.Texto.Trim() == p_info.Alias.Trim() + "G" + item.Grupo.ToString() ||
                                     parte_practicas.Texto.Trim() == p_info.Alias.Trim()))
                                {
                                    incluida = true;
                                    break;
                                }
                            }
                        }

                        if (incluida)
                        {
                            continue;
                        }
                    }

                    //Se busca un parte de asistencias confirmado que contenga esta clase
                    foreach (ParteAsistencia parte_old in partes)
                    {
                        DateTime hora_sesion = DateTime.Parse(parte_old.HoraInicio);

                        if (parte_old.Fecha.Date == item.Fecha.Date &&
                            hora_sesion.Hour == item.Hora.Hour &&
                            parte_old.Confirmada)
                        {
                            int n_horas = DateTime.Parse(parte_old.NHoras).Hour;

                            for (int horas_ind = 0; horas_ind < n_horas; horas_ind++)
                            {
                                if (!_entity.Sesions[sesion_ind + horas_ind].IsEqual(horario_old.Sesions[sesion_ind + horas_ind]))
                                {
                                    return(false);
                                }
                            }

                            //se trata de una teórica o una extra y no hay que comprobar que en ese intervalo exista otra sesión
                            if (item.OidClasePractica == 0)
                            {
                                sesion_ind += n_horas - 1;
                            }

                            nueva.Add(parte_old);
                            confirmada = true;
                            break;
                        }
                    }

                    if (confirmada)
                    {
                        continue;
                    }

                    //Desmarca las clases que han sido marcadas como impartidas pero que tienen
                    //fecha y horas mayor que la actual
                    if (item.Fecha.Date > DateTime.Today.Date &&
                        item.Estado == 3)
                    {
                        item.Estado = 2;
                    }

                    //si ya hay un parte para esta práctica no se vuelve a crear
                    if (item.OidClasePractica > 0)
                    {
                        bool esta = false;
                        foreach (ParteAsistencia p in nueva)
                        {
                            foreach (Clase_Parte cp in p.Clases)
                            {
                                if (cp.Tipo == 2 &&
                                    cp.OidClase == item.OidClasePractica &&
                                    (cp.Grupo == 3 || cp.Grupo == item.Grupo))
                                {
                                    esta = true;
                                    break;
                                }
                            }
                        }
                        if (esta)
                        {
                            continue;
                        }
                    }

                    if ((item.OidClaseTeorica > 0 ||
                         item.OidClasePractica > 0 ||
                         item.OidClaseExtra > 0) &&
                        !item.IsDeleted)
                    {
                        string aux             = string.Empty;
                        long   oid_modulo_item = 0;
                        string sesion          = string.Empty;
                        long   oid_clase       = 0;
                        long   grupo           = 3;

                        if (item.OidClasePractica != 0)
                        {
                            ClasePracticaInfo clase = null;

                            clase           = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias + " G" + item.Grupo.ToString();
                            sesion          = clase.Oid.ToString();
                            tipo            = 2;
                            grupo           = clase.Grupo;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseTeorica != 0)
                        {
                            ClaseTeoricaInfo clase = _teoricas.GetItem(item.OidClaseTeorica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 1;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseExtra != 0)
                        {
                            ClaseExtraInfo clase = _extras.GetItem(item.OidClaseExtra);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 3;
                            oid_clase       = clase.Oid;
                        }

                        if (oid_modulo_item != 0)
                        {
                            if (item.OidClasePractica == 0)
                            {
                                foreach (Sesion_PromocionInfo ses in promo.Sesiones)
                                {
                                    if (ses.HoraInicio.TimeOfDay == item.Hora.TimeOfDay)
                                    {
                                        count = 0;
                                        break;
                                    }
                                }
                            }

                            if (count == 0)
                            {
                                ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                parte.Tipo                  = tipo;
                                parte.Texto                 = aux + " ";
                                parte.Sesiones              = sesion + " ";
                                parte.Fecha                 = item.Fecha;
                                parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                parte.OidInstructor         = item.OidProfesor;
                                parte.OidInstructorEfectivo = item.OidProfesor;
                                parte.CreateAlumnosList(alumnos, item.Grupo);
                                if (index == _entity.Sesions.Count - 1)
                                {
                                    parte.NHoras = count.ToString() + ":00";
                                }
                                parte.MarkItemChild();
                                nueva.AddItem(parte);
                                oid_modulo = oid_modulo_item;
                                count++;
                                if (tipo == 2)
                                {
                                    nueva[nueva.Count - 1].NHoras = "5:00";
                                    nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                }
                                else
                                {
                                    nueva[nueva.Count - 1].NHoras = count.ToString() + ":00";
                                }
                            }
                            else
                            {
                                ParteAsistencia ultima = nueva[nueva.Count - 1];

                                if (ultima.OidHorario == item.OidHorario &&
                                    ultima.Fecha.Date.Equals(item.Fecha.Date) &&
                                    Convert.ToDateTime(ultima.HoraInicio).AddHours(count).Hour.Equals(item.Hora.Hour) &&
                                    ultima.OidInstructor == item.OidProfesor &&
                                    oid_modulo_item == oid_modulo &&
                                    ((ultima.Tipo == 1 && item.OidClaseTeorica > 0) ||
                                     (ultima.Tipo == 2 && item.OidClasePractica > 0) ||
                                     (ultima.Tipo == 3 && item.OidClaseExtra > 0)))
                                {
                                    count++;
                                    sesion += " ";
                                    if ((item.OidClasePractica > 0 && nueva[nueva.Count - 1].Sesiones != sesion) ||
                                        item.OidClasePractica == 0)
                                    {
                                        nueva[nueva.Count - 1].Texto    += aux + " ";
                                        nueva[nueva.Count - 1].Sesiones += sesion;
                                        nueva[nueva.Count - 1].NHoras    = count.ToString() + ":00";
                                        if (index == _entity.Sesions.Count - 1)
                                        {
                                            count = 0;
                                        }
                                    }
                                    else
                                    {
                                        ClasePracticaInfo clase = null;
                                        clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                        string texto_aux = clase.Alias + " G" + item.Grupo.ToString() + " ";
                                        if (nueva[nueva.Count - 1].Texto != texto_aux)
                                        {
                                            nueva[nueva.Count - 1].Texto = clase.Alias;

                                            nueva[nueva.Count - 1].CreateAlumnosList(alumnos, 3);
                                            nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                        }
                                    }
                                }
                                else
                                {
                                    ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                    parte.Tipo                  = tipo;
                                    parte.Texto                 = aux + " ";
                                    parte.Sesiones              = sesion + " ";
                                    parte.Fecha                 = item.Fecha;
                                    parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                    parte.OidInstructor         = item.OidProfesor;
                                    parte.OidInstructorEfectivo = item.OidProfesor;
                                    parte.CreateAlumnosList(alumnos, item.Grupo);
                                    if (index == _entity.Sesions.Count - 1)
                                    {
                                        parte.NHoras = count.ToString() + ":00";
                                    }
                                    parte.MarkItemChild();
                                    nueva.AddItem(parte);
                                    oid_modulo = oid_modulo_item;
                                    count      = 1;
                                    if (tipo == 2)
                                    {
                                        nueva[nueva.Count - 1].NHoras = "5:00";
                                        nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                    }
                                    else
                                    {
                                        nueva[nueva.Count - 1].NHoras = count.ToString() + ":00";
                                    }
                                }
                            }
                            Clase_Parte registro = nueva[nueva.Count - 1].Clases.NewItem(nueva[nueva.Count - 1]);
                            registro.OidClase = oid_clase;
                            registro.Tipo     = tipo;
                            registro.Grupo    = grupo;
                        }
                    }
                    index++;
                }
                PgMng.Grow();

                foreach (ParteAsistencia parte_old in partes)
                {
                    bool esta = false;
                    for (int i = 0; i < nueva.Count; i++)
                    {
                        ParteAsistencia parte_new = nueva[i];
                        if (parte_old.Fecha.Date == parte_new.Fecha.Date &&
                            parte_old.HoraInicio == parte_new.HoraInicio &&
                            parte_old.NHoras == parte_new.NHoras &&
                            parte_old.OidInstructor == parte_new.OidInstructor &&
                            parte_old.Tipo == parte_new.Tipo)
                        {
                            esta = true;
                            foreach (Clase_Parte cp_old in parte_old.Clases)
                            {
                                bool esta_clase = false;
                                foreach (Clase_Parte cp_new in parte_new.Clases)
                                {
                                    if (cp_old.OidClase == cp_new.OidClase &&
                                        cp_old.Tipo == cp_new.Tipo &&
                                        cp_old.Grupo == cp_new.Grupo)
                                    {
                                        esta_clase = true;
                                        break;
                                    }
                                }
                                if (!esta_clase)
                                {
                                    if (parte_old.Confirmada)
                                    {
                                        throw new iQException(Resources.Messages.PARTE_CON_CONCEPTOS_ASOCIADOS);
                                    }
                                    else
                                    {
                                        esta = false;
                                        break;
                                    }
                                }
                            }
                        }
                        if (esta)
                        {
                            nueva.Remove(parte_new);
                            break;
                        }
                    }
                    if (!esta)
                    {
                        if (parte_old.Confirmada)
                        {
                            throw new iQException(Resources.Messages.PARTE_CON_CONCEPTOS_ASOCIADOS);
                        }
                        else
                        {
                            _entity.Asistencias.Remove(parte_old);
                        }
                    }
                }

                /*ParteAsistencias partes_bu = _entity.Asistencias.Clone();
                 * //_entity.Asistencias = ParteAsistencias.NewChildList();
                 * //se unen las dos listas
                 * //partes es la lista de partes de asistencia que existía antes de modificar el horario
                 * //nueva tiene los partes que se generan a partir del horario modificado
                 * //Se busca cada parte antiguo en la lista de partes nueva
                 * foreach (ParteAsistencia item in partes)
                 * {
                 *  ParteAsistencia existe = nueva.Contiene(item);
                 *
                 *  if (existe != null)
                 *  {
                 *      //Si se trata de una clase práctica
                 *      if (existe.Tipo == 2 && !existe.Confirmada)
                 *      {
                 *          //Si en el parte antiguo la clase práctica no tenía lista de notas de prácticas de alumnos o estaba vacía
                 *          //se le crea la lista de notas de prácticas de alumnos
                 *          if (item.Alumnos_Practicas == null || item.Alumnos_Practicas.Count == 0)
                 *          {
                 *              if (existe.Alumnos_Practicas.Count > 0)
                 *                  item.CreatePartePracticas(existe.Alumnos_Practicas[0].OidClasePractica);
                 *              else
                 *                  item.Alumnos_Practicas = existe.Alumnos_Practicas.Clone();
                 *          }
                 *          else
                 *          {
                 *              //si ya tenía lista de notas de prácticas se actualiza
                 *              foreach (Alumno_Practica alumno_practica in item.Alumnos_Practicas)
                 *              {
                 *                  if (alumno_practica.Falta)
                 *                      alumno_practica.Calificacion = Resources.Labels.NO_APTO_LABEL;
                 *              }
                 *          }
                 *      }
                 *
                 *      _entity.Asistencias.AddItem(item, false);
                 *
                 *      //Método rancio para eliminar el parte que ya existía en la lista original de la lista de partes nuevos
                 *      int ind = -1;
                 *      for (int i = 0; i < nueva.Count; i++)
                 *      {
                 *          ParteAsistencia obj = nueva[i];
                 *
                 *          if (item.OidInstructor == obj.OidInstructor
                 *          && item.Sesiones == obj.Sesiones
                 *          && item.NHoras == obj.NHoras
                 *          && item.Fecha.ToShortDateString() == obj.Fecha.ToShortDateString()
                 *          && item.HoraInicio == obj.HoraInicio)
                 *          {
                 *              ind = i;
                 *              break;
                 *          }
                 *      }
                 *      if (ind != -1)
                 *      {
                 *          ParteAsistencias aux = nueva.Clone();
                 *          nueva = ParteAsistencias.NewChildList();
                 *          for (int i = 0; i < aux.Count; i++)
                 *          {
                 *              if (i != ind)
                 *                  nueva.AddItem(aux[i]);
                 *          }
                 *      }
                 *  }
                 *  else
                 *  {
                 *      if (!item.Confirmada)
                 *      {
                 *          //Si no se ha encontrado el parte antiguo, se genera el albarán correspondiente y se elimina el parte antiguo
                 *          if (item.Conceptos != null && item.Conceptos.Count > 0)
                 *          {
                 *              InputDeliveryLineInfo concepto = InputDeliveryLineInfo.Get(item.Conceptos[0].OidConcepto);
                 *              InputDeliveryInfo albaran = albaranes.GetItem(concepto.OidAlbaran);
                 *              if (albaran != null && albaran.Facturado)
                 *              {
                 *                  _entity.Asistencias = partes_bu;
                 *                  return false;
                 *              }
                 *          }
                 *          ParteAsistencia.Delete(item.Oid);
                 *      }
                 *      else
                 *      {
                 *          _entity.Asistencias = partes_bu;
                 *
                 *          return false;
                 *      }
                 *  }
                 * }*/
                PgMng.Grow();

                //Al finalizar se añaden todos los partes nuevos que no tenían coincidencia a la lista de
                //partes del horario
                foreach (ParteAsistencia item in nueva)
                {
                    _entity.Asistencias.AddItem(item);
                }
                PgMng.Grow();

                return(true);
            }
            catch { return(false); }
            finally
            {
                PgMng.FillUp();
            }
        }
        /// <summary>
        /// Asigna los datos de origen para controles que dependen de otros
        /// </summary>
        /// <param name="controlName"></param>
        protected override void SetDependentControlSource(string controlName)
        {
            switch (controlName)
            {
            case "Plan_CB":
            {
                //moleQule.Library.Timer t = new moleQule.Library.Timer();
                if (Datos_Planes.Current != null && Plan_CB.SelectedItem != null)
                {
                    Datos_Promociones.DataSource = _combo_planes.GetFilteredChilds(((ComboBoxSource)Plan_CB.SelectedItem).Oid);
                    Generar_BT.Enabled           = true;
                }
                // t.Record("Plan_CB");
                //MessageBox.Show(t.GetCronos());
            } break;

            case "Promocion_CB":
            {
                //moleQule.Library.Timer t = new moleQule.Library.Timer();
                if (Datos_Promociones.Current != null)
                {
                    if (Promocion_CB.SelectedItem != null)
                    {
                        _entity.OidPromocion = ((ComboBoxSource)Promocion_CB.SelectedItem).Oid;
                    }
                    Generar_BT.Enabled = true;
                }
                //t.Record("Promocion_CB");
                //MessageBox.Show(t.GetCronos());
            } break;

            case "Semana_GB":
            {
                PromocionInfo promo = null;
                if (Promocion_CB.SelectedItem != null)
                {
                    promo = PromocionInfo.Get(((ComboBoxSource)Promocion_CB.SelectedItem).Oid, true);
                }

                if (promo != null)
                {
                    CLB_1.Items[0] = "08:00 - 9:00";
                    CLB_1.Items[1] = "09:00 - 10:00";
                    CLB_1.Items[2] = "10:00 - 11:00";
                    CLB_1.Items[3] = "11:00 - 12:00";
                    CLB_1.Items[4] = "12:00 - 13:00";
                    CLB_1.Items[5] = "13:00 - 14:00";
                    CLB_1.Items[6] = "14:00 - 15:00";
                    CLB_1.Items[7] = "15:00 - 16:00";
                    CLB_2.Items[0] = "16:00 - 17:00";
                    CLB_2.Items[1] = "17:00 - 18:00";
                    CLB_2.Items[2] = "18:00 - 19:00";
                    CLB_2.Items[3] = "19:00 - 20:00";
                    CLB_2.Items[4] = "20:00 - 21:00";
                    CLB_2.Items[5] = "21:00 - 22:00";

                    CLB_1.SetItemChecked(0, promo.H8AM);
                    CLB_1.SetItemChecked(1, promo.H0);
                    CLB_1.SetItemChecked(2, promo.H1);
                    CLB_1.SetItemChecked(3, promo.H2);
                    CLB_1.SetItemChecked(4, promo.H3);
                    CLB_1.SetItemChecked(5, promo.H4);
                    CLB_1.SetItemChecked(6, promo.H5);
                    CLB_1.SetItemChecked(7, promo.H6);
                    CLB_2.SetItemChecked(0, promo.H7);
                    CLB_2.SetItemChecked(1, promo.H8);
                    CLB_2.SetItemChecked(2, promo.H9);
                    CLB_2.SetItemChecked(3, promo.H10);
                    CLB_2.SetItemChecked(4, promo.H11);
                    CLB_2.SetItemChecked(5, promo.H12);

                    _entity.Configuracion = Sesiones_Promociones.NewChildList();

                    foreach (Sesion_PromocionInfo item in promo.Sesiones)
                    {
                        Sesion_Promocion copia_conf = Sesion_Promocion.NewChild(_entity);
                        copia_conf.HoraInicio = item.HoraInicio;
                        copia_conf.Sabado     = item.Sabado;
                        copia_conf.NHoras     = item.NHoras;
                        copia_conf.Hora       = item.Hora;
                        _entity.Configuracion.AddItem(copia_conf);
                    }

                    Datos_Sesiones.DataSource = _entity.Configuracion;
                }
            } break;

            case "Sabado_GB":
            {
                PromocionInfo promo = null;
                if (Promocion_CB.SelectedItem != null)
                {
                    promo = _promociones.GetItem(((ComboBoxSource)Promocion_CB.SelectedItem).Oid);
                }

                if (promo != null)
                {
                    CLB_3.Items[0] = "09:00 - 10:00";
                    CLB_3.Items[1] = "10:00 - 11:00";
                    CLB_3.Items[2] = "11:00 - 12:00";
                    CLB_3.Items[3] = "12:00 - 13:00";
                    CLB_3.Items[4] = "13:00 - 14:00";

                    CLB_3.SetItemChecked(0, promo.HS0);
                    CLB_3.SetItemChecked(1, promo.HS1);
                    CLB_3.SetItemChecked(2, promo.HS2);
                    CLB_3.SetItemChecked(3, promo.HS3);
                    CLB_3.SetItemChecked(4, promo.HS4);
                }
            } break;
            }
        }
Example #25
0
        /// <summary>
        /// Función recursiva que va creando el árbol de submódulos y preguntas
        /// </summary>
        /// <param name="padre"></param>
        /// <param name="apartado"></param>
        private void SetAlumnosValues(TreeNode padre, PromocionInfo promocion)
        {
            TreeNode nodo = new TreeNode(promocion.Numero + " - " + promocion.Nombre);

            nodo.NodeFont         = new Font("Tahoma", (float)8.25, FontStyle.Regular);
            nodo.ForeColor        = System.Drawing.Color.Black;
            nodo.Tag              = promocion;
            nodo.SelectedImageKey = Properties.Settings.Default.SUBMODULO_ICON;

            if (_alumnos == null)
            {
                _alumnos = AlumnoList.GetListByExamen(true, _entity.Oid);                  //(_entity.OidModulo, _entity.Desarrollo, _entity.Oid, true);
            }
            foreach (AlumnoInfo alumno in _alumnos)
            {
                bool pertenece = false;

                foreach (Alumno_PromocionInfo item in alumno.Promociones)
                {
                    if (item.OidPromocion == promocion.Oid)
                    {
                        pertenece = true;
                        break;
                    }
                }

                if (pertenece)
                {
                    //nodo_p.Tag = alumno;

                    foreach (Alumno_Examen item in _entity.Alumnos)
                    {
                        if (item.OidAlumno == alumno.Oid)
                        {
                            string texto = "[" + alumno.NExpediente + "] " + alumno.Apellidos + ", " + alumno.Nombre;
                            if (!item.Presentado)
                            {
                                texto += " - NP";
                            }
                            else
                            {
                                if (!_entity.Desarrollo)
                                {
                                    texto += " - " + item.Calificacion.ToString() + "%";
                                }
                                else
                                {
                                    foreach (Respuesta_Alumno_Examen resp in item.Respuestas)
                                    {
                                        texto += " - " + resp.Calificacion.ToString() + "%";
                                    }
                                }
                            }
                            TreeNode nodo_p = new TreeNode(texto);
                            nodo_p.NodeFont  = new Font("Tahoma", (float)8.25, FontStyle.Regular);
                            nodo_p.ForeColor = System.Drawing.Color.Black;
                            nodo_p.Tag       = item;
                            nodo_p.Checked   = true;
                            nodo.Nodes.Add(nodo_p);
                            //break;
                        }
                    }
                }
            }

            if (nodo.Nodes.Count > 0)
            {
                if (padre == null)
                {
                    Arbol_TV.Nodes.Add(nodo);
                }
                else
                {
                    padre.Nodes.Add(nodo);
                }
            }
        }