//genera una liga completa public void generarLigaCompleta(int numeroEquipos) { var listaCodigosEquipos = new List <int>(); var clasificacion = new ArrayList(); for (int i = 1; i <= numeroEquipos; i++) { listaCodigosEquipos.Add(i); } var calendario = generador.generaLiga(listaCodigosEquipos); var calendarioLiga = generaListaCalendarioVOsLiga(calendario); CompeticionTotalCO comp1 = new CompeticionTotalCO(new CompeticionVO("LFP 1ªDivision 14-15", "2014-2015", generador.generarFechaAleatoriaPartido(), generador.generarFechaAleatoriaPartido(), "ninguno", "~/images/titulos/eurocopa.jpg", "Liga"), calendarioLiga, listaCodigosEquipos); comp1 = fachada.crearCompeticionTotal(comp1); int numeroJornada = 1; PartidoTotalCO partido; foreach (var jornada in calendario) { foreach (var part in jornada) { partido = generarPartidoCompleto(comp1.Competicion.Cd_Competicion, Convert.ToString(numeroJornada), (int)part.Local, (int)part.Visitante); } //ojo con esta linea ... fachada.actualizarClasificacionCompeticion(comp1.Competicion.Cd_Competicion); numeroJornada++; } }
//genera una copa completa con todos los partidos y rondas public void generarCopaCompleta(int numeroEquipos) { var listaEquipos = new List <int>(); for (int i = 1; i <= numeroEquipos; i++) { listaEquipos.Add(i); } CompeticionTotalCO comp3 = new CompeticionTotalCO(new CompeticionVO("Copa del Rey", "2020-2021", generador.generarFechaAleatoriaPartido(), generador.generarFechaAleatoriaPartido(), "ninguno", "~/images/titulos/copaeuropa.jpg", "Playoff"), null, listaEquipos); comp3 = fachada.crearCompeticionTotal(comp3); var listaCodigosEquipos = new List <int>(); var rondaActual = new List <Jornada>(); var auxiliar = new List <object>(); PartidoTotalCO partido; String nombreRonda = "Fase Previa"; for (int i = 1; i <= numeroEquipos; i++) { listaCodigosEquipos.Add(i); } /*simula el sistema de eliminatorias de copa hasta que haya un campeon * generando los partidos de todas las rondas */ while (listaCodigosEquipos.Count > 1) { rondaActual = generador.generarRondaCopa(listaCodigosEquipos); //obtenemos el nombre de la ronda actual, en funcion del numero de equipos nombreRonda = generador.obtenerNombreRondaCopa(listaCodigosEquipos.Count); //genera los partidos de la ronda de copa actual foreach (var item in rondaActual) { auxiliar.Add(item.Local); auxiliar.Add(item.Visitante); partido = generarPartidoCompleto(comp3.Competicion.Cd_Competicion, nombreRonda, (int)item.Local, (int)item.Visitante); int ganador = (int)auxiliar[rand.Next(0, 2)]; auxiliar.Clear(); listaCodigosEquipos.Remove(ganador); } } }
public override async Task <bool> Run() { try { if (MemoryCacher.getDateTime() == null) { MemoryCacher.setDateTime(this.NextRun); } MemoryCacher.setLive(true); await _footballHub.Clients.All.SendAsync("StartSimulation", new { eventType = "startSimulation" }); const int numberOfTeams = 20; var teamCodeList = Enumerable.Range(1, numberOfTeams).ToList(); var calendario = _generadorCosas.generaLiga(teamCodeList); var calendarioLiga = _generadorPartidos.generaListaCalendarioVOsLiga(calendario); var comp1 = new CompeticionTotalCO(new CompeticionVO("LFP 1ªDivision 14-15", "2014-2015", _generadorCosas.generarFechaAleatoriaPartido(), _generadorCosas.generarFechaAleatoriaPartido(), "ninguno", "~/images/titulos/eurocopa.jpg", "Liga"), calendarioLiga, teamCodeList); int numeroJornada = 1; var matchSet = calendario[0]; var taskList = new List <Task>(); for (int i = 1; i < numberOfTeams / 2; i++) { var cont = i; var part = matchSet[cont]; var task = createMatchTask(comp1, part, numeroJornada, cont); taskList.Add(task); } Task.WaitAll(taskList.ToArray()); } catch (Exception ex) { // We need to log this somewhere. } return(true); }
private async Task createMatchTask(CompeticionTotalCO competition, Jornada part, int numeroJornada, int cont) { var match = _generadorPartidos.generarPartidoCompleto(competition.Competicion.Cd_Competicion, Convert.ToString(numeroJornada), (int)part.Local, (int)part.Visitante, false); var events = await GenerateEventListForGame(match, cont); // We can't use DI on this class for the player and team services because, they will both be accessed concurrently // from different threads. If we use the same service injected on this for all threads, we would be using the same // repository, and hence the same DbContext for EF. EF is NOT thread safe so we can't do this as we would get an // error in EF Core 3. Instead, we ask the Service Provider for a new instance of the service for each thread, and // this way it's all good var teamService = ServiceConfiguration.ConsoleProvider.GetService <ITeamService>(); var teamLocal = await teamService.GetTeamByIdAndYear(match.Partido.Cod_Local, 2009); var teamVisitor = await teamService.GetTeamByIdAndYear(match.Partido.Cod_Visitante, 2009); await _footballHub.Clients.All.SendAsync("SendCreateMatch", new { matchToCreate = match, matchId = cont, events = events.Count, localTeam = teamLocal, visitorTeam = teamVisitor }); var currentMinute = 0; foreach (var item in events) { int timeToWait = (item.Minute - currentMinute) * 500; Thread.Sleep(timeToWait); await _footballHub.Clients.All.SendAsync("Send", item); currentMinute = item.Minute; } }
public CrearCompeticionTotalAction(CompeticionTotalCO competicionTotal) { this.competicionTotal = competicionTotal; }