private void UpdateMatchFromViewModel(UpdateMatchViewModel viewModel, Match match, User player1, User player2)
        {
            if (match.IsComplete) {
            var results = match.Results.ToList();
            foreach (var result in results) {
              repository.Delete(result);
            }
            match.Results.Clear();
              }
              match.Winner = viewModel.Winner == player1.Id ? player1 : player2;
              match.IsComplete = true;
              match.IsForfeit = viewModel.IsForfeit;

              if (!match.IsForfeit) {
            match.DatePlayed = DateTime.Parse(viewModel.Date + " " + viewModel.Time);
            var matchResult = new MatchResult(player1,
              viewModel.Player1Innings,
              viewModel.Player1DefensiveShots,
              viewModel.Player1Wins);
            match.AddResult(matchResult);

            matchResult = new MatchResult(player2,
              viewModel.Player2Innings,
              viewModel.Player2DefensiveShots,
              viewModel.Player2Wins);
            match.AddResult(matchResult);
              }
              // set meet to complete if all matches are complete
              var meet = match.Meet;
              meet.IsComplete = !meet.Matches.Where(m => !m.IsComplete).Any();
              // must do this because EF is stupid
              var d = meet.Division;
        }
Example #2
0
 public virtual void AddMatch(Match match)
 {
     var allTeamPlayers = (from team in Teams
                     from player in team.Players
                     select player).ToList();
       if (match.Players.Where(p => !allTeamPlayers.Contains(p.Player)).Any()) {
     throw new ArgumentException("all players in match must be members of the meet's teams", "match");
       }
       if (!Matches.Contains(match)) {
     match.Meet = this;
     Matches.Add(match);
       }
 }
Example #3
0
        private MatchPlayerViewModel CreateMatchPlayerViewModel(User player, Match match)
        {
            var model = new MatchPlayerViewModel();
              model.Id = player.Id;
              model.Name = player.FullName;

              var slQuery = player.SkillLevels.Where(sl => sl.GameType == match.Meet.Division.Season.GameType);
              if (slQuery.Any()) {
            model.SkillLevel = slQuery.First().Value;
              }
              else {
            model.SkillLevel = 0;
              }

              // initialize my results, if this match is complete
              if (match.IsComplete) {
            model.Winner = match.Winner == player;
            if (!match.IsForfeit) {
              var result = match.Results.Where(r => r.Player == player).First();
              model.Innings = result.Innings.ToString();
              model.DefensiveShots = result.DefensiveShots.ToString();
              model.Wins = result.Wins.ToString();
            }
              }

              // calculate my season record & win percentage
              var completedMatches = from meet in match.Meet.Division.Meets
                             where meet.IsComplete
                             from ma in meet.Matches
                             where ma.Players.Where(p => p.Player == player).Any()
                             select ma;

              int wins = 0;
              int losses = 0;
              double winPercentage = 0;

              foreach (var completedMatch in completedMatches) {
            if (completedMatch.Winner == player) {
              wins++;
            }
            else {
              losses++;
            }
              }
              if (wins + losses > 0) {
            winPercentage = (double)wins / (double)(wins + losses);
              }
              model.Record = string.Format("{0} - {1} ({2})", wins, losses, winPercentage.ToString(".00"));
              return model;
        }
Example #4
0
 private LastMatchViewModel CreateLastMatchViewModel(Match match)
 {
     var model = new LastMatchViewModel();
       if (!match.IsForfeit) {
     var results = new List<MatchResultViewModel>();
     foreach (var result in match.Results) {
       var resultvm = new MatchResultViewModel(result);
       resultvm.Winner = match.Winner == result.Player;
       results.Add(resultvm);
     }
     model.Results = results;
       }
       else {
     // this match was a forfeit, create results to display
     var results = new List<MatchResultViewModel>();
     foreach (var matchPlayer in match.Players) {
       var result = new MatchResultViewModel();
       result.Player = matchPlayer.Player.FullName;
       result.Winner = match.Winner == matchPlayer.Player;
       results.Add(result);
     }
     model.Results = results;
       }
       return model;
 }
Example #5
0
 private MatchViewModel CreateMatchViewModel(Match match)
 {
     var model = new MatchViewModel();
       model.Id = match.Id;
       model.IsComplete = match.IsComplete;
       model.IsForfeit = match.IsForfeit;
       var players = match.Players.ToArray();
       model.Player1 = CreateMatchPlayerViewModel(players[0].Player, match);
       model.Player2 = CreateMatchPlayerViewModel(players[1].Player, match);
       if (match.IsComplete) {
     if (!match.IsForfeit) {
       model.DatePlayed = match.DatePlayed.Value.ToShortDateString();
       model.TimePlayed = match.DatePlayed.Value.ToShortTimeString();
       model.Status = string.Format("Played on {0} {1}", model.DatePlayed, model.TimePlayed);
     }
     else {
       model.Status = "Forfeited";
     }
       }
       else {
     model.Status = "Incomplete";
       }
       return model;
 }
        private UpdateMatchResponseViewModel VerifyUserCanUpdateMatch(Match match, User player1, User player2)
        {
            // authorize only admins, officers, and players involved in this meet
              var currentPrincipal = authService.GetCurrentPrincipal();
              var loggedInUser = repository.All<User>().Single(u => u.Username.Equals(currentPrincipal.Identity.Name));
              if (!match.Meet.UserCanEnterMatchResults(loggedInUser)) {
            return new UpdateMatchResponseViewModel(false, "You do not have permission to enter results for this match");
              }

              if (null == player1 || !match.Players.Where(p => p.Player == player1).Any()) {
            return new UpdateMatchResponseViewModel(false, "Player 1 is not a valid player for this match");
              }
              if (null == player2 || !match.Players.Where(p => p.Player == player2).Any()) {
            return new UpdateMatchResponseViewModel(false, "Player 2 is not a valid player for this match");
              }

              return null;
        }
Example #7
0
 public virtual void RemoveMatch(Match match)
 {
     if (Matches.Contains(match)) {
     Matches.Remove(match);
     match.Meet = null;
       }
 }
        private ScoresheetMatchViewModel CreateScoresheetMatchViewModel(Match match)
        {
            var model = new ScoresheetMatchViewModel();
              model.Id = match.Id;
              var gameType = match.Meet.Division.Season.GameType;
              var players = match.Players.ToArray();
              model.Player1 = CreatePlayerViewModel(players[0].Player, gameType);
              model.Player2 = CreatePlayerViewModel(players[1].Player, gameType);

              model.Player1.GamesToWin = CalculateGamesToWin(model.Player1.SkillLevel, model.Player2.SkillLevel);
              model.Player2.GamesToWin = CalculateGamesToWin(model.Player2.SkillLevel, model.Player1.SkillLevel);
              return model;
        }