/// <summary> /// Writes the data of the provided <see cref="IStage"/> to the <see cref="StringBuilder"/> /// </summary> /// <param name="stage">The <see cref="IStage"/> whose data is to be written</param> /// <returns>A <see cref="StringBuilder"/> containing string representation of the provided stage</returns> private StringBuilder WriteStageData(IStage stage) { Contract.Requires(stage != null); Contract.Ensures(Contract.Result <StringBuilder>() != null); var builder = new StringBuilder(); AddSportEventData(stage, builder); var competitors = _taskProcessor.GetTaskResult(stage.GetCompetitorsAsync()); var competitorsStr = competitors == null ? "null" : string.Join(",", competitors.Select(s => s.Id)); var parent = _taskProcessor.GetTaskResult(stage.GetParentStageAsync()); var stages = _taskProcessor.GetTaskResult(stage.GetStagesAsync()); var category = _taskProcessor.GetTaskResult(stage.GetCategoryAsync()); var sport = _taskProcessor.GetTaskResult(stage.GetSportAsync()); var competitionStatus = _taskProcessor.GetTaskResult(stage.GetStatusAsync()); var eventResults = string.Empty; var eventStatus = string.Empty; if (competitionStatus != null) { eventStatus = competitionStatus.Status.ToString(); if (competitionStatus.EventResults != null && competitionStatus.EventResults.Any()) { eventResults = string.Join(",", competitionStatus.EventResults.Select(s => $"E{s.Id}={s.HomeScore}:{s.AwayScore};{s.MatchStatus}/{s.Status}")); var eventResultMatchStatus = _taskProcessor.GetTaskResult(competitionStatus.EventResults.First().GetMatchStatusAsync(_culture)); var x = eventResultMatchStatus?.Id; } } builder.Append(" Competitors=").Append(competitorsStr) .Append(" Parent=").Append(parent?.Id.ToString() ?? "null") .Append(" Stages=").Append(stages?.Count().ToString() ?? "null") .Append(" Sport=").Append(sport?.Id) .Append(" Category=").Append(category?.Id) .Append(" EventStatus=").Append(eventStatus) .Append(" EventResults=[").Append(eventResults).Append("]"); return(builder); }