//TODO ver se não ter problema esse método não ser assíncrono e os outros serem public List <PontuacaoCampeonatoEntity> CalcularPontuacaoCampeonato(List <PartidaEntity> partidas, CampeonatoEntity campeonato, List <TimeEntity> times) { List <PontuacaoCampeonatoEntity> pontuacoesCampeonato = new List <PontuacaoCampeonatoEntity>(); //Gera lista de PontuacaoCampeonato com times foreach (var time in times) { var PontuacaoCampeonato = new PontuacaoCampeonatoEntity(); PontuacaoCampeonato.Time = time; pontuacoesCampeonato.Add(PontuacaoCampeonato); } //Calcula a pontuação de cada time foreach (var partida in partidas) { if (partida.Gols1 > partida.Gols2) { var teste = pontuacoesCampeonato.Find(x => x.Time == partida.Time1); teste.Pontuacao += 3; } else if (partida.Gols1 < partida.Gols2) { var teste = pontuacoesCampeonato.Find(x => x.Time == partida.Time2); teste.Pontuacao += 3; } else { var teste = pontuacoesCampeonato.Find(x => x.Time == partida.Time2); teste.Pontuacao += 1; teste = pontuacoesCampeonato.Find(x => x.Time == partida.Time1); teste.Pontuacao += 1; } } return(pontuacoesCampeonato); }
public async Task <PontuacaoCampeonatoEntity> Put(PontuacaoCampeonatoEntity entity) { return(await _reposotory.UpdateAsync(entity)); }
public async Task <PontuacaoCampeonatoEntity> Post(PontuacaoCampeonatoEntity entity) { return(await _reposotory.InsertAsync(entity)); }
public async Task <CampeonatoEntity> Post(CampeonatoEntity campeonato) { try { var pontuacaoCampeonatoList = new List <PontuacaoCampeonatoEntity>(); var result = await _repository.InsertAsync(campeonato); var times = _timeservice.GetAll(); foreach (var time in times.Result) { PontuacaoCampeonatoEntity pontuacao = new PontuacaoCampeonatoEntity { time = time, codigoCampeonato = result.codigoCampeonato }; pontuacaoCampeonatoList.Add(await _pontuacaoCampeonatoRepository.InsertAsync(pontuacao)); } var random = new Random(); List <PartidaEntity> partidas = new List <PartidaEntity>(); foreach (var time in times.Result) { foreach (var time2 in times.Result) { if (time == time2) { continue; } if (partidas.Any(x => (x.timeA == time && x.timeB == time2) || (x.timeA == time2 && x.timeB == time))) { continue; } PartidaEntity partida = new PartidaEntity { timeA = time, timeB = time2, golsA = random.Next(0, 7), golsB = random.Next(0, 7) }; DateTime DataPermitida = DataCampeonato(); partida.data = DataPermitida; partida.codigoCampeonato = result.codigoCampeonato; var resultPartida = await _partidaService.Post(partida); if (resultPartida != null) { partidas.Add(partida); } } } var pontuacaoList = await adicionarPartidaPontuacao(partidas, pontuacaoCampeonatoList); campeonato.partidas = partidas; result.campeao = pontuacaoList.OrderByDescending(x => x.pontuacaoTime).Select(x => x.time).FirstOrDefault(); result.vici = pontuacaoList.OrderByDescending(x => x.pontuacaoTime).Select(x => x.time).ElementAt(2); result.terceiro = pontuacaoList.OrderByDescending(x => x.pontuacaoTime).Select(x => x.time).ElementAt(3); result.dataFinal = partidas.OrderBy(x => x.data).LastOrDefault()?.data; await _repository.UpdateAsync(result); return(result); } catch (Exception) { _repository.Dispose(); } return(null); }