/// <summary> /// Initializes a new instance of the <see cref="MarketWithOdds"/> class /// </summary> /// <param name="id">a <see cref="int"/> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}"/> containing market specifiers.</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}"/> containing additional market info.</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s) </param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapped ids of markets and outcomes</param> /// <param name="status">a <see cref="MarketStatus"/> enum member specifying the status of the market associated with the current <see cref="IMarketWithOdds"/> instance</param> /// <param name="cashoutStatus">A <see cref="CashoutStatus"/> to be set</param> /// <param name="isFavorite">Gets a value indicating whether the market associated with the current <see cref="IMarketWithOdds"/> instance is the most /// balanced market.</param> /// <param name="outcomeOdds">a <see cref="IEnumerable{IOutcomeOdds}"/> where each <see cref="IOutcomeOdds"/> instance specifies the odds /// for one outcome associated with the current <see cref="IMarketWithOdds"/> instance</param> /// <param name="marketMetadata">A <see cref="IMarketMetadata"/> to be set</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal MarketWithOdds(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, MarketStatus status, CashoutStatus?cashoutStatus, bool isFavorite, IEnumerable <IOutcomeOdds> outcomeOdds, IMarketMetadata marketMetadata, IMarketDefinition marketDefinition, IEnumerable <CultureInfo> cultures) : base(id, specifiers, additionalInfo, nameProvider, mappingProvider, marketDefinition, cultures) { Status = status; CashoutStatus = cashoutStatus; if (outcomeOdds != null) { OutcomeOdds = outcomeOdds as ReadOnlyCollection <IOutcomeOdds> ?? new ReadOnlyCollection <IOutcomeOdds>(outcomeOdds.ToList()); } IsFavorite = isFavorite; MarketMetadata = marketMetadata; }
private string WriteMarketDefinition(IMarketDefinition marketDefinition, CultureInfo culture) { if (marketDefinition == null) { return(null); } var attributes = marketDefinition.GetAttributes() == null ? null : marketDefinition.GetAttributes().Aggregate(string.Empty, (current, pair) => current + $"{pair.Key}={pair.Value}|"); return($"OutcomeType: {marketDefinition.GetOutcomeType()}, NameTemplate: {marketDefinition.GetNameTemplate(culture)}, Attributes:[{attributes}], Groups:[{marketDefinition.GetGroups()?.Aggregate(string.Empty, (current, s1) => current + "," + s1)}]"); }
/// <summary> /// Initializes a new instance of the <see cref="MarketWithSettlement" /> class /// </summary> /// <param name="id">a <see cref="int" /> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}" /> containing additional market specifiers</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}"/> containing additional market info</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s)</param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapped ids of markets and outcomes</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="voidReason">A value specifying the void reason or a null reference</param> /// <param name="voidReasonsCache">A <see cref="INamedValueCache"/> used to get void reason descriptions</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal MarketCancel(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, IMarketDefinition marketDefinition, int?voidReason, INamedValueCache voidReasonsCache, IEnumerable <CultureInfo> cultures) : base(id, specifiers, additionalInfo, nameProvider, mappingProvider, marketDefinition, cultures) { Contract.Requires(voidReasonsCache != null); _voidReason = voidReason; _voidReasonsCache = voidReasonsCache; }
/// <summary> /// Initializes a new instance of the <see cref="MarketWithSettlement" /> class /// </summary> /// <param name="id">a <see cref="int" /> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}" /> containing additional market specifiers</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}"/> containing additional market info</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s)</param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapped ids of markets and outcomes</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="voidReason">A value specifying the void reason or a null reference</param> /// <param name="voidReasonsCache">A <see cref="INamedValueCache"/> used to get void reason descriptions</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal MarketCancel(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, IMarketDefinition marketDefinition, int?voidReason, INamedValueCache voidReasonsCache, IEnumerable <CultureInfo> cultures) : base(id, specifiers, additionalInfo, nameProvider, mappingProvider, marketDefinition, cultures) { Guard.Argument(voidReasonsCache, nameof(voidReasonsCache)).NotNull(); _voidReason = voidReason; _voidReasonsCache = voidReasonsCache; }
/// <summary> /// Initializes a new instance of the <see cref="MarketWithProbabilities"/> class /// </summary> /// <param name="id">a <see cref="int"/> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}"/> containing market specifiers.</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}"/> containing additional market info.</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s) </param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapped ids of markets and outcomes</param> /// <param name="status">a <see cref="MarketStatus"/> enum member specifying the status of the market associated with the current <see cref="IMarketWithProbabilities"/> instance</param> /// <param name="outcomeProbabilities">a <see cref="IEnumerable{IOutcomeProbabilities}"/> where each <see cref="IOutcomeProbabilities"/> instance specifies the odds /// for one outcome associated with the current <see cref="IMarketWithProbabilities"/> instance</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal MarketWithProbabilities(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, MarketStatus status, IEnumerable <IOutcomeProbabilities> outcomeProbabilities, IMarketDefinition marketDefinition, IEnumerable <CultureInfo> cultures) : base(id, specifiers, additionalInfo, nameProvider, mappingProvider, marketDefinition, cultures) { Status = status; if (outcomeProbabilities != null) { OutcomeProbabilities = outcomeProbabilities as ReadOnlyCollection <IOutcomeProbabilities> ?? new ReadOnlyCollection <IOutcomeProbabilities>(outcomeProbabilities.ToList()); } }
/// <summary> /// Initializes a new instance of the <see cref="Market" /> class /// </summary> /// <param name="id">a <see cref="int" /> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}" /> containing market specifiers</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}" /> containing additional market info</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s) </param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapping ids of markets and outcomes</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal Market(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, IMarketDefinition marketDefinition, IEnumerable <CultureInfo> cultures) { Guard.Argument(nameProvider, nameof(nameProvider)).NotNull(); Guard.Argument(cultures, nameof(cultures)).NotNull().NotEmpty(); Id = id; Specifiers = specifiers; AdditionalInfo = additionalInfo; _nameProvider = nameProvider; MappingProvider = mappingProvider; MarketDefinition = marketDefinition; _cultures = cultures; }
/// <summary> /// Initializes a new instance of the <see cref="MarketWithSettlement" /> class /// </summary> /// <param name="id">a <see cref="int" /> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}" /> containing additional market specifiers</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}"/> containing additional market info</param> /// <param name="outcomes">An <see cref="IEnumerable{IOutcomeSettlement}" /> where each <see cref="IOutcomeSettlement" /> instance providing outcome settling information /// </param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s)</param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapped ids of markets and outcomes</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="voidReason">A value specifying the void reason or a null reference</param> /// <param name="voidReasonsCache">A <see cref="INamedValueCache"/> used to get void reason descriptions</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal MarketWithSettlement(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, IEnumerable <IOutcomeSettlement> outcomes, INameProvider nameProvider, IMarketMappingProvider mappingProvider, IMarketDefinition marketDefinition, int?voidReason, INamedValueCache voidReasonsCache, IEnumerable <CultureInfo> cultures) : base(id, specifiers, additionalInfo, nameProvider, mappingProvider, marketDefinition, voidReason, voidReasonsCache, cultures) { Contract.Requires(outcomes != null && outcomes.Any()); var readonlyOutcomes = outcomes as IReadOnlyCollection <IOutcomeSettlement>; OutcomeSettlements = readonlyOutcomes ?? new ReadOnlyCollection <IOutcomeSettlement>(outcomes.ToList()); }
/// <summary> /// Initializes a new instance of the <see cref="Market" /> class /// </summary> /// <param name="id">a <see cref="int" /> value specifying the market type</param> /// <param name="specifiers">a <see cref="IReadOnlyDictionary{String, String}" /> containing market specifiers</param> /// <param name="additionalInfo">a <see cref="IReadOnlyDictionary{String, String}" /> containing additional market info</param> /// <param name="nameProvider">A <see cref="INameProvider"/> instance used to generate the market name(s) </param> /// <param name="mappingProvider">A <see cref="IMarketMappingProvider"/> instance used for providing mapping ids of markets and outcomes</param> /// <param name="marketDefinition">The associated market definition</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying languages the current instance supports</param> internal Market(int id, IReadOnlyDictionary <string, string> specifiers, IReadOnlyDictionary <string, string> additionalInfo, INameProvider nameProvider, IMarketMappingProvider mappingProvider, IMarketDefinition marketDefinition, IEnumerable <CultureInfo> cultures) { Contract.Requires(nameProvider != null); Contract.Requires(cultures != null); Contract.Requires(cultures.Any()); Id = id; Specifiers = specifiers; AdditionalInfo = additionalInfo; _nameProvider = nameProvider; MappingProvider = mappingProvider; MarketDefinition = marketDefinition; _cultures = cultures; }