Example #1
0
        async public static Task <PostResponse> Post(string url, Summaries summaries)
        {
            PostResponse result = null;

            try
            {
                using (HttpClient client = new HttpClient())
                {
                    using (var responseMessage = await client.PostAsJsonAsync(url, summaries))
                    {
                        result = new PostResponse {
                            httpResponse = responseMessage
                        };
                        using (var content = responseMessage.Content)
                        {
                            var response = await content.ReadAsAsync <Response>();

                            result.contentResponse = response;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var baseException = ex.GetBaseException();
                Console.WriteLine($"{baseException.GetType()}:\n\t{baseException.Message}" +
                                  $"\n\tat\n\t{baseException.StackTrace}");
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Algorithm for calculating of scoring points after the traditional scoring system.
        /// Return null in case of any exception
        /// </summary>
        /// <param name="scores"></param>
        /// <returns></returns>
        public static Summaries GetSummaries(Scores scores, List <IFrameScore> frameScores = null)
        {
            int total  = Math.Min(scores.Points.Count, MaxFrame);
            var result = new Summaries {
                Token  = scores.Token,
                Points = new int[total]
            };

            try
            {
                var sum       = 0;
                var lastIndex = total - 1;
                for (int i = 0; i <= lastIndex; i++)
                {
                    var score = new FrameScore(scores.Points.ElementAt(i), i);
                    if (score != null)
                    {
                        if (frameScores != null)
                        {
                            frameScores.Add(score);
                        }
                        sum += score.Total;

                        //Calculate Bonus if the current score is not the last one
                        //either for strike or spare in a traditional bowling
                        //See eventually at https://en.wikipedia.org/wiki/Ten-pin_bowling#Traditional_scoring
                        if (i < scores.Points.Count - 1 &&
                            score.Total == 10)
                        {
                            var bonusPoints = Scores.GetBonusPointsAtIndex(i, scores);
                            sum += FrameScore.TraditionalBonus(score, bonusPoints);
                            if (i == 9)
                            {
                                score.Points.AddRange(bonusPoints);
                            }
                        }
                    }

                    result.Points[i] = sum;
                }

                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(null);
        }
Example #3
0
 public ScoreView(List <IFrameScore> frameScores, Scores scores, Summaries summaries, PostResponse responseMessage)
 {
     Bowler = $"{JsonConvert.SerializeObject(scores.Token)}" +
              $"{Environment.NewLine}{JsonConvert.SerializeObject(scores.Points)}";
     if (frameScores.Count > 0)
     {
         FrameView_01 = new FrameView(frameScores, summaries, 0);
     }
     if (frameScores.Count > 1)
     {
         FrameView_02 = new FrameView(frameScores, summaries, 1);
     }
     if (frameScores.Count > 2)
     {
         FrameView_03 = new FrameView(frameScores, summaries, 2);
     }
     if (frameScores.Count > 3)
     {
         FrameView_04 = new FrameView(frameScores, summaries, 3);
     }
     if (frameScores.Count > 4)
     {
         FrameView_05 = new FrameView(frameScores, summaries, 4);
     }
     if (frameScores.Count > 5)
     {
         FrameView_06 = new FrameView(frameScores, summaries, 5);
     }
     if (frameScores.Count > 6)
     {
         FrameView_07 = new FrameView(frameScores, summaries, 6);
     }
     if (frameScores.Count > 7)
     {
         FrameView_08 = new FrameView(frameScores, summaries, 7);
     }
     if (frameScores.Count > 8)
     {
         FrameView_09 = new FrameView(frameScores, summaries, 8);
     }
     if (frameScores.Count > 9)
     {
         FrameView_10 = new FrameView(frameScores, summaries, 9);
     }
     Total   = summaries.Points.Last();
     Comment = $"{JsonConvert.SerializeObject(summaries.Points)}{Environment.NewLine}" +
               $"{responseMessage}";
 }
Example #4
0
        private static ScoreView MapToViews(List <IFrameScore> frameScores, Scores scores, Summaries summaries, PostResponse responseMessage)
        {
            if (frameScores == null ||
                summaries == null)
            {
                return(null);
            }
            ScoreView scoreView = new ScoreView(frameScores, scores, summaries, responseMessage);

            return(scoreView);
        }
Example #5
0
        }                                  //Frame's Summary point

        public FrameView(List <IFrameScore> frames, Summaries summaries, int index)
        {
            frameScore = index < frames.Count ? frames[index] : null;
            Score      = index < summaries.Points.Length ? summaries.Points[index] : 0;
        }