/// <summary> /// Asynchronously builds a name of the associated instance /// </summary> /// <param name="culture">The culture information.</param> /// <returns>A <see cref="Task{String}" /> representing the asynchronous operation</returns> /// <exception cref="NameExpressionException">Error occurred while evaluating name expression</exception> public async Task <string> BuildNameAsync(CultureInfo culture) { if (_propertyName.Equals("event")) { if (_sportEvent is IMatch || _sportEvent is ISoccerEvent) { var homeCompetitor = await GetHomeCompetitor(culture).ConfigureAwait(false); var awayCompetitor = await GetAwayCompetitor(culture).ConfigureAwait(false); return($"{homeCompetitor} vs {awayCompetitor}"); } return(await _sportEvent.GetNameAsync(culture).ConfigureAwait(false)); } switch (Array.IndexOf(SupportedOperands, _propertyName)) { case 0: return(await GetHomeCompetitor(culture).ConfigureAwait(false)); case 1: return(await GetAwayCompetitor(culture).ConfigureAwait(false)); default: throw new NameExpressionException($"Operand {_propertyName} is not supported. Supported operands are: {string.Join(", ", SupportedOperands)}", null); } }
/// <summary> /// Adds the info about the passed <see cref="ISportEvent"/> to the provided <see cref="StringBuilder"/> /// </summary> /// <param name="sportEvent">The <see cref="ISportEvent"/> containing data to display</param> /// <param name="builder">The <see cref="StringBuilder"/> to which to add the data</param> private void AddEntityData(ISportEvent sportEvent, StringBuilder builder) { Guard.Argument(sportEvent, nameof(sportEvent)).NotNull(); Guard.Argument(builder, nameof(builder)).NotNull(); var scheduled = _taskProcessor.GetTaskResult(sportEvent.GetScheduledTimeAsync()); var scheduledEnd = _taskProcessor.GetTaskResult(sportEvent.GetScheduledEndTimeAsync()); var name = _taskProcessor.GetTaskResult(sportEvent.GetNameAsync(_culture)); var sportId = _taskProcessor.GetTaskResult(sportEvent.GetSportIdAsync()); builder.Append("Id=").Append(sportEvent.Id); builder.Append(" Name=").Append(name); builder.Append(" SportId=").Append(sportId); builder.Append(" Scheduled=").Append(scheduled?.ToShortDateString() ?? "null"); builder.Append(" ScheduledEnd=").Append(scheduledEnd?.ToShortDateString() ?? "null"); }
/// <summary> /// Adds the info about the passed <see cref="ISportEvent"/> to the provided <see cref="StringBuilder"/> /// </summary> /// <param name="sportEvent">The <see cref="ISportEvent"/> containing data to display</param> /// <param name="builder">The <see cref="StringBuilder"/> to which to add the data</param> private void AddEntityData(ISportEvent sportEvent, StringBuilder builder) { Contract.Requires(sportEvent != null); Contract.Requires(builder != null); var scheduled = _taskProcessor.GetTaskResult(sportEvent.GetScheduledTimeAsync()); var scheduledEnd = _taskProcessor.GetTaskResult(sportEvent.GetScheduledEndTimeAsync()); var name = _taskProcessor.GetTaskResult(sportEvent.GetNameAsync(_culture)); var sportId = _taskProcessor.GetTaskResult(sportEvent.GetSportIdAsync()); builder.Append("Id=").Append(sportEvent.Id); builder.Append(" Name=").Append(name); builder.Append(" SportId=").Append(sportId); builder.Append(" Scheduled=").Append(scheduled?.ToShortDateString() ?? "null"); builder.Append(" ScheduledEnd=").Append(scheduledEnd?.ToShortDateString() ?? "null"); }