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); }
/// <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); }
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}"; }
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); }
} //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; }