/// <summary> /// Checa si el salon se puede asignar, y si no evalua los cambios que hay que hacer y si los hace /// </summary> /// <param name="grupo">Grupo a asignar</param> /// <param name="s">Salon en que se quiere asignar</param> /// <returns></returns> private bool AsignaEnSalon(Variable grupo, Salon s) { try { //Checa si es apto para el grupo if (grupo.CalculaPuntos(s) <= 0 || grupo.Cupo >= s.Cupo) { return(false); } if (s.Disponible(grupo.horario)) { grupo.Salon = s; return(true); } //Obtiene los grupos que estan asignados de este salon ListaVariables enSalon = new ListaVariables(Grupos.EnSalon(s.Cve_espacio)); //Obtiene los grupos con los que se crusaria ListaVariables conEmpalme = enSalon.Empalmados(grupo); //Compara el maximo puntaje de los grupos contra el que tendria estre grupo if (grupo.CalculaPuntos(s) > conEmpalme.MaxPuntos()) { //Quita la asignacon de los grupos y asigna al nuevo grupo foreach (Variable g in conEmpalme) { g.Salon = null; } if (s.Disponible(grupo.horario)) //Checa si no hay problemas con grupos de otras horas { Grupos.Actualiza(conEmpalme); //actualiza los grupos en otros horarios grupo.Salon = s; return(true); } else { foreach (Variable g in conEmpalme) { g.Salon = s; } } } } catch (Exception) { } return(false); }