public async Task <int> CreateAsyncPlayer(PostPlayer playerData, int userId) { //pobieramy uzytkownika z bazy aby utworzyc pelny obiekt player do dodania do bazy var user = await _authRepository.UserAccount(userId); // tworzy objekt Player var player = new Player(); player.user = user; player.SetSurname(playerData.Surname); player.SetName(playerData.Name); player.SetAge(playerData.Age); player.SetPosition(playerData.Position); var PlayersStatictics = new PlayersStatictics(0, 0, 0, 0, 0, player); player.Statictics = PlayersStatictics; // przekazuje id użytkownika, który chce stworzyć zawodnika i samego zawodnika do metody z repozytorium // a wywołanie jest przypisane do zmiennej ponieważ metoda z repozytorium zwraca id nowo utworzonego zawodnika int createdPlayerId = await _playerRepository.AddAsyncPlayer(player, userId); return(createdPlayerId); }
public async Task UpdateAsyncPlayerStatistic(PlayersStatictics playerS) //metoda edytuje statystyki ogolne w tabeli PlrStats { _context.PlrStats.Update(playerS); _context.SaveChanges(); await Task.CompletedTask; }
public async Task <IEnumerable <MergedPlayersStatisticsDto> > GetPlayersListStats(int userId) //metoda pobierajaca liste zawodnikow z ich statystykami { //pobiera liste statystyk zawodnikow w meczach (to zawodnik z polaczeniem tabeli ZawodnikMecz) var playersStatisticListInMatches = await _playerRepository.GetAsyncPlayersListStats(userId); //na nowo sa liczone statystyki kazdego zawodnika foreach (var plr in playersStatisticListInMatches) //leci po zawodnikach { // zerujemy ilosc w kazdej liczonej zmiennej statystyk int Matches = 0; int Goals = 0; int Assists = 0; int YellowCard = 0; int RedCard = 0; //pobiera statystyke zawodnika z kazdego meczu w ktorym znalazl sie w kadrze i dodaje do juz pobranych foreach (var match in plr.Matchhs2Player) { if (match.Goals != null) { Goals = Convert.ToInt16(Goals + match.Goals); } if (match.Assists != null) { Assists = Convert.ToInt16(Assists + match.Assists); } if (match.YellowCard != null) { YellowCard = Convert.ToInt16(YellowCard + match.YellowCard); } if (match.RedCard != null) { RedCard = Convert.ToInt16(RedCard + match.RedCard); } if (match.PlayInMatch == true) { Matches++; } } //pobiera statystyke zawodnika PlayersStatictics playerToUpdate = await _playerRepository.GetAsyncPlayerStatistic(plr.Id); //edytuje wartosci ktore powyzej zostaly na nowo wyliczone playerToUpdate.SetMatches(Matches); playerToUpdate.SetGoals(Goals); playerToUpdate.SetAssists(Assists); playerToUpdate.SetYellowCards(YellowCard); playerToUpdate.SetRedCard(RedCard); //wywołuje metode edytujaca w bazie statystyke zawodnika await _playerRepository.UpdateAsyncPlayerStatistic(playerToUpdate); } //pobiera juz edytowana, nowa liste statystyk(ta ogolna) var playerStatsIEnumerable = await _playerRepository.GetAsyncPlayersStatistics(userId); //zamienia IEnumerable uzyskany z powyższej metody na liste List <PlayersStatictics> playersStatisticsList = playerStatsIEnumerable.ToList(); //pobiera podstawową listę zawodnikow var players = await _playerRepository.GetAsyncAllPlayers(userId); List <Player> playersList = players.ToList(); //sortuje listę po pozycjach playersList = SortPlayers(playersList); //deklaracja listy obiektow scalonych z tabeli Player i Statistics var mergedPlayersStatisticsList = new List <MergedPlayersStatisticsDto>(); //uzupenianie scalonej listy for (int i = 0; i < playersList.Count(); i++) { //pobiera id zawodnika int playerId = playersList[i].Id; //pobiera jego statystyki po jego id PlayersStatictics statistic = playersStatisticsList.FirstOrDefault(x => x.PlayerId == playerId); //tworzy nowy obiekt w oparciu o zawodnika i statystyki var mergedPlayer = new MergedPlayersStatisticsDto(playerId, playersList[i].Name, playersList[i].Surname, playersList[i].Position, Convert.ToInt32(statistic.Goals), Convert.ToInt32(statistic.Assists), Convert.ToInt32(statistic.YellowCard), Convert.ToInt32(statistic.RedCard), Convert.ToInt32(statistic.Matches)); //dodaje nowy obiekt do listy scalonych mergedPlayersStatisticsList.Add(mergedPlayer); } //zwraca cala gotowa liste return(mergedPlayersStatisticsList); }