public void UpdateBasicData(List<string> stats) { List<Player> players = new List<Player>(); DateTime currentDate = DateTime.Today; for (int i = 0; i < stats.Count; i += 9) { var playerModel = new PlayerModel() { Name = stats[i + 1], Selected = double.Parse(stats[i + 4].TrimEnd('%')), Points = int.Parse(stats[i + 7]), Team = stats[i + 2], RoundScore = int.Parse(stats[i + 6]), MinutesPlayed = int.Parse(stats[i + 8].Replace(",", "")), IsInjured = stats[i].Contains(INJURED_ICON) ? true : false, UpadatedDate = DateTime.Today }; playerModel.UpadatedDate = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day); playerModel.SetPosition(stats[i + 3]); playerModel.SetPrice(stats[i + 5]); Player player = AddOrUpdatePlayer(playerModel); players.Add(player); } List<int> playerIds = players.Select(p => p.Id).ToList(); data.Players.DeleteRange(p => !playerIds.Contains(p.Id)); data.SaveChanges(); }
private Player AddOrUpdatePlayer(PlayerModel playerModel) { DateTime currentSeason = DateTime.Now.Month >= 7 ? new DateTime(DateTime.Now.Year, 7, 1) : new DateTime(DateTime.Now.Year - 1, 7, 1); var playerExists = data.Players.All() .FirstOrDefault(x => x.Name == playerModel.Name && x.Team.Initials == playerModel.Team && x.UpadetedDate >= currentSeason); var team = data.Teams.All().FirstOrDefault(x => x.Initials == playerModel.Team); if (playerExists == null) { Player newPlayer = new Player() { Name = playerModel.Name, Position = playerModel.Position, Selected = playerModel.Selected, Price = playerModel.Price, RoundScore = playerModel.RoundScore, Points = playerModel.Points, MinutesPlayed = playerModel.MinutesPlayed, IsInjured = playerModel.IsInjured, UpadetedDate = playerModel.UpadatedDate }; team.Players.Add(newPlayer); playerExists = newPlayer; } else { playerExists.TeamId = team.Id; playerExists.Selected = playerModel.Selected; playerExists.Points = playerModel.Points; playerExists.Price = playerModel.Price; playerExists.RoundScore = playerModel.RoundScore; playerExists.MinutesPlayed = playerModel.MinutesPlayed; playerExists.IsInjured = playerModel.IsInjured; playerExists.UpadetedDate = playerModel.UpadatedDate; } data.SaveChanges(); return playerExists; }
public void UpdatePointsPerGameData( List<string> stats) { for (int i = 0; i < stats.Count; i += 9) { var playerModel = new PlayerModel() { Name = stats[i + 1], Team = stats[i + 2], PointsPerGame = decimal.Parse(stats[i + 8]) }; var playerExists = data.Players.All() .FirstOrDefault(x => x.Name == playerModel.Name && x.Team.Initials == playerModel.Team); if (playerExists != null) { playerExists.PointsPerGame = playerModel.PointsPerGame; } } data.SaveChanges(); }