public async Task <ActionResult> AddPlayer(AddPlayerRequest addPlayerRequest) { if (!ModelState.IsValid) { return(View(addPlayerRequest)); } var yearTask = this.Db.years.Where(x => x.value == this.CurrentYear).FirstOrDefaultAsync(); var teamTask = this.Db.teams.Where(x => x.id == addPlayerRequest.TeamId).FirstOrDefaultAsync(); var playerTask = this.Db.players.Include(x => x.playeryeardatas).Where(x => x.name.ToLower() == addPlayerRequest.PlayerName.ToLower()).FirstOrDefaultAsync(); await Task.WhenAll(yearTask, teamTask, playerTask); player player = null; // If the player doesn't exist, force create as rookie. bool rookieStatus = true; if (playerTask.Result != null) { player = playerTask.Result; // if the player already has a PYD for the current year, delete it. var currentYearPyd = player.playeryeardatas.FirstOrDefault(x => x.year.value == this.CurrentYear); player.currentHandicap = addPlayerRequest.Handicap; if (currentYearPyd != null) { this.Db.playeryeardatas.Remove(currentYearPyd); } // if player DOES exist honor rookie option. rookieStatus = addPlayerRequest.IsRookie; } else { player = new player { validPlayer = true, name = addPlayerRequest.PlayerName, currentHandicap = addPlayerRequest.Handicap }; } var newPyd = new playeryeardata { isRookie = rookieStatus, year = yearTask.Result, team = teamTask.Result, player = player, week0Score = addPlayerRequest.Handicap + 36, startingHandicap = addPlayerRequest.Handicap, finishingHandicap = addPlayerRequest.Handicap }; this.Db.playeryeardatas.Add(newPyd); await this.Db.SaveChangesAsync(); return(RedirectToAction("AddPlayer", new { result = "success" })); }
public static PlayerResponse From(playeryeardata p) { var pr = From(p.player); pr.YD = PlayerYearDataResponse.From(p); return(pr); }
public static PlayerYearDataResponse From(playeryeardata pyd) { return(new PlayerYearDataResponse { IsR = pyd.isRookie, Id = pyd.id, SH = pyd.startingHandicap, FH = pyd.finishingHandicap, TId = pyd.teamId }); }
private IEnumerable <string> IntializeRosters() { LinkedList <string> playersNotFoundInDb = new LinkedList <string>(); foreach (var roster in rosters) { foreach (var playerName in roster.GetPlayers()) { player currentPlayer = null; if (!this.playersLookup.TryGetValue(playerName.ToLowerInvariant(), out currentPlayer)) { playersNotFoundInDb.AddLast(playerName); continue; } // find the latest year data, this will be the one we copy from. If they don't have one, then // push on to list of not founds. var recentPyd = currentPlayer.playeryeardatas.OrderByDescending(x => x.year.value).FirstOrDefault(); if (recentPyd == null) { playersNotFoundInDb.AddLast(playerName); continue; } var newPlayerYearData = new playeryeardata { isRookie = false, year = this.yearToInitialize, startingHandicap = recentPyd.finishingHandicap, finishingHandicap = recentPyd.finishingHandicap, // we may use finishing handicap during leaderboard calcs. week0Score = recentPyd.finishingHandicap + 36, team = roster.Team, player = currentPlayer }; currentPlayer.currentHandicap = recentPyd.finishingHandicap; // just to make sure these values are consistent. //roster.Team.playeryeardatas.Add(newPlayerYearData); //currentPlayer.playeryeardatas.Add(newPlayerYearData); this.playeryeardatasToCreate.AddLast(newPlayerYearData); } } return(playersNotFoundInDb); }