public ActionResult EditPlayers(string rosterId, RosterPlayersViewModel vm) { if (ModelState.IsValid == false) { return(EditPlayers(rosterId)); } Roster roster = DocumentSession.Load <Roster>(rosterId); if (roster == null) { throw new HttpException(404, "Roster not found"); } var update = new Roster.Update( Roster.ChangeType.EditPlayers, User.CustomIdentity.PlayerId ?? User.CustomIdentity.Email) { Preliminary = vm.Preliminary }; List <string> players = null; if (roster.IsFourPlayer) { players = new List <string> { vm.Player1, vm.Player2, vm.Player3, vm.Player4 }; } else { players = new List <string> { vm.Table1Player1, vm.Table1Player2, vm.Table2Player1, vm.Table2Player2, vm.Table3Player1, vm.Table3Player2, vm.Table4Player1, vm.Table4Player2 }; } if (vm.Reserve1 != null && DocumentSession.Load <Player>(vm.Reserve1) != null) { players.Add(vm.Reserve1); if (vm.Reserve2 != null && DocumentSession.Load <Player>(vm.Reserve2) != null) { players.Add(vm.Reserve2); } } // case where reserve1 is unselected while reserve2 is selected if (vm.Reserve2 != null && players.Find(x => x == vm.Reserve2) == null && DocumentSession.Load <Player>(vm.Reserve2) != null) { players.Add(vm.Reserve2); } update.Players = players; if (vm.TeamLeader != null && DocumentSession.Load <Player>(vm.TeamLeader) != null) { update.TeamLeader = vm.TeamLeader; } else { update.TeamLeader = new Some <string>(null); } roster.UpdateWith(Trace.CorrelationManager.ActivityId, update); return(RedirectToAction("View", new { season = roster.Season, turn = roster.Turn })); }
private async Task <IHttpActionResult> Handle(VerifyMatchMessage message) { Roster roster = DocumentSession.Load <Roster>(message.RosterId); if (roster.IsVerified && message.Force == false) { return(Ok()); } WebsiteConfig websiteConfig = DocumentSession.Load <WebsiteConfig>(WebsiteConfig.GlobalId); HeadInfo result = await bitsClient.GetHeadInfo(roster.BitsMatchId); ParseHeaderResult header = BitsParser.ParseHeader(result, websiteConfig.ClubId); // chance to update roster values var update = new Roster.Update( Roster.ChangeType.VerifyMatchMessage, "system") { OilPattern = header.OilPattern, Date = header.Date, Opponent = header.Opponent, Location = header.Location }; if (roster.MatchResultId != null) { // update match result values BitsMatchResult bitsMatchResult = await bitsClient.GetBitsMatchResult(roster.BitsMatchId); Player[] players = DocumentSession.Query <Player, PlayerSearch>() .ToArray() .Where(x => x.PlayerItem?.LicNbr != null) .ToArray(); var parser = new BitsParser(players); if (roster.IsFourPlayer) { MatchResult4 matchResult = EventStoreSession.Load <MatchResult4>(roster.MatchResultId); Parse4Result parseResult = parser.Parse4(bitsMatchResult, websiteConfig.ClubId); update.Players = GetPlayerIds(parseResult); bool isVerified = matchResult.Update( PublishMessage, roster, parseResult.TeamScore, parseResult.OpponentScore, roster.BitsMatchId, parseResult.CreateMatchSeries(), players); update.IsVerified = isVerified; } else { MatchResult matchResult = EventStoreSession.Load <MatchResult>(roster.MatchResultId); ParseResult parseResult = parser.Parse(bitsMatchResult, websiteConfig.ClubId); update.Players = GetPlayerIds(parseResult); var resultsForPlayer = DocumentSession.Query <ResultForPlayerIndex.Result, ResultForPlayerIndex>() .Where(x => x.Season == roster.Season) .ToArray() .ToDictionary(x => x.PlayerId); MatchSerie[] matchSeries = parseResult.CreateMatchSeries(); bool isVerified = matchResult.Update( PublishMessage, roster, parseResult.TeamScore, parseResult.OpponentScore, matchSeries, parseResult.OpponentSeries, players, resultsForPlayer); update.IsVerified = isVerified; } } roster.UpdateWith(Trace.CorrelationManager.ActivityId, update); return(Ok()); }