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(); }
/// <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); } }
/// <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(); }
/// <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); }
/// <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); }
// 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); }
/// <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); }
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(); }
/// <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(); } }