public SortedDictionary <long, DisponibilidadInfo> GetDisponibilidadesProfesores(DateTime fecha_inicio)
        {
            SortedDictionary <long, DisponibilidadInfo> lista = new SortedDictionary <long, DisponibilidadInfo>();

            string instructores = string.Empty;

            foreach (InstructorInfo item in this)
            {
                instructores += item.Oid.ToString() + ",";
            }

            if (instructores != string.Empty)
            {
                instructores = instructores.Substring(0, instructores.Length - 1);

                //hacer select para traer disponibilidades de los profesores de la lista para la semana seleccionada
                string      query  = Disponibilidades.SELECT_BY_LIST(instructores, fecha_inicio);
                IDataReader reader = nHManager.Instance.SQLNativeSelect(query);

                while (reader.Read())
                {
                    DisponibilidadInfo dispo = DisponibilidadInfo.Get(reader, false);
                    if (!lista.ContainsKey(dispo.OidInstructor))
                    {
                        lista.Add(dispo.OidInstructor, dispo);
                    }
                }
            }


            return(lista);
        }
        // called to retrieve data from db
        protected override void Fetch(CriteriaEx criteria)
        {
            this.RaiseListChangedEvents = false;

            SessionCode = criteria.SessionCode;
            Childs      = criteria.Childs;

            try
            {
                if (nHMng.UseDirectSQL)
                {
                    IDataReader reader = Disponibilidades.DoNativeSELECT(AppContext.ActiveSchema.Code, Session());

                    IsReadOnly = false;

                    while (reader.Read())
                    {
                        this.AddItem(DisponibilidadInfo.Get(reader, Childs));
                    }

                    IsReadOnly = true;
                }
                else
                {
                    IList <Disponibilidad> list = criteria.List <Disponibilidad>();

                    if (list.Count > 0)
                    {
                        IsReadOnly = false;

                        foreach (Disponibilidad item in list)
                        {
                            this.AddItem(item.GetInfo());
                        }

                        IsReadOnly = true;
                    }
                }
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            this.RaiseListChangedEvents = true;
        }