コード例 #1
0
        public void AddScore(Card card, CardPlayerScore score)
        {
            if (score == null ||
                score.HoleNumber <= 0 ||
                score.HoleNumber > card.CourseData.Holes.Count() ||
                score.CardPlayer.Id.Equals(Guid.Empty) ||
                score.Score <= 0)
            {
                return;
            }

            CalculatePoints(card, score);

            var existing = card.CardPlayers.FirstOrDefault(x => x.Id.Equals(score.CardPlayer.Id)).CardPlayerScores.SingleOrDefault(x => x.HoleNumber == score.HoleNumber);

            if (existing != null)
            {
                existing.Score  = score.Score;
                existing.Points = score.Points;
            }
            else
            {
                card.CardPlayers.FirstOrDefault(x => x.Id.Equals(score.CardPlayer.Id)).CardPlayerScores.Add(score);
            }
        }
コード例 #2
0
        private void CalculatePoints(Card card, CardPlayerScore score)
        {
            var hole         = card.CourseData.Holes.SingleOrDefault(x => x.Number == score.HoleNumber);
            var playerScore  = card.CardPlayers.SingleOrDefault(x => x.Id.Equals(score.CardPlayer.Id));
            var extraStrokes = CalculateExtraStrokes(playerScore.RoundHandicap, hole.Index);

            var points = 2 + (hole.Par + extraStrokes - score.Score);

            score.Points = points > 0 ? points : 0;
        }