/// <summary>
        /// Gets the new <see cref="IMarket"/> instance
        /// </summary>
        /// <param name="sportEvent">A <see cref="ISportEvent"/> representing the sport event associated with the generated message</param>
        /// <param name="market">The <see cref="market"/> instance used</param>
        /// <param name = "producerId" > A producerId of the<see cref="ISportEvent"/></param>
        /// <param name="sportId">A sportId of the <see cref="ISportEvent"/></param>
        /// <param name="cultures">The list of cultures that should be prefetched</param>
        /// <returns>Returns the new <see cref="IMarket"/> instance</returns>
        protected virtual IMarketCancel GetMarketCancel(ISportEvent sportEvent, market market, int producerId, URN sportId, IEnumerable <CultureInfo> cultures)
        {
            Guard.Argument(sportEvent, nameof(sportEvent)).NotNull();
            Guard.Argument(market, nameof(market)).NotNull();

            var cultureInfos = cultures.ToList();

            var specifiers = string.IsNullOrEmpty(market.specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(market.specifiers);

            var additionalInfo = string.IsNullOrEmpty(market.extended_specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(market.extended_specifiers);

            var marketDefinition = new MarketDefinition(market.id, _marketCacheProvider, sportId, producerId, specifiers, cultureInfos, _externalExceptionStrategy);

            return(new MarketCancel(market.id,
                                    specifiers,
                                    additionalInfo,
                                    _nameProviderFactory.BuildNameProvider(sportEvent, market.id, specifiers),
                                    _mappingProviderFactory.BuildMarketMappingProvider(sportEvent, market.id, specifiers, producerId, sportId),
                                    marketDefinition,
                                    market.void_reasonSpecified ? market.void_reason : (int?)null,
                                    _voidReasonCache,
                                    cultureInfos));
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the new <see cref="IMarketWithProbabilities"/> instance
        /// </summary>
        /// <param name="sportEvent">A <see cref="ISportEvent"/> representing the sport event associated with the generated message</param>
        /// <param name="marketOddsChange">The <see cref="oddsChangeMarket"/> instance used</param>
        /// <param name="producerId">A producerId specifying message producerId</param>
        /// <param name="sportId">A sportId of the <see cref="ISportEvent"/></param>
        /// <param name="cultures">The list of cultures that should be prefetched</param>
        /// <returns>Returns the new <see cref="IMarketWithOdds"/> instance</returns>
        protected virtual IMarketWithProbabilities GetMarketWithProbabilities(ISportEvent sportEvent, oddsChangeMarket marketOddsChange, int producerId, URN sportId, IEnumerable <CultureInfo> cultures)
        {
            var cultureInfos = cultures.ToList();
            var specifiers   = string.IsNullOrEmpty(marketOddsChange.specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketOddsChange.specifiers);

            var additionalInfo = string.IsNullOrEmpty(marketOddsChange.extended_specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketOddsChange.extended_specifiers);

            var nameProvider    = _nameProviderFactory.BuildNameProvider(sportEvent, marketOddsChange.id, specifiers);
            var mappingProvider = _mappingProviderFactory.BuildMarketMappingProvider(sportEvent, marketOddsChange.id, specifiers, producerId, sportId);

            var marketDefinition = new MarketDefinition(marketOddsChange.id, _marketCacheProvider, sportId, producerId, specifiers, cultureInfos, _externalExceptionStrategy);

            return(new MarketWithProbabilities(marketOddsChange.id,
                                               specifiers,
                                               additionalInfo,
                                               nameProvider,
                                               mappingProvider,
                                               MessageMapperHelper.GetEnumValue <MarketStatus>(marketOddsChange.status),
                                               marketOddsChange.outcome?
                                               .Select(outcomeOdds => new OutcomeProbabilities(
                                                           outcomeOdds.id,
                                                           outcomeOdds.activeSpecified ? (bool?)(outcomeOdds.active != 0) : null,
                                                           outcomeOdds.probabilitiesSpecified ? (double?)outcomeOdds.probabilities : null,
                                                           nameProvider,
                                                           mappingProvider,
                                                           cultureInfos,
                                                           new OutcomeDefinition(marketOddsChange.id, outcomeOdds.id, _marketCacheProvider, specifiers, cultureInfos, _externalExceptionStrategy))),
                                               marketDefinition,
                                               cultureInfos,
                                               marketOddsChange.cashout_statusSpecified ? (CashoutStatus?)MessageMapperHelper.GetEnumValue <CashoutStatus>(marketOddsChange.cashout_status) : null));
        }
        public HttpResponseMessage getClientMarketDef(int ClientId, int MarketDefId)
        {
            AuthController objAuth = new AuthController();

            if (objAuth.CheckUserClients(ClientId) == 0)
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized, "You have no permission to view/edit this market"));
            }

            var entity = _db.MarketDefinitions.FirstOrDefault(m => m.Id == MarketDefId && m.ClientId == ClientId);

            if (entity == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "This market is not available, please try another."));
            }
            else
            {
                MarketDefinition marketDef = _db.Database.SqlQuery <MarketDefinition>("Select * from MarketDefinitions Where ID=" + MarketDefId).FirstOrDefault();
                var marketDefBaseMaps      = _db.MarketDefinitionBaseMaps.Where(MD => MD.MarketDefinitionId == MarketDefId).ToList();
                //List<MarketDefinitionPack> marketDefinitionPacks = _db.Database.SqlQuery<MarketDefinitionPack>("Select * from MarketDefinitionPacks Where MarketDefinitionID="+ MarketDefId).ToList();
                marketDef.MarketDefinitionBaseMaps = marketDefBaseMaps;
                //marketDef.MarketDefinitionPacks = marketDefinitionPacks;
                var json = JsonConvert.SerializeObject(marketDef, Formatting.Indented,
                                                       new JsonSerializerSettings
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                });

                return(Request.CreateResponse(HttpStatusCode.OK, marketDef));
            }
        }
Esempio n. 4
0
 private void OnMarketDefinitionChange(MarketDefinition marketDefinition)
 {
     _marketDefinition = marketDefinition;
     if (marketDefinition.Runners != null)
     {
         foreach (RunnerDefinition runnerDefinition in marketDefinition.Runners)
         {
             OnRunnerDefinitionChange(runnerDefinition);
         }
     }
 }
        public async Task <HttpResponseMessage> SaveMarketGroupDetails(int MarketDefId, int ClientId)
        {
            HttpContent      requestContent          = Request.Content;
            string           jsonContent             = requestContent.ReadAsStringAsync().Result;
            var              marketDefinitionDetails = JsonConvert.DeserializeObject <MarketDefinitionDetails>(jsonContent);
            MarketDefinition marketDefinition        = marketDefinitionDetails.MarketDefinition;
            var              IsEdit = MarketDefId > 0 ? 1 : 0;

            List <MarketDefinitionPack>    marketDefinitionPacks    = marketDefinition.MarketDefinitionPacks;//store Packs
            List <MarketDefinitionBaseMap> marketDefinitionBaseMaps = marketDefinition.MarketDefinitionBaseMaps;

            marketDefinition.MarketDefinitionPacks    = null;
            marketDefinition.MarketDefinitionBaseMaps = null;
            //to delete previous market base
            //_db.Database.ExecuteSqlCommand("Delete from MarketDefinitionbaseMaps Where marketdefinitionid=" + MarketDefId);
            SqlParameter paramMarketID = new SqlParameter("@MarketDefID", MarketDefId);
            await _db.Database.ExecuteSqlCommandAsync("exec DeleteMarketDefinitionBaseMap @MarketDefID", paramMarketID);

            var mkt = new MarketDefinition()
            {
                Id = MarketDefId, Name = marketDefinition.Name, ClientId = ClientId, Client = null, MarketDefinitionBaseMaps = null, MarketDefinitionPacks = null, LastSaved = DateTime.Now
            };

            _db.MarketDefinitions.AddOrUpdate(mkt);
            _db.SaveChanges();
            MarketDefId = mkt.Id;

            // to update market definitionId in base maps
            foreach (MarketDefinitionBaseMap rec in marketDefinitionBaseMaps)
            {
                rec.MarketDefinitionId = MarketDefId;
            }

            //to add marketbase again.
            _db.MarketDefinitionBaseMaps.AddRange(marketDefinitionBaseMaps);
            await _db.SaveChangesAsync();

            await SaveMarketPacks(marketDefinitionPacks, MarketDefId);
            await SaveGroupData(MarketDefId, marketDefinitionDetails.GroupView, IsEdit);
            await SaveMarketGroupPack(MarketDefId, marketDefinitionDetails.MarketGroupPack, IsEdit);

            if (marketDefinitionDetails.MarketGroupFilter != null)
            {
                await SaveMarketGroupFilter(MarketDefId, marketDefinitionDetails.MarketGroupFilter, IsEdit);
            }

            //return market info
            var returnDetails = new MarketDefinition()
            {
                Id = MarketDefId, Name = mkt.Name, ClientId = mkt.ClientId
            };

            return(Request.CreateResponse(HttpStatusCode.OK, returnDetails));
        }
Esempio n. 6
0
        public void Setup()
        {
            var client = context.Clients.FirstOrDefault(c => c.Name == "demonstration");

            if (client != null)
            {
                demoClientId     = client.Id;
                marketDefinition = context.MarketDefinitions.FirstOrDefault(m => m.ClientId == client.Id);
            }
            user = context.Users.FirstOrDefault(u => u.UserName.ToLower() == "*****@*****.**");
        }
Esempio n. 7
0
        public void HandleNullSelectionIdInRunnerDefinition()
        {
            var rd = new RunnerDefinition {
                AdjustmentFactor = 54.32
            };
            var md = new MarketDefinition
            {
                Runners = new List <RunnerDefinition> {
                    rd
                },
            };
            var mc = new MarketChangeStub().WithMarketDefinition(md);

            _market.OnChange(_change.WithMarketChange(mc).Build());
        }
        /// <summary>
        /// Gets the new <see cref="IMarketWithSettlement"/> instance
        /// </summary>
        /// <param name="sportEvent">A <see cref="ISportEvent"/> representing the sport event associated with the generated message</param>
        /// <param name="marketSettlement">The <see cref="betSettlementMarket"/> instance used</param>
        /// <param name="producerId">A producerId of the <see cref="ISportEvent"/></param>
        /// <param name="sportId">A producerId of the <see cref="ISportEvent"/></param>
        /// <param name="cultures">The list of cultures that should be prefetched</param>
        /// <returns>Returns the new <see cref="IMarketWithSettlement"/> instance</returns>
        protected virtual IMarketWithSettlement GetMarketWithResults(ISportEvent sportEvent, betSettlementMarket marketSettlement, int producerId, URN sportId, IEnumerable <CultureInfo> cultures)
        {
            Guard.Argument(sportEvent, nameof(sportEvent)).NotNull();
            Guard.Argument(marketSettlement, nameof(marketSettlement)).NotNull();

            var cultureInfos = cultures.ToList();

            var specifiers = string.IsNullOrEmpty(marketSettlement.specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketSettlement.specifiers);

            var additionalInfo = string.IsNullOrEmpty(marketSettlement.extended_specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketSettlement.extended_specifiers);

            var nameProvider    = _nameProviderFactory.BuildNameProvider(sportEvent, marketSettlement.id, specifiers);
            var mappingProvider = _mappingProviderFactory.BuildMarketMappingProvider(sportEvent, marketSettlement.id, specifiers, producerId, sportId);

            var outcomes = (IEnumerable <IOutcomeSettlement>)marketSettlement.Items?.Select(outcome => new OutcomeSettlement(
                                                                                                outcome.dead_heat_factorSpecified
                                   ? (double?)outcome.dead_heat_factor
                                   : null,
                                                                                                outcome.id,
                                                                                                outcome.result,
                                                                                                MessageMapperHelper.GetVoidFactor(outcome.void_factorSpecified, outcome.void_factor),
                                                                                                nameProvider,
                                                                                                mappingProvider,
                                                                                                cultureInfos,
                                                                                                new OutcomeDefinition(marketSettlement.id, outcome.id, _marketCacheProvider, specifiers, cultureInfos, _externalExceptionStrategy)))
                           ?? new List <IOutcomeSettlement>();

            var marketDefinition = new MarketDefinition(marketSettlement.id, _marketCacheProvider, sportId, producerId, specifiers, cultureInfos, _externalExceptionStrategy);

            return(new MarketWithSettlement(marketSettlement.id,
                                            specifiers,
                                            additionalInfo,
                                            outcomes,
                                            nameProvider,
                                            mappingProvider,
                                            marketDefinition,
                                            marketSettlement.void_reasonSpecified ? (int?)marketSettlement.void_reason : null,
                                            _namedValuesProvider.VoidReasons,
                                            cultureInfos));
        }
Esempio n. 9
0
        public void HandleRunnerDefinitionForRunnerThatDoesNotExist()
        {
            var rc = new RunnerChangeStub();
            var rd = new RunnerDefinition
            {
                SelectionId = 1, AdjustmentFactor = 54.32,
            };
            var md = new MarketDefinition
            {
                Runners = new List <RunnerDefinition> {
                    rd
                },
            };
            var mc = new MarketChangeStub()
                     .WithMarketDefinition(md)
                     .WithRunnerChange(rc);

            _market.OnChange(_change.WithMarketChange(mc).Build());
        }
Esempio n. 10
0
        public void OnMarketDefinitionAdjustmentFactorIsSet()
        {
            var rc = new RunnerChangeStub();
            var rd = new RunnerDefinition
            {
                SelectionId = 12345, AdjustmentFactor = 54.32,
            };
            var md = new MarketDefinition
            {
                Runners = new List <RunnerDefinition> {
                    rd
                },
            };
            var mc = new MarketChangeStub()
                     .WithMarketDefinition(md).WithRunnerChange(rc);

            _market.OnChange(_change.WithMarketChange(mc).Build());
            Assert.Equal(54.32, _market.Runners[12345].AdjustmentFactor);
        }
        /// <summary>
        /// Gets the new <see cref="IMarketWithOdds"/> instance
        /// </summary>
        /// <param name="sportEvent">A <see cref="ISportEvent"/> representing the sport event associated with the generated message</param>
        /// <param name="marketOddsChange">The <see cref="oddsChangeMarket"/> instance used</param>
        /// <param name="producerId">A producerId of the <see cref="ISportEvent"/></param>
        /// <param name="sportId">A sportId of the <see cref="ISportEvent"/></param>
        /// <param name="cultures">The list of cultures that should be prefetched</param>
        /// <returns>Returns the new <see cref="IMarketWithOdds"/> instance</returns>
        protected virtual IMarketWithOdds GetMarketWithOdds(ISportEvent sportEvent, oddsChangeMarket marketOddsChange, int producerId, URN sportId, IEnumerable <CultureInfo> cultures)
        {
            var cultureInfos = cultures.ToList();
            var specifiers   = string.IsNullOrEmpty(marketOddsChange.specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketOddsChange.specifiers);

            var additionalInfo = string.IsNullOrEmpty(marketOddsChange.extended_specifiers)
                ? null
                : FeedMapperHelper.GetSpecifiers(marketOddsChange.extended_specifiers);

            var marketMetadata = marketOddsChange.market_metadata == null || !marketOddsChange.market_metadata.next_betstopSpecified
                ? new MarketMetadata(null)
                : new MarketMetadata(marketOddsChange.market_metadata.next_betstop);

            var nameProvider    = _nameProviderFactory.BuildNameProvider(sportEvent, marketOddsChange.id, specifiers);
            var mappingProvider = _mappingProviderFactory.BuildMarketMappingProvider(sportEvent, marketOddsChange.id, specifiers, producerId, sportId);

            var outcomes = marketOddsChange.outcome?.Select(outcome =>
                                                            GetOutcomeWithOdds(sportEvent,
                                                                               nameProvider,
                                                                               mappingProvider,
                                                                               outcome,
                                                                               cultureInfos,
                                                                               new OutcomeDefinition(marketOddsChange.id, outcome.id, _marketCacheProvider, specifiers, cultureInfos, _externalExceptionStrategy)));

            var marketDefinition = new MarketDefinition(marketOddsChange.id, _marketCacheProvider, sportId, producerId, specifiers, cultureInfos, _externalExceptionStrategy);

            return(new MarketWithOdds(marketOddsChange.id,
                                      specifiers,
                                      additionalInfo,
                                      nameProvider,
                                      mappingProvider,
                                      MessageMapperHelper.GetEnumValue <MarketStatus>(marketOddsChange.status),
                                      marketOddsChange.cashout_statusSpecified ? (CashoutStatus?)MessageMapperHelper.GetEnumValue <CashoutStatus>(marketOddsChange.cashout_status) : null,
                                      marketOddsChange.favouriteSpecified && marketOddsChange.favourite == 1,
                                      outcomes,
                                      marketMetadata,
                                      marketDefinition,
                                      cultureInfos));
        }
Esempio n. 12
0
 public virtual void onMessage(MarketDefinition message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
Esempio n. 13
0
 public virtual void onMessage( MarketDefinition message, QuickFix.SessionID session ) 
   { throw new QuickFix.UnsupportedMessageType(); }
        public void SaveVersion <T>(T cName, int UserId)
        {
            int Version          = 0;
            MarketDefinition val = (MarketDefinition)(object)cName;

            var result = _db.MarketDefinitions_History.Where(i => i.MarketDefId == val.Id).OrderByDescending(x => x.Version).FirstOrDefault();

            Version = (result == null) ? 1 : result.Version + 1;
            MarketDefinitions_History obj = new MarketDefinitions_History();

            val.CopyProperties(obj);
            obj.MarketDefId  = val.Id;
            obj.Version      = Version;
            obj.ModifiedDate = DateTime.Now;
            obj.UserId       = UserId;

            foreach (MarketDefinitionBaseMap baseMap in val.MarketDefinitionBaseMaps)
            {
                MarketDefBaseMap_History baseObj = new MarketDefBaseMap_History();
                baseMap.CopyProperties(baseObj);
                baseObj.MarketDefId = val.Id;
                baseObj.Version     = Version;
                var mbData = _db.MarketBase_History.Where(b => b.MBId == baseMap.MarketBaseId).OrderByDescending(o => o.Version).FirstOrDefault();
                baseObj.MarketBaseVersion = (mbData == null)? 1:mbData.Version;

                foreach (AdditionalFilter addFilter in baseMap.Filters)
                {
                    AdditionalFilter_History addFilterHistory = new AdditionalFilter_History();
                    addFilter.CopyProperties(addFilterHistory);
                    addFilterHistory.MarketDefVersion = Version;

                    if (baseObj.Filters == null)
                    {
                        baseObj.Filters = new List <AdditionalFilter_History>();
                    }
                    baseObj.Filters.Add(addFilterHistory);
                }

                if (obj.MarketDefBaseMap_History == null)
                {
                    obj.MarketDefBaseMap_History = new List <MarketDefBaseMap_History>();
                }
                obj.MarketDefBaseMap_History.Add(baseObj);
            }

            foreach (MarketDefinitionPack pack in val.MarketDefinitionPacks)
            {
                MarketDefPack_History packHistory = new MarketDefPack_History();
                packHistory.MarketDefVersion = Version;

                pack.CopyProperties(packHistory);

                if (obj.MarketDefPack_History == null)
                {
                    obj.MarketDefPack_History = new List <MarketDefPack_History>();
                }
                obj.MarketDefPack_History.Add(packHistory);
            }

            //obj.MarketDefId = val.Id;
            //obj.Version = Version;
            //obj.Name = val.Name;
            //obj.ModifiedDate = DateTime.Now;
            //obj.ClientId = val.ClientId;
            //obj.Description = val.Description;
            //obj.UserId = UserId;

            //MarketDefBaseMap_History baseObj = new MarketDefBaseMap_History();

            //foreach(MarketDefinitionBaseMap baseMap in val.MarketDefinitionBaseMaps)
            //{
            //    baseObj = new MarketDefBaseMap_History();
            //    baseObj.Id = baseMap.Id;
            //    baseObj.MarketBaseId = baseMap.MarketBaseId;
            //    baseObj.MarketBaseVersion = 1;
            //    baseObj.MarketDefId = val.Id;
            //    baseObj.Version = Version;
            //    baseObj.Name = baseMap.Name;
            //    baseObj.DataRefreshType = baseMap.DataRefreshType;

            //    foreach(AdditionalFilter addFilter in baseMap.Filters)
            //    {
            //        AdditionalFilter_History addFilterHistory = new AdditionalFilter_History();
            //        addFilterHistory.Criteria = addFilter.Criteria;
            //        addFilterHistory.Id = addFilter.Id;
            //        addFilterHistory.IsEnabled = addFilter.IsEnabled;
            //        addFilterHistory.MarketDefBaseMap_HistoryId = addFilter.MarketDefinitionBaseMapId;
            //        addFilterHistory.MarketDefVersion = Version;
            //        addFilterHistory.Values = addFilter.Values;
            //        addFilterHistory.Name = addFilter.Name;
            //        //if (baseObj.Filters == null)
            //        //    baseObj.Filters = new List<AdditionalFilter_History>();
            //        //baseObj.Filters.Add(addFilterHistory);
            //    }
            //    if (obj.MarketDefBaseMap_History == null)
            //        obj.MarketDefBaseMap_History = new List<MarketDefBaseMap_History>();
            //    obj.MarketDefBaseMap_History.Add(baseObj);
            //}

            //MarketDefPack_History packHistory = new MarketDefPack_History();

            //foreach(MarketDefinitionPack pack in val.MarketDefinitionPacks)
            //{
            //    packHistory = new MarketDefPack_History();
            //    packHistory.Alignment = pack.Alignment;
            //    packHistory.ATC4 = pack.ATC4;
            //    packHistory.ChangeFlag = pack.ChangeFlag;
            //    packHistory.DataRefreshType = pack.DataRefreshType;
            //    packHistory.Factor = pack.Factor;
            //    packHistory.Id = pack.Id;
            //    packHistory.Manufacturer = pack.Manufacturer;
            //    packHistory.MarketBaseId = pack.MarketBaseId;
            //    packHistory.MarketDefVersion = Version;
            //    packHistory.MarketDefinitionId = pack.MarketDefinitionId;
            //    packHistory.Molecule = pack.Molecule;
            //    packHistory.NEC4 = pack.NEC4;
            //    packHistory.PFC = pack.PFC;
            //    packHistory.Product = pack.Product;
            //    if (obj.MarketDefPack_History == null)
            //        obj.MarketDefPack_History = new List<MarketDefPack_History>();
            //    obj.MarketDefPack_History.Add(packHistory);
            //}

            _db.MarketDefinitions_History.Add(obj);
            _db.SaveChanges();
        }
Esempio n. 15
0
 public MarketChangeStub WithMarketDefinition(MarketDefinition marketDefinition)
 {
     MarketDefinition = marketDefinition;
     return(this);
 }