예제 #1
0
        private void asignandoXArea(List <Variable> asignando, ListaSalones s)
        {
            Grupo gAnterior;
            Salon sAnterior;

            foreach (Variable v in asignando)
            {
                gAnterior = v.GHoraAnterior;
                if (gAnterior == null)
                {
                    asignacionAleatoria(v, s);
                }
                else
                {
                    sAnterior = s.busca(gAnterior.Cve_espacio);
                    if (sAnterior != null && sAnterior.Disponible_para_grupo(v))
                    {
                        v.Salon = sAnterior;
                    }
                    else
                    {
                        asignacionAleatoria(v, s);
                    }
                }
            }
        }
        private void ResuelveEmpalme(ListaVariables empalme)
        {
            ListaGrupos    Temp;
            ListaVariables aux;
            Salon          s;

            aux = empalme.Empalmados();

            //Chequeo de empalme
            if (aux.Count > 1 && permiteEmpalmes.busca(aux[0].Cve_espacio) == null)
            {
                s = salones.busca(empalme[0].Cve_espacio);
                if (s == null)
                {
                    return;             //Si no encuentra el salon es porque es algo como Campo o asi. Se valen los empalmes
                }
                aux.SetSalones(salones);

                Temp = new ListaGrupos(empalme.EnSalonesFijos().Where(g => g.Salon_fijo == s.Cve_espacio).ToList());

                if (Temp.Count() != 0)//Solo uno tiene preferencia, y a ese se le va a dar
                {
                    AsignacionPreferencial(empalme, s);
                }
                else    // Si no hay preferencial entonces se elegira por otro medio
                {
                    AsignacionMejorEleccion(empalme, s);
                }
            }

            grupos.Actualiza(empalme);
        }
 /// <summary>
 /// Asigna salones tomando en cuenta el semestre pasado, aqui no checa empalmes, solo si es el mismo profesor, grupo, y horario
 /// </summary>
 public void semestres_anteriores()
 {
     foreach (Variable g in grupos)
     {
         if (g.Cve_espacio == "" && salones.busca(g.Cve_espacio) != null)
         {
             g.Cve_espacio = g.salonAnioPasado();
             GruposModificados.Add(g);
         }
     }
 }
        public void SetSalones(ListaSalones salones)
        {
            Salon s;

            foreach (Variable v in this as IList <Variable> )
            {
                s = salones.busca(v.Cve_espacio);
                if (s != null)
                {
                    v.Salon = s;
                }
            }
        }