/// <summary> /// Initializes a new instance of the <see cref="CompetitionDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> instance containing basic information about the sport event</param> internal CompetitionDTO(sportEvent sportEvent) : base(sportEvent) { BookingStatus?bookingStatus; if (RestMapperHelper.TryGetBookingStatus(sportEvent.liveodds, out bookingStatus)) { BookingStatus = bookingStatus; } if (sportEvent.competitors != null && sportEvent.competitors.Any()) { Competitors = new ReadOnlyCollection <TeamCompetitorDTO>(sportEvent.competitors.Select(c => new TeamCompetitorDTO(c)).ToList()); HomeAwayCompetitors = RestMapperHelper.FillHomeAwayCompetitors(sportEvent.competitors); } Conditions = sportEvent.sport_event_conditions == null ? null : new SportEventConditionsDTO(sportEvent.sport_event_conditions); Venue = sportEvent.sport_event_conditions?.venue == null ? null : new VenueDTO(sportEvent.sport_event_conditions.venue); if (Venue == null && sportEvent.venue != null) { Venue = new VenueDTO(sportEvent.venue); } }
/// <summary> /// Initializes a new instance of the <see cref="SportEventSummaryDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> containing basic information about the event</param> internal SportEventSummaryDTO(sportEvent sportEvent) { Guard.Argument(sportEvent, nameof(sportEvent)).NotNull(); Guard.Argument(sportEvent.id, nameof(sportEvent.id)).NotNull().NotEmpty(); Id = URN.Parse(sportEvent.id); Scheduled = sportEvent.scheduledSpecified ? (DateTime?)sportEvent.scheduled.ToLocalTime() : null; ScheduledEnd = sportEvent.scheduled_endSpecified ? (DateTime?)sportEvent.scheduled_end.ToLocalTime() : null; if (sportEvent.tournament?.sport != null) { if (URN.TryParse(sportEvent.tournament.sport.id, out var sportId)) { SportId = sportId; } } Name = sportEvent.name; if (!string.IsNullOrEmpty(sportEvent.replaced_by)) { if (URN.TryParse(sportEvent.replaced_by, out var replacedBy)) { ReplacedBy = replacedBy; } } StartTimeTbd = sportEvent.start_time_tbdSpecified ? (bool?)sportEvent.start_time_tbd : null; StatusOnEvent = sportEvent.status; }
/// <summary> /// Initializes a new instance of the <see cref="BasicTournamentDTO"/> class. /// </summary> /// <param name="sportEvent">The <see cref="sportEvent"/> used for creating instance</param> internal BasicTournamentDTO(sportEvent sportEvent) : base(sportEvent) { Guard.Argument(sportEvent, nameof(sportEvent)).NotNull(); TournamentCoverage = null; Category = sportEvent.tournament.category == null ? null : URN.Parse(sportEvent.tournament.category.id); Competitors = sportEvent.competitors.Select(s => new CompetitorDTO(s)); }
/// <summary> /// Initializes a new instance of the <see cref="BasicTournamentDTO"/> class. /// </summary> /// <param name="sportEvent">The <see cref="sportEvent"/> used for creating instance</param> internal BasicTournamentDTO(sportEvent sportEvent) : base(sportEvent) { Contract.Requires(sportEvent != null); TournamentCoverage = null; Category = sportEvent.tournament.category == null ? null : URN.Parse(sportEvent.tournament.category.id); Competitors = sportEvent.competitors.Select(s => new CompetitorDTO(s)); }
/// <summary> /// Initializes a new instance of the <see cref="StageDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> containing basic information about the event</param> internal StageDTO(sportEvent sportEvent) : base(sportEvent) { if (sportEvent.parent != null) { ParentStage = new StageDTO(sportEvent.parent); } if (sportEvent.races != null && sportEvent.races.Any()) { Stages = sportEvent.races.Select(s => new StageDTO(s)); } if (sportEvent.tournament != null) { Tournament = new TournamentDTO(sportEvent.tournament); } }
/// <summary> /// Maps the <see cref="sportEvent"/> instance to the one of the derived types of <see cref="SportEventSummaryDTO"/> /// </summary> /// <param name="item">The item to be mapped</param> /// <returns>A <see cref="SportEventSummaryDTO"/> derived instance</returns> /// <exception cref="ArgumentException">id</exception> public static SportEventSummaryDTO MapSportEvent(sportEvent item) { if (item == null) { return(null); } var id = URN.Parse(item.id); //var sportId = URN.Parse("sr:sport:0"); //if (item.tournament?.sport != null) //{ // sportId = URN.Parse(item.tournament.sport.id); //} switch (id.TypeGroup) { case ResourceTypeGroup.MATCH: { return(new MatchDTO(item)); } case ResourceTypeGroup.STAGE: { return(new StageDTO(item)); } case ResourceTypeGroup.BASIC_TOURNAMENT: { return(new BasicTournamentDTO(item)); } case ResourceTypeGroup.TOURNAMENT: case ResourceTypeGroup.SEASON: { return(new TournamentInfoDTO(item)); } case ResourceTypeGroup.UNKNOWN: { return(new SportEventSummaryDTO(item)); } default: throw new ArgumentException($"ResourceTypeGroup: {id.TypeGroup} is not supported", nameof(id)); } }
/// <summary> /// Initializes a new instance of the <see cref="StageDTO" /> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent" /> containing basic information about the event</param> internal StageDTO(sportEvent sportEvent) : base(sportEvent) { if (sportEvent.parent != null) { ParentStage = new StageDTO(sportEvent.parent); } if (sportEvent.races != null && sportEvent.races.Any()) { Stages = sportEvent.races.Select(s => new StageDTO(s)); } if (sportEvent.tournament != null) { Contract.Assume(!string.IsNullOrEmpty(sportEvent.tournament.id)); Contract.Assume(!string.IsNullOrEmpty(sportEvent.tournament.name)); Tournament = new TournamentDTO(sportEvent.tournament); } }
/// <summary> /// Initializes a new instance of the <see cref="CompetitionDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> instance containing basic information about the sport event</param> internal CompetitionDTO(sportEvent sportEvent) : base(sportEvent) { if (RestMapperHelper.TryGetBookingStatus(sportEvent.liveodds, out var bookingStatus)) { BookingStatus = bookingStatus; } if (sportEvent.competitors != null && sportEvent.competitors.Any()) { Competitors = new ReadOnlyCollection <TeamCompetitorDTO>(sportEvent.competitors.Select(c => new TeamCompetitorDTO(c)).ToList()); HomeAwayCompetitors = RestMapperHelper.FillHomeAwayCompetitors(sportEvent.competitors); } Conditions = sportEvent.sport_event_conditions == null ? null : new SportEventConditionsDTO(sportEvent.sport_event_conditions); Venue = sportEvent.sport_event_conditions?.venue == null ? null : new VenueDTO(sportEvent.sport_event_conditions.venue); if (Venue == null && sportEvent.venue != null) { Venue = new VenueDTO(sportEvent.venue); } if (RestMapperHelper.TryGetSportEventType(sportEvent.type, out var type)) { Type = type; } if (!string.IsNullOrEmpty(sportEvent.liveodds)) { LiveOdds = sportEvent.liveodds; } if (RestMapperHelper.TryGetStageType(sportEvent.stage_type, out var stageType)) { StageType = stageType; } }
/// <summary> /// Initializes a new instance of the <see cref="TournamentInfoDTO" /> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent" /> containing basic tournament info</param> internal TournamentInfoDTO(sportEvent sportEvent) : base(sportEvent) { TournamentCoverage = null; Category = sportEvent.tournament.category == null ? null : new CategorySummaryDTO(sportEvent.tournament.category); Sport = sportEvent.tournament.sport == null ? null : new SportEntityDTO(sportEvent.tournament.sport.id, sportEvent.tournament.sport.name); Competitors = sportEvent.competitors == null ? null : new ReadOnlyCollection <CompetitorDTO>(sportEvent.competitors.Select(c => new CompetitorDTO(c)) .ToList()); CurrentSeason = null; Season = sportEvent.season == null ? null : new CurrentSeasonInfoDTO(sportEvent.season); SeasonCoverage = null; Groups = null; Schedule = null; CurrentRound = sportEvent.tournament_round == null ? null : new RoundDTO(sportEvent.tournament_round); Year = null; TournamentInfo = sportEvent.tournament == null ? null : new TournamentInfoDTO(sportEvent.tournament); //TODO: missing year }
public static matchSummaryEndpoint GetMatchSummaryEndpoint(int id = 0, int subItemCount = 2) { var sportEvent = new sportEvent { competitors = GetTeamCompetitorList(subItemCount).ToArray(), id = id == 0 ? SR.Urn("match", 10000).ToString() : SR.Urn(id, "match").ToString(), liveodds = "booked", scheduledSpecified = true, scheduled = new DateTime(2017, 2, 17), scheduled_endSpecified = true, scheduled_end = new DateTime(2017, 2, 18) }; return(new matchSummaryEndpoint { coverage_info = GetCoverageInfo(subItemCount), sport_event = sportEvent, sport_event_conditions = GetSportEventConditions() }); }
/// <summary> /// Initializes a new instance of the <see cref="MatchDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> instance containing basic information about the sport event</param> internal MatchDTO(sportEvent sportEvent) : base(sportEvent) { Guard.Argument(sportEvent, nameof(sportEvent)).NotNull(); if (sportEvent.season != null) { Season = new SeasonDTO(sportEvent.season); } if (sportEvent.tournament_round != null) { Round = new RoundDTO(sportEvent.tournament_round); } if (sportEvent.tournament != null) { Guard.Argument(sportEvent.tournament.id, nameof(sportEvent.tournament.id)).NotNull().NotEmpty(); Guard.Argument(sportEvent.tournament.name, nameof(sportEvent.tournament.name)).NotNull().NotEmpty(); Tournament = new TournamentDTO(sportEvent.tournament); } }
/// <summary> /// Initializes a new instance of the <see cref="SportEventSummaryDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> containing basic information about the event</param> internal SportEventSummaryDTO(sportEvent sportEvent) { Guard.Argument(sportEvent, nameof(sportEvent)).NotNull(); Guard.Argument(sportEvent.id, nameof(sportEvent.id)).NotNull().NotEmpty(); Id = URN.Parse(sportEvent.id); Scheduled = sportEvent.scheduledSpecified ? (DateTime?)sportEvent.scheduled.ToLocalTime() : null; ScheduledEnd = sportEvent.scheduled_endSpecified ? (DateTime?)sportEvent.scheduled_end.ToLocalTime() : null; if (sportEvent.tournament?.sport != null) { URN sportId; if (URN.TryParse(sportEvent.tournament.sport.id, out sportId)) { SportId = sportId; } } Name = sportEvent.name; SportEventType?type; if (RestMapperHelper.TryGetSportEventType(sportEvent.type, out type)) { Type = type; } if (!string.IsNullOrEmpty(sportEvent.replaced_by)) { URN replacedBy; if (URN.TryParse(sportEvent.replaced_by, out replacedBy)) { ReplacedBy = replacedBy; } } StartTimeTbd = sportEvent.start_time_tbdSpecified ? (bool?)sportEvent.start_time_tbd : null; StatusOnEvent = sportEvent.status; LiveOdds = sportEvent.liveodds; }
/// <summary> /// Initializes a new instance of the <see cref="MatchDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> instance containing basic information about the sport event</param> internal MatchDTO(sportEvent sportEvent) : base(sportEvent) { Contract.Requires(sportEvent != null); if (sportEvent.season != null) { Contract.Assume(!string.IsNullOrEmpty(sportEvent.season.id)); Contract.Assume(!string.IsNullOrEmpty(sportEvent.season.name)); Season = new SportEntityDTO(sportEvent.season.id, sportEvent.season.name); } if (sportEvent.tournament_round != null) { Round = new RoundDTO(sportEvent.tournament_round); } if (sportEvent.tournament != null) { Contract.Assume(!string.IsNullOrEmpty(sportEvent.tournament.id)); Contract.Assume(!string.IsNullOrEmpty(sportEvent.tournament.name)); Tournament = new TournamentDTO(sportEvent.tournament); } }
/// <summary> /// Initializes a new instance of the <see cref="SportEventSummaryDTO" /> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent" /> containing basic information about the event</param> internal SportEventSummaryDTO(sportEvent sportEvent) { Contract.Requires(sportEvent != null); Contract.Requires(!string.IsNullOrEmpty(sportEvent.id)); Id = URN.Parse(sportEvent.id); Scheduled = sportEvent.scheduledSpecified ? (DateTime?)sportEvent.scheduled : null; ScheduledEnd = sportEvent.scheduled_endSpecified ? (DateTime?)sportEvent.scheduled_end : null; if (sportEvent.tournament?.sport != null) { URN sportId; if (URN.TryParse(sportEvent.tournament.sport.id, out sportId)) { SportId = sportId; } } Name = sportEvent.name; SportEventType?type; if (RestMapperHelper.TryGetSportEventType(sportEvent.type, out type)) { Type = type; } if (!string.IsNullOrEmpty(sportEvent.replaced_by)) { URN replacedBy; if (URN.TryParse(sportEvent.replaced_by, out replacedBy)) { ReplacedBy = replacedBy; } } StartTimeTbd = sportEvent.start_time_tbdSpecified ? (bool?)sportEvent.start_time_tbd : null; }
/// <summary> /// Initializes a new instance of the <see cref="StageDTO"/> class /// </summary> /// <param name="sportEvent">A <see cref="sportEvent"/> containing basic information about the event</param> internal StageDTO(sportEvent sportEvent) : base(sportEvent) { if (sportEvent.races != null && sportEvent.races.Any()) { Stages = sportEvent.races.Select(s => new StageDTO(s)); } if (sportEvent.tournament != null) { Tournament = new TournamentDTO(sportEvent.tournament); } if (sportEvent.parent != null) { ParentStage = new StageDTO(sportEvent.parent); } if (ParentStage == null && Type != null && Type == SportEventType.Parent && sportEvent.tournament != null) { ParentStage = new StageDTO(new TournamentDTO(sportEvent.tournament)); } if (!sportEvent.additional_parents.IsNullOrEmpty()) { AdditionalParents = sportEvent.additional_parents.Select(s => new StageDTO(s)); } }
/// <summary> /// Initializes a new instance of the <see cref="TournamentInfoDTO"/> class /// </summary> /// <param name="tournament">A <see cref="tournament"/> containing detailed tournament info</param> internal TournamentInfoDTO(tournamentInfoEndpoint tournament) : base(new sportEvent { id = tournament.tournament.id, name = tournament.tournament.name, scheduledSpecified = IsTournamentScheduleSpecified(tournament.tournament, true) || tournament.tournament.current_season != null, scheduled = GetExtendedTournamentSchedule(tournament.tournament, true), scheduled_endSpecified = IsTournamentScheduleSpecified(tournament.tournament, false) || tournament.tournament.current_season != null, scheduled_end = GetExtendedTournamentSchedule(tournament.tournament, false), tournament = tournament.tournament }) { TournamentCoverage = tournament.coverage_info == null ? null : new TournamentCoverageDTO(tournament.coverage_info); Category = tournament.tournament.category == null ? null : new CategorySummaryDTO(tournament.tournament.category); Sport = tournament.tournament.sport == null ? null : new SportEntityDTO(tournament.tournament.sport.id, tournament.tournament.sport.name); Competitors = tournament.competitors != null ? new ReadOnlyCollection <CompetitorDTO>(tournament.competitors.Select(c => new CompetitorDTO(c)).ToList()) : tournament.tournament?.competitors == null // used for stage events ? null : new ReadOnlyCollection <CompetitorDTO>(tournament.tournament.competitors.Select(c => new CompetitorDTO(c)).ToList()); CurrentSeason = tournament.tournament.current_season == null ? null : new CurrentSeasonInfoDTO(tournament.tournament.current_season); Season = tournament.season == null ? null : new CurrentSeasonInfoDTO(tournament.season); SeasonCoverage = tournament.season_coverage_info == null ? null : new SeasonCoverageDTO(tournament.season_coverage_info); Groups = tournament.groups == null ? null : new ReadOnlyCollection <GroupDTO>(tournament.groups.Select(g => new GroupDTO(g)).ToList()); Schedule = null; CurrentRound = tournament.round == null ? null : new RoundDTO(tournament.round); Year = tournament.tournament?.current_season == null ? tournament.season?.year : tournament.tournament.current_season.year; TournamentInfo = null; if (tournament.tournament?.category != null) { var sportEvent = new sportEvent { id = tournament.tournament.id, name = tournament.tournament.name, scheduledSpecified = IsTournamentScheduleSpecified(tournament.tournament, true) || tournament.tournament.current_season != null, scheduled = GetExtendedTournamentSchedule(tournament.tournament, true), scheduled_endSpecified = IsTournamentScheduleSpecified(tournament.tournament, false) || tournament.tournament.current_season != null, scheduled_end = GetExtendedTournamentSchedule(tournament.tournament, false), tournament = tournament.tournament }; TournamentInfo = new TournamentInfoDTO(sportEvent) { Category = new CategorySummaryDTO(tournament.tournament.category.id, tournament.tournament.category.name, tournament.tournament.category.country_code), CurrentSeason = tournament.tournament.current_season == null ? null : new CurrentSeasonInfoDTO(tournament.tournament.current_season) }; } GeneratedAt = tournament.generated_atSpecified ? tournament.generated_at : (DateTime?)null; ExhibitionGames = tournament.tournament.exhibition_gamesSpecified ? tournament.tournament.exhibition_games : (bool?)null; }