internal void Update(ParteAsistencia parent)
        {
            this.RaiseListChangedEvents = false;

            // update (thus deleting) any deleted child objects
            foreach (Alumno_Practica obj in DeletedList)
            {
                obj.DeleteSelf(parent);
            }

            // now that they are deleted, remove them from memory too
            DeletedList.Clear();

            // AddItem/update any current child objects
            foreach (Alumno_Practica obj in this)
            {
                if (obj.IsNew)
                {
                    obj.Insert(parent);
                }
                else
                {
                    obj.Update(parent);
                }
            }

            this.RaiseListChangedEvents = true;
        }
        internal void Update(ParteAsistencia parent)
        {
            // if we're not dirty then don't update the database
            if (!this.IsDirty)
            {
                return;
            }

            OidParte = parent.Oid;

            try
            {
                ValidationRules.CheckRules();

                if (!IsValid)
                {
                    throw new iQValidationException(moleQule.Library.Resources.Messages.GENERIC_VALIDATION_ERROR);
                }

                AlumnoParteRecord obj = parent.Session().Get <AlumnoParteRecord>(Oid);
                obj.CopyValues(this.Base.Record);
                parent.Session().Update(obj);
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            MarkOld();
        }
Beispiel #3
0
 /// <summary>
 /// Abre el formulario para editar item
 /// <returns>void</returns>
 /// </summary>
 public override void OpenEditForm()
 {
     try
     {
         PAsistenciaEditForm form = new PAsistenciaEditForm(ActiveOID);
         if (form.Entity != null)
         {
             AddForm(form);
             _entity = form.Entity;
         }
     }
     catch (Csla.DataPortalException ex)
     {
         MessageBox.Show(ex.BusinessException.ToString(),
                         moleQule.Face.Resources.Labels.ERROR_TITLE,
                         MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString(),
                         moleQule.Face.Resources.Labels.ERROR_TITLE,
                         MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
 }
Beispiel #4
0
        /// <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
            {
                //ParteAsistenciaInfo parte = ParteAsistenciaInfo.Get(oid, true);
                //if (parte.Conceptos.Count > 0)
                //{
                //    PgMng.ShowInfoException(Resources.Messages.PARTE_CON_CONCEPTOS_ASOCIADOS);
                //    _action_result = DialogResult.Ignore;
                //    return;
                //}
                ParteAsistencia.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);
            }
            //}
        }
        internal void DeleteSelf(ParteAsistencia parent)
        {
            // if we're not dirty then don't update the database
            if (!this.IsDirty)
            {
                return;
            }

            // if we're new then don't update the database
            if (this.IsNew)
            {
                return;
            }

            try
            {
                parent.Session().Delete(parent.Session().Get <AlumnoParteRecord>(Oid));
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            MarkNew();
        }
Beispiel #6
0
 /// <summary>Aplica las reglas de validación de usuarios al formulario.
 /// <returns>void</returns>
 /// </summary>
 protected override void ApplyAuthorizationRules()
 {
     Tabla.Visible         = ParteAsistencia.CanGetObject();
     Add_Button.Enabled    = ParteAsistencia.CanAddObject();
     Edit_Button.Enabled   = ParteAsistencia.CanEditObject();
     Delete_Button.Enabled = ParteAsistencia.CanDeleteObject();
     Print_Button.Enabled  = ParteAsistencia.CanGetObject();
     View_Button.Enabled   = ParteAsistencia.CanGetObject();
 }
            public static Concepto_Parte NewChild(ParteAsistencia parent)
			{
				if (!CanAddObject())
					throw new System.Security.SecurityException(
						moleQule.Library.Resources.Messages.USER_NOT_ALLOWED);

                Concepto_Parte obj = new Concepto_Parte();
				obj.OidParte = parent.Oid;
				return obj;
			}
        public static Alumno_Practica NewChild(ParteAsistencia parent)
        {
            if (!CanAddObject())
            {
                throw new System.Security.SecurityException(
                          moleQule.Library.Resources.Messages.USER_NOT_ALLOWED);
            }

            Alumno_Practica obj = new Alumno_Practica();

            obj.OidParte = parent.Oid;
            return(obj);
        }
        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <param name="get_childs">retrieving the childs</param>
        /// <returns></returns>
        public static InformePlantillaList GetList(long oid_plantilla)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = false;

            //No criteria. Retrieve all de List
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = InformePlantillaList.SELECT_INFORME_PLANTILLA(oid_plantilla);
            }
            InformePlantillaList list = DataPortal.Fetch <InformePlantillaList>(criteria);

            CloseSession(criteria.SessionCode);
            return(list);
        }
Beispiel #10
0
        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <param name="get_childs">retrieving the childs</param>
        /// <returns></returns>
        public static RegistroFaltasList GetList(bool childs)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = childs;

            //No criteria. Retrieve all de List
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = RegistroFaltasList.SELECT_FALTAS_ALUMNOS();
            }
            RegistroFaltasList list = DataPortal.Fetch <RegistroFaltasList>(criteria);

            CloseSession(criteria.SessionCode);
            return(list);
        }
Beispiel #11
0
        //  private ParteAsistenciaList() { }

        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <returns>ParteAsistenciaList</returns>
        public static ParteAsistenciaList GetList(bool childs)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = childs;
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = ParteAsistenciaList.SELECT();
            }

            ParteAsistenciaList list = DataPortal.Fetch <ParteAsistenciaList>(criteria);

            CloseSession(criteria.SessionCode);

            return(list);
        }
Beispiel #12
0
        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <param name="oid_promocion"></param>
        /// <returns></returns>
        public static ParteAsistenciaList GetByPromocion(long oid_promocion)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = true;
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = ParteAsistenciaList.SELECT_BY_PROMOCION(oid_promocion);
            }

            ParteAsistenciaList list = DataPortal.Fetch <ParteAsistenciaList>(criteria);

            CloseSession(criteria.SessionCode);

            return(list);
        }
        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <param name="get_childs">retrieving the childs</param>
        /// <returns></returns>
        public static InformePlantillaList GetDisponiblesDesarrolloList(long oid_plantilla, DateTime fecha_disponibilidad)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = false;

            //No criteria. Retrieve all de List
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = InformePlantillaList.SELECT_INFORME_DISPONIBILIDAD_PLANTILLA_DESARROLLO(oid_plantilla, fecha_disponibilidad);
            }
            InformePlantillaList list = DataPortal.Fetch <InformePlantillaList>(criteria);

            CloseSession(criteria.SessionCode);
            return(list);
        }
        /// <summary>
        /// Retrieve the complete list from db
        /// </summary>
        /// <param name="get_childs">retrieving the childs</param>
        /// <returns></returns>
        public static InformePreguntasList GetList(string lista_preguntas)
        {
            CriteriaEx criteria = ParteAsistencia.GetCriteria(ParteAsistencia.OpenSession());

            criteria.Childs = false;

            //No criteria. Retrieve all de List
            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = InformePreguntasList.SELECT_INFORME_PREGUNTAS(lista_preguntas);
            }
            InformePreguntasList list = DataPortal.Fetch <InformePreguntasList>(criteria);

            CloseSession(criteria.SessionCode);
            return(list);
        }
Beispiel #15
0
        public override void UpdateList()
        {
            switch (_current_action)
            {
            case molAction.Add:
                if (_entity == null)
                {
                    return;
                }
                List.AddItem(_entity.GetInfo(false));
                if (FilterType == IFilterType.Filter)
                {
                    ParteAsistenciaList listA = ParteAsistenciaList.GetList(_filter_results);
                    listA.AddItem(_entity.GetInfo(false));
                    _filter_results = listA.GetSortedList();
                }
                break;

            case molAction.Edit:
            case molAction.Lock:
            case molAction.Unlock:
                if (_entity == null)
                {
                    return;
                }
                ActiveItem.CopyFrom(_entity);
                break;

            case molAction.Delete:
                if (ActiveItem == null)
                {
                    return;
                }
                List.RemoveItem(ActiveOID);
                if (FilterType == IFilterType.Filter)
                {
                    ParteAsistenciaList listD = ParteAsistenciaList.GetList(_filter_results);
                    listD.RemoveItem(ActiveOID);
                    _filter_results = listD.GetSortedList();
                }
                break;
            }

            _entity = null;
            RefreshSources();
        }
Beispiel #16
0
        /// <summary>
        /// Guarda en la bd el objeto actual
        /// </summary>
        protected override bool SaveObject()
        {
            using (StatusBusy busy = new StatusBusy(moleQule.Face.Resources.Messages.SAVING))
            {
                this.Datos.RaiseListChangedEvents = false;

                ParteAsistencia temp = _entity.Clone();

                temp.ApplyEdit();

                // do the save
                try
                {
                    _entity = temp.Save();
                    _entity.ApplyEdit();

                    //Decomentar si se va a mantener en memoria
                    //_entity.BeginEdit();
                    return(true);
                }
                catch (iQValidationException ex)
                {
                    MessageBox.Show(iQExceptionHandler.GetAllMessages(ex) +
                                    Environment.NewLine + ex.SysMessage,
                                    moleQule.Library.Application.AppController.APP_TITLE,
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return(false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(iQExceptionHandler.GetAllMessages(ex),
                                    moleQule.Library.Application.AppController.APP_TITLE,
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);
                    return(false);
                }
                finally
                {
                    this.Datos.RaiseListChangedEvents = true;
                }
            }
        }
			internal void Insert(ParteAsistencia parent)
			{
				// if we're not dirty then don't update the database
				if (!this.IsDirty) return;

				OidParte = parent.Oid;

				try
				{
					ValidationRules.CheckRules();

					if (!IsValid)
						throw new iQValidationException(moleQule.Library.Resources.Messages.GENERIC_VALIDATION_ERROR);

					parent.Session().Save(this.Base.Record);
				}
				catch (Exception ex)
				{
					iQExceptionHandler.TreatException(ex);
				}

				MarkOld();
			}
 protected override void GetFormSourceData(long oid)
 {
     _entity = ParteAsistencia.Get(oid, true);
     _entity.BeginEdit();
     _mf_type = ManagerFormType.MFEdit;
 }
 public Clase_Parte NewItem(ParteAsistencia parent)
 {
     this.AddItem(Clase_Parte.NewChild(parent));
     return(this[Count - 1]);
 }
        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();
            }
        }
 public Alumno_Practica NewItem(ParteAsistencia parent)
 {
     this.AddItem(Alumno_Practica.NewChild(parent));
     return(this[Count - 1]);
 }
 public void CopyFrom(ParteAsistencia source)
 {
     _base.CopyValues(source);
 }
        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(); }
        }