public PartialViewResult Details(int?ID)
        {
            var repo   = new CommodityRepository();
            var result = repo.GetCommodities(ID);

            return(PartialView(result));
        }
Esempio n. 2
0
 public Task Start()
 {
     return(Task.Factory.StartNew(() =>
     {
         if (Token == null)
         {
             Token = new CancellationTokenSource();
         }
         AskRepositoryTask = AskRepository.Start(Token);
         OpenAsksByBuyerCommdoity.Clear();
         OpenAsks.Clear();
         var commodities = CommodityRepository.GetCommodities();
         Parallel.ForEach(commodities, c => OpenAsksByBuyerCommdoity.AddOrUpdate(c.CommodityID, new ConcurrentDictionary <int, ConcurrentDictionary <long, ThreadSafeAsk> >(), (k, o) => o));
         Parallel.ForEach(OpenAsksByBuyerCommdoity, buyCommodityDictionary =>
         {
             foreach (var commodity in commodities)
             {
                 buyCommodityDictionary.Value.AddOrUpdate(commodity.CommodityID, new ConcurrentDictionary <long, ThreadSafeAsk>(), (k, o) => o);
             }
         });
         Parallel.ForEach(AskRepository.GetAsks(), ask =>
         {
             ThreadSafeAsk tAsk = CreateAsk(new ThreadSafeAsk(ask));
             foreach (var commodityBuyID in tAsk.CommodityBuyID)
             {
                 foreach (var commoditySellID in tAsk.CommoditySellID)
                 {
                     OpenAsksByBuyerCommdoity[commodityBuyID][commoditySellID].AddOrUpdate(tAsk.AskID, tAsk, (k, o) => o);
                 }
             }
             OpenAsks.AddOrUpdate(tAsk.AskID, tAsk, (k, o) => o);
         });
     }));
 }
 public void Process()
 {
     try
     {
         logger.Debug(string.Format("ThreadNum={0}开始创建", CurrentThreadNum));
         CommodityRepository commodityRepository = new CommodityRepository();
         ILuceneBulid        builder             = new LuceneBulid();
         bool isFirst   = true;
         int  pageIndex = 1;
         while (!CTS.IsCancellationRequested)
         {
             List <User> commodityList = commodityRepository.QueryListByEF(CurrentThreadNum, pageIndex, 1000);
             if (commodityList == null || commodityList.Count == 0)
             {
                 break;
             }
             else
             {
                 builder.BuildIndex(commodityList, PathSuffix, isFirst);
                 logger.Debug(string.Format("ThreadNum={0}完成{1}条的创建", CurrentThreadNum, 1000 * pageIndex++));
                 isFirst = false;
             }
         }
     }
     catch (Exception ex)
     {
         CTS.Cancel();
         logger.Error(string.Format("ThreadNum={0}出现异常", CurrentThreadNum), ex);
     }
     finally
     {
         logger.Debug(string.Format("ThreadNum={0}完成创建", CurrentThreadNum));
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 数据库取10000条数据测试
        /// </summary>
        /// <returns></returns>
        private static List <Commodity> GetList()
        {
            CommodityRepository repository    = new CommodityRepository();
            List <Commodity>    commodityList = repository.QueryList(1, 1, 5000);

            return(commodityList);
        }
        public ActionResult Index()
        {
            var repo = new CommodityRepository();

            var commModel = repo.GetCommodities();

            return(View(commModel));
        }
Esempio n. 6
0
 public void Process()
 {
     try
     {
         logger.Debug(string.Format("ThreadNum={0}开始创建", CurrentThreadNum));
         CommodityRepository commodityRepository = new CommodityRepository();
         LuceneBulid         builder             = new LuceneBulid();
         bool isFirst   = true;
         int  pageIndex = 1;
         if (service == null)
         {
             while (!CTS.IsCancellationRequested)
             {
                 List <Commodity> commodityList;
                 commodityList = commodityRepository.QueryList(CurrentThreadNum, pageIndex, 1000);
                 if (commodityList == null || commodityList.Count == 0)
                 {
                     break;
                 }
                 else
                 {
                     builder.BuildIndex(commodityList, PathSuffix, isFirst);
                     logger.Debug(string.Format("ThreadNum={0}完成{1}条的创建", CurrentThreadNum, 1000 * pageIndex++));
                     isFirst = false;
                 }
             }
         }
         else
         {
             while (!CTS.IsCancellationRequested)
             {
                 lock (_lock)
                 {
                     //新增代码,从Redis逐行获取
                     var result = service.BlockingPopItemFromList("commodity", TimeSpan.FromSeconds(3));
                     if (string.IsNullOrEmpty(result))
                     {
                         break;
                     }
                     else
                     {
                         var commodity = JsonHelper.JsonToObj <Commodity>(result);
                         builder.InsertIndex(commodity);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         CTS.Cancel();
         logger.Error(string.Format("ThreadNum={0}出现异常", CurrentThreadNum), ex);
     }
     finally
     {
         logger.Debug(string.Format("ThreadNum={0}完成创建", CurrentThreadNum));
     }
 }
Esempio n. 7
0
        public ActionResult requestform()
        {
            CountryRepository   cr   = new CountryRepository();
            CommodityRepository comR = new CommodityRepository();

            var requestForm = new RequestModel();
            var countries   = cr.GetAllCountries();

            requestForm.Origin             = new List <SelectListItem>();
            requestForm.DestinationCountry = new List <SelectListItem>();
            // add origin dropdown.
            foreach (Country c in countries)
            {
                SelectListItem lst = new SelectListItem()
                {
                    Text  = c.CountryName,
                    Value = c.CountryId.ToString()
                };
                //Origin.Add(lst);
                requestForm.Origin.Add(lst);
                requestForm.DestinationCountry.Add(lst);
            }

            requestForm.DestinationCity = new List <SelectListItem>();

            requestForm.Commodity = new List <SelectListItem>();
            var commodities = comR.GetAllCommodity();

            foreach (Commodity c in commodities)
            {
                SelectListItem cLst = new SelectListItem()
                {
                    Text  = c.CommodityName,
                    Value = c.CommodityName
                };
                requestForm.Commodity.Add(cLst);
            }

            SelectListItem opentop = new SelectListItem()
            {
                Text = "Open Top", Value = "Open Top"
            };
            SelectListItem flatrack = new SelectListItem()
            {
                Text = "Flat Rack", Value = "Flat Rack"
            };
            SelectListItem reefer = new SelectListItem()
            {
                Text = "Reefer", Value = "Reefer"
            };

            requestForm.OtherContainerType = new List <SelectListItem>();
            requestForm.OtherContainerType.Add(opentop);
            requestForm.OtherContainerType.Add(flatrack);
            requestForm.OtherContainerType.Add(reefer);

            return(View(requestForm));
        }
Esempio n. 8
0
        public void SubmitOffer()
        {
            Trader        me         = null;
            TradingPost   post       = null;
            Commodity     commondity = null;
            NewTradeOffer offer      = null;
            int           id         = 0;
            var           dbName     = "SubmitOffer";

            "Given I am a trader".x(async() =>
            {
                var traderRepository = new TraderRepository(CreateNewContext(dbName));
                id = await traderRepository.New(TestTradeDataStatic.MargamanTrader);
                me = await traderRepository.Get(id);
            });

            "And I have a trading post".x(async() =>
            {
                var systemRepository = new AstralSystemRepository(CreateNewContext(dbName));
                await systemRepository.New(TestSystemDataStatic.StantonSystem);
                var system = await systemRepository.Get(id);
                post       = system.TradePoints.OfType <TradingPost>().First();
            });

            "And I have a new commodity".x(async() =>
            {
                var commodityRepo = new CommodityRepository(CreateNewContext(dbName));
                var id            = await commodityRepo.New(TestTradeDataStatic.AgriciumCommondity);
                commondity        = await commodityRepo.Get(id);
            });

            "And I have an offer".x(() => offer = new NewTradeOffer
            {
                Id           = 0,
                TraderId     = me.Id,
                TradePointId = post.Id,
                CommodityId  = commondity.Id,
                PricePerUnit = 23.99M,
                OfferType    = (int)OfferType.Buy
            });

            "When I submit the offer".x(async() =>
            {
                var traderRepository = new TraderRepository(CreateNewContext(dbName));
                var command          = new NewTradeOfferCommand(traderRepository);
                id = await command.Execute(offer);
            });

            "Then the Offer is displayed".x(async() =>
            {
                var traderRepository = new TraderRepository(CreateNewContext(dbName), true);
                var trader           = await traderRepository.Get(me.Id);
                AssertOffer(trader.TradeOffers.First(o => o.Id == id), offer);
            });
        }
        public ActionResult Create(CommodityModel commodity)
        {
            if (ModelState.IsValid)
            {
                var repo = new CommodityRepository();

                var saved = repo.SaveNewCommodity(commodity);
                if (saved)
                {
                    return(RedirectToAction("index", "Home"));
                }
            }
            return(View(commodity));
        }
Esempio n. 10
0
 public AfricanFarmerCommoditiesUnitOfWork(
     AbstractRepository <Address> addressRepository,
     AbstractRepository <Driver> driverRepository,
     AbstractRepository <Invoice> invoiceRepository,
     AbstractRepository <Item> itemRepository,
     AbstractRepository <Itinary> itinaryRepository,
     AbstractRepository <Location> locationRepository,
     AbstractRepository <Schedule> scheduleRepository,
     AbstractRepository <Vehicle> vehicleRepository,
     AbstractRepository <SchedulesPricing> schedulesPricingRepository,
     AbstractRepository <DealsPricing> dealsPricingRepository,
     AbstractRepository <TransportPricing> transportPricingRepository,
     AbstractRepository <User> userRepository,
     AbstractRepository <Role> rolesRepository,
     AbstractRepository <UserRole> userInRolesRepository,
     AbstractRepository <VehicleCategory> vehicleCategoryRepository,
     AbstractRepository <FoodHubStorage> foodHubStorageRepository,
     AbstractRepository <VehicleCapacity> vehicleCapacityRepository,
     AbstractRepository <FoodHub> foodHubRepository,
     AbstractRepository <CommodityUnit> commodityUnitRepository,
     AbstractRepository <Commodity> commodityRepository,
     AbstractRepository <CommodityCategory> commodityCategoryRepository,
     AbstractRepository <ActiveEnrouteCommodityMonitor> activeEnrouteCommodityMonitorRepository,
     AbstractRepository <TransportSchedule> transportScheduleRepository,
     AbstractRepository <Company> companyRepository,
     AfricanFarmerCommoditiesDBContext africanFarmerCommoditiesDbContext)
 {
     AfricanFarmerCommoditiesDbContext = africanFarmerCommoditiesDbContext as AfricanFarmerCommoditiesDBContext;
     _addressRepository = addressRepository as AddressRepository;
     _addressRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _driverRepository = driverRepository as DriverRepository;
     _driverRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _invoiceRepository = invoiceRepository as InvoiceRepository;
     _invoiceRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _itemRepository = itemRepository as ItemRepository;
     _itemRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _itinaryRepository = itinaryRepository as ItinaryRepository;
     _itinaryRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _locationRepository = locationRepository as LocationRepository;
     _locationRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _scheduleRepository = scheduleRepository as ScheduleRepository;
     _scheduleRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _vehicleRepository = vehicleRepository as VehicleRepository;
     _vehicleRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _dealsPricingRepository = dealsPricingRepository as DealsPricingRepository;
     _dealsPricingRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _schedulesPricingRepository = schedulesPricingRepository as SchedulesPricingRepository;
     _schedulesPricingRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _userRepository = userRepository as UserRepository;
     _userRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _rolesRepository = rolesRepository as RolesRepository;
     _rolesRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _userInRolesRepository = userInRolesRepository as UserInRolesRepository;
     _userInRolesRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _transportPricingRepository = transportPricingRepository as TransportPricingRepository;
     _transportPricingRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _vehicleCategoryRepository = vehicleCategoryRepository as VehicleCategoryRepository;
     _vehicleCategoryRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _foodHubStorageRepository = foodHubStorageRepository as FoodHubStorageRepository;
     _foodHubStorageRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _foodHubRepository = foodHubRepository as FoodHubRepository;
     _foodHubRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _vehicleCapacityRepository = vehicleCapacityRepository as VehicleCapacityRepository;
     _vehicleCapacityRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _commodityUnitRepository = commodityUnitRepository as CommodityUnitRepository;
     _commodityUnitRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _commodityRepository = commodityRepository as CommodityRepository;
     _commodityRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _commodityCategoryRepository = commodityCategoryRepository as CommodityCategoryRepository;
     _commodityCategoryRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _activeEnrouteCommodityMonitorRepository = activeEnrouteCommodityMonitorRepository as ActiveEnrouteCommodityMonitorRepository;
     _activeEnrouteCommodityMonitorRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _transportScheduleRepostiory = transportScheduleRepository as TransportScheduleRepository;
     _transportScheduleRepostiory.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
     _companyRepository = companyRepository as CompanyRepository;
     _companyRepository.AfricanFarmerCommoditiesDBContext = africanFarmerCommoditiesDbContext;
 }
        public void LoadTest()
        {
            try
            {
                CommodityRepository commodityRepository  = new CommodityRepository();
                var                     commodities      = commodityRepository.GetCommodityPrices().ToArray();
                UserRepository          userRepository   = new UserRepository();
                var                     users            = userRepository.GetUsers().ToArray();
                CancellationTokenSource cancelationToken = new CancellationTokenSource();
                List <Task>             tasks            = new List <Task>();
                double[]                adjustments      = new double[] { 0.8, 0.85, 0.85, 0.9, 0.9, 0.91, 0.91, 0.91, 0.92, 0.92, 0.92, 0.92, 0.93, 0.93, 0.93, 0.93, 0.93, 0.94, 0.94, 0.94, 0.94, 0.94,
                                                                          0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97,
                                                                          0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99,
                                                                          1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                                          1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02,
                                                                          1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05,
                                                                          1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.07, 1.07, 1.07, 1.07, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.09, 1.09, 1.09, 1.09, 1.1, 1.1, 1.1, 1.15, 1.15, 1.2 };
                int i = 0;
                while (i < Workers)
                {
                    Task t = Task.Factory.StartNew(() =>
                    {
                        while (!cancelationToken.IsCancellationRequested)
                        {
                            Stopwatch watch            = new Stopwatch();
                            Ask ask                    = new Ask();
                            IEnumerable <Order> orders = null;
                            bool error                 = false;
                            try
                            {
                                Random rand = new Random((int)DateTime.Now.Ticks);

                                int buyCommodityIndex  = rand.Next(0, commodities.Length - 1);
                                int sellCommodityIndex = rand.Next(0, commodities.Length - 1);
                                while (buyCommodityIndex == sellCommodityIndex)
                                {
                                    sellCommodityIndex = rand.Next(0, commodities.Length - 1);
                                }

                                var buyCommodity  = commodities[buyCommodityIndex];
                                var sellCommodity = commodities[sellCommodityIndex];
                                double buyRatio   = sellCommodity.PriceInGold / buyCommodity.PriceInGold;


                                ask.AskDate = DateTime.UtcNow;
                                ask.ApplyCommissionToBuy = buyRatio < 0;
                                ask.BuyRatio             = (sellCommodity.PriceInGold * adjustments[rand.Next(0, adjustments.Length - 1)]).ToFlooredInt();
                                ask.SellRatio            = (buyCommodity.PriceInGold * adjustments[rand.Next(0, adjustments.Length - 1)]).ToFlooredInt();
                                ask.CommodityBuyID       = buyCommodity.CommodityID;
                                ask.CommoditySellID      = sellCommodity.CommodityID;
                                ask.AllowPartialFill     = rand.Next(0, 100) >= 30;
                                ask.BuyQuantity          = rand.Next(5000, 1500000);
                                ask.UserID      = users[rand.Next(0, users.Length - 1)].UserID;
                                ask.MaxLegDepth = 4;
                                watch.Start();
                                orders = OrderProcessor.Singleton.ExecuteAsk(ask);
                                watch.Stop();
                            }
                            catch (Exception ex)
                            {
                                TestContext.WriteLine(ex.ToString());
                                error = true;
                            }
                            TestContext.WriteLine(string.Format("Elapsed: {0}, AskID: {1}, OrderIDs: {2}", watch.ElapsedMilliseconds, ask.AskID, orders != null ? orders.Select(o => o.OrderID.ToString()).Aggregate((result, next) => result + "," + next) : "No Order"));
                            if (error)
                            {
                                break;
                            }
                        }
                    }, cancelationToken.Token);
                    tasks.Add(t);
                    i++;
                }
                Task.Delay(60000).Wait();
                cancelationToken.Cancel(false);
                Task.WaitAll(tasks.ToArray());
            }
            catch (Exception)
            {
                throw;
            }
        }
 //Load the repository via DI
 public CommoditiesController(CommodityRepository commodities)
 {
     //Set the local variable to the injected one
     _commodities = commodities;
 }
Esempio n. 13
0
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            try
            {
                OP.Singleton.Start().Wait();
                CommodityRepository commodityRepository = new CommodityRepository();
                var            commodities    = commodityRepository.GetCommodityPrices().ToArray();
                UserRepository userRepository = new UserRepository();
                var            users          = userRepository.GetUsers().ToArray();

                CancellationTokenSource cancelationToken = new CancellationTokenSource();
                List <Task>             tasks            = new List <Task>();
                double[] adjustments = new double[] { 0.8, 0.85, 0.85, 0.9, 0.9, 0.91, 0.91, 0.91, 0.92, 0.92, 0.92, 0.92, 0.93, 0.93, 0.93, 0.93, 0.93, 0.94, 0.94, 0.94, 0.94, 0.94,
                                                      0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.96, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97, 0.97,
                                                      0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99,
                                                      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                      1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.01, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02, 1.02,
                                                      1.03, 1.03, 1.03, 1.03, 1.03, 1.03, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.04, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05, 1.05,
                                                      1.06, 1.06, 1.06, 1.06, 1.06, 1.07, 1.07, 1.07, 1.07, 1.07, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.08, 1.09, 1.09, 1.09, 1.09, 1.1, 1.1, 1.1, 1.15, 1.15, 1.2 };
                int i = 0;
                while (i < Workers)
                {
                    Task t = Task.Factory.StartNew(() =>
                    {
                        while (!cancelationToken.IsCancellationRequested)
                        {
                            Stopwatch watch = new Stopwatch();
                            Ask ask         = new Ask();
                            Order order     = null;
                            bool error      = false;
                            try
                            {
                                Random rand = new Random((int)DateTime.Now.Ticks);

                                int buyCommodityIndex  = rand.Next(0, commodities.Length - 1);
                                int sellCommodityIndex = rand.Next(0, commodities.Length - 1);
                                while (buyCommodityIndex == sellCommodityIndex)
                                {
                                    sellCommodityIndex = rand.Next(0, commodities.Length - 1);
                                }

                                var buyCommodity  = commodities[buyCommodityIndex];
                                var sellCommodity = commodities[sellCommodityIndex];
                                double buyRatio   = sellCommodity.PriceInGold / buyCommodity.PriceInGold;


                                ask.AskDate = DateTime.UtcNow;
                                ask.ApplyCommissionToBuy = buyRatio < 0;
                                ask.BuyRatio             = (sellCommodity.PriceInGold * adjustments[rand.Next(0, adjustments.Length - 1)]).ToFlooredInt();
                                ask.SellRatio            = (buyCommodity.PriceInGold * adjustments[rand.Next(0, adjustments.Length - 1)]).ToFlooredInt();
                                ask.CommodityBuyID       = buyCommodity.CommodityID;
                                ask.CommoditySellID      = sellCommodity.CommodityID;
                                ask.AllowPartialFill     = rand.Next(0, 100) >= 30;
                                ask.AskQuantity          = rand.Next(5000, 1500000);
                                ask.UserID      = users[rand.Next(0, users.Length - 1)].UserID;
                                ask.MaxLegDepth = 4;
                                watch.Start();
                                order = OP.Singleton.ExecuteAsk(ask);
                                watch.Stop();
                            }
                            catch (FaultException <FX> ex)
                            {
                                Log.Error(string.Format("Error executing Ask: {0}", ex.Detail.Exception));
                                error = true;
                            }
                            catch (Exception ex)
                            {
                                Log.Error("Error executing ask", ex);
                                error = true;
                            }
                            Log.Debug(string.Format("Elapsed: {0}, AskID: {1}, OrderID: {2}", watch.ElapsedMilliseconds, ask.AskID, order != null ? order.OrderID.ToString() : "No Order"));
                            if (error)
                            {
                                break;
                            }
                        }
                    }, cancelationToken.Token);
                    tasks.Add(t);
                    i++;
                }
                Console.WriteLine("Press enter to terminate test.");
                Console.ReadLine();
                cancelationToken.Cancel(false);
                Task.WaitAll(tasks.ToArray());
            }
            catch (Exception ex)
            {
                Log.Error("Error in Main Method", ex);
            }
        }