public void SortearJogos(int id, int barragemId, bool notificarApp = true) { var rodadaNegocio = new RodadaNegocio(); try { List <Classe> classes = db.Classe.Where(c => c.barragemId == barragemId && c.ativa == true).ToList(); var isClasseUnica = db.BarragemView.Find(barragemId).isClasseUnica; var jogos = new List <Jogo>(); for (int i = 0; i < classes.Count(); i++) { if (isClasseUnica) { rodadaNegocio.EfetuarSorteioPorProximidade(barragemId, classes[i].Id, id); } else { jogos = rodadaNegocio.EfetuarSorteio(classes[i].Id, barragemId, null, id); jogos = rodadaNegocio.definirDesafianteDesafiado(jogos, classes[i].Id, barragemId); rodadaNegocio.salvarJogos(jogos, id); } } } catch (Exception e) { throw e; } if (notificarApp) { NotificacaoApp(barragemId); } }
public string GerarRodadasAutomaticas() { if (DateTime.Now.Hour < 22) { return("0"); } DateTime hoje = DateTime.Now.Date; RodadaNegocio rodadaNegocio = new RodadaNegocio(); Dictionary <Temporada, string> temporadasComErro = new Dictionary <Temporada, string>(); List <Temporada> temporadasQueIniciamHoje = db.Temporada.Where(t => t.isAutomatico && t.dataInicio == hoje).ToList(); //para cada temporada // 1. tratar zeramento do ranking se for o caso(a implementar) // 2.fechar rodada // 3.criar nova rodada // 4.sortear jogos da rodada // 5.enviar email foreach (Temporada temporada in temporadasQueIniciamHoje) { try { List <Rodada> rodadas = db.Rodada.Where(r => r.temporadaId == temporada.Id).ToList(); if (rodadas.Count == 0) { criarNovaRodadaComJogos(rodadaNegocio, temporada, hoje); } }catch (Exception e) { temporadasComErro.Add(temporada, e.Message); } } List <Rodada> rodadasQueEncerramHoje = db.Rodada.Where(r => DbFunctions.TruncateTime(r.dataFim) == hoje && r.isAberta).ToList(); foreach (Rodada rodada in rodadasQueEncerramHoje) { Temporada temporada = rodada.temporada; try { if (temporada.isAutomatico) { rodadaNegocio.FecharRodada(rodada.Id); criarNovaRodadaComJogos(rodadaNegocio, temporada, hoje); } }catch (Exception e) { temporadasComErro.Add(temporada, e.Message); } } if (temporadasComErro.Count > 0) { notificarErros(temporadasComErro); } return("1"); }
private void criarNovaRodadaComJogos(RodadaNegocio rodadaNegocio, Temporada temporada, DateTime hoje) { Rodada novaRodada = new Rodada(); novaRodada.temporadaId = temporada.Id; novaRodada.barragemId = temporada.barragemId; novaRodada.dataInicio = hoje; novaRodada.dataFim = hoje.AddDays(temporada.tamanhoRodada.Value); rodadaNegocio.Create(novaRodada); rodadaNegocio.SortearJogos(novaRodada.Id, temporada.barragemId); notificarOrganizadorPorEmail(temporada, novaRodada, null); }