public JsonResult EjecutaOperaciones(string hora, int[] operaciones, string ciclo, string excel, string hoja) { //-empalmes -preasignacion -otrosSemestres -algoritmo string res = "<strong>Asignacion Fallida</strong>\n"; string detalles = ""; try { Conexion c = new Conexion(Conexion.datosConexion, Server.MapPath("~/Archivos/" + excel), ciclo); ListaVariables grupos = new ListaVariables(c.Grupos_EmpiezanA(ciclo, Convert.ToInt32(hora), false)); ListaSalones salones = new ListaSalones(c, c.Salones(), Convert.ToInt32(hora)); salones.SetHorarios(c, Ciclo); int numero_Operacion = 0; IOperacion operacion = null; foreach (int op in operaciones) { numero_Operacion++; switch ((byte)op) //Fabrica abstracta { case (byte)EOperaciones.algoritmoGenetico: operacion = new AlgoritmoGenetico(grupos, salones, Convert.ToInt32(hora), 100, 1000); break; case (byte)EOperaciones.empalmes: operacion = new RevisionEmpalmes(grupos, salones); break; case (byte)EOperaciones.otrosSemestres: operacion = new AsignacionOtrosSemestres(grupos, salones); break; case (byte)EOperaciones.preasignacion: operacion = new AsignacionPreferencial(grupos, salones); break; } if (operacion != null) { operacion.Ejecuta(); if (operacion.Resultado.Count != 0) { grupos.Actualiza(operacion.Resultado); detalles += Grupos2Table(operacion.Resultado.OrderBy(g => g.Cve_espacio).ToList(), operacion.NombreOperacion); } else { detalles += string.Format("{0} sin grupos modificados", operacion.NombreOperacion); } detalles += "<br>"; } } c.Grupos_Carga(grupos, hoja, c.Materias_AsDictionary(), c.Profesores_AsDicctionary()); res = string.Format("Asignacion de {0} completada<br>{1}", hora, detalles); } catch (Exception ex) { res += "\n" + ex.Message; } return(new JsonResult() { Data = res, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }