Example #1
0
        public override void RefreshSecondaryData()
        {
            HorarioList horarios = HorarioList.GetList(false);
            HorarioInfo horario  = horarios.GetItem(_entity.OidHorario);

            Horario_TB.Text = "Desde " + horario.FechaInicial.ToShortDateString() + " hasta " + horario.FechaFinal.ToShortDateString();
            PgMng.Grow();

            base.RefreshSecondaryData();
        }
        /// <summary>
        /// Abre el formulario para borrar item
        /// <returns>void</returns>
        /// </summary>
        public override void DeleteObject(long oid)
        {
            //if (MessageBox.Show(moleQule.Face.Resources.Messages.DELETE_CONFIRM,
            //                    moleQule.Face.Resources.Labels.ADVISE_TITLE,
            //                    MessageBoxButtons.YesNoCancel,
            //                    MessageBoxIcon.Question) == DialogResult.Yes)
            //{
            try
            {
                HorarioInfo horario = HorarioInfo.Get(oid, true);

                if (horario.Asistencias.Count > 0)
                {
                    foreach (ParteAsistenciaInfo asist in horario.Asistencias)
                    {
                        if (asist.Confirmada ||
                            (asist.Alumno_Partes != null && asist.Alumno_Partes.Count > 0) ||
                            (asist.Alumnos_Practicas != null && asist.Alumnos_Practicas.Count > 0))
                        {
                            MessageBox.Show(Resources.Messages.HORARIO_CONFIRMADO,
                                            moleQule.Face.Resources.Labels.ERROR_TITLE,
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Exclamation);
                            _action_result = DialogResult.Ignore;
                            return;
                        }
                    }
                }

                Horario.Delete(oid);
                _action_result = DialogResult.OK;

                //Se eliminan todos los formularios de ese objeto
                foreach (ItemMngBaseForm form in _list_active_form)
                {
                    if (form.Oid == oid)
                    {
                        form.Dispose();
                        break;
                    }
                }
            }
            catch (Csla.DataPortalException ex)
            {
                MessageBox.Show(iQExceptionHandler.GetiQException(ex).Message);
            }
            //}
        }
Example #3
0
 protected override void GetFormSourceData(long oid)
 {
     _entity  = HorarioInfo.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();
            }
        }