Пример #1
0
        public void OrderStorageTest()
        {
            string        path    = "storage.xml";
            OrdersStorage storage = new OrdersStorage(path);

            storage.CreateIfNotExists();
            Assert.IsTrue(storage.StorageExists());
            storage.DeleteIfExists();
            Assert.IsFalse(storage.StorageExists());
        }
Пример #2
0
 private static async Task PrintStorage(OrdersStorage storage)
 {
     foreach (var order in await storage.GetAllOrders())
     {
         Console.WriteLine($"Order with Id:{order.Id}");
         foreach (var orderItem in order.Items)
         {
             PrintOrderItem(orderItem);
         }
     }
 }
Пример #3
0
        static void MainOld(string[] args)
        {
            var algoList = new Algorithms();


            var ordersStorage = new OrdersStorage(algoList.First(a => a.Id == (byte)AlgoNiceHashEnum.Lbry), 2000);

            ordersStorage.Entities.ListChanged += EntitiesOnListChanged;

            System.Console.WriteLine();
            System.Console.ReadKey();
        }
Пример #4
0
        /// <summary>
        /// Parameterless constructor of application's main window.
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            EditOrderButton.IsEnabled  = false;
            DeletOrderButton.IsEnabled = false;
            try
            {
                _storage = new OrdersStorage("storage.xml");
                _storage.CreateIfNotExists();
                var ordersList = _storage.RetrieveAllIds();
                _nextId = ordersList.Count != 0 ? ordersList.Keys.Last() + 1 : 0;
            }
            catch (NullReferenceException e)
            {
                Util.Error("Storage fatal error", e.Message);
                Application.Current.Shutdown();
            }
            this.DataContext = _order;
            _validator       = new Validator(
                new List <TextBox>
            {
                FirstName,
                LastName,
                Email,
                PhoneNumber,
                ClientAddressCity,
                ClientAddressStreet,
                ClientAddressBuildingNumber,
                ShopName,
                ShopAddressCity,
                ShopAddressStreet,
                ShopAddressBuildingNumber,
                GoodsCode,
                GoodsWeight
            },
                Email,
                PhoneNumber);
            ResetOrderInstance();
            Closing += new System.ComponentModel.CancelEventHandler((object sender, System.ComponentModel.CancelEventArgs e) =>
            {
                OnWindowClose(sender, e);
                if (cans)
                {
                    e.Cancel = true;
                }
            });
            _instance = this;
            SetTextBoxAction();
            setUpdater();
        }
Пример #5
0
        private static async Task ExecuteDemo()
        {
            var orderId = await CreateOrders();

            var storage = new OrdersStorage(ApiUrl, new ConsoleLoggerWriter());

            var mainOrder = await storage.GetOrderById(orderId);

            await mainOrder.AddOrderItem("Xiaomi Mi10", "Brand new chinese phone", 4);

            var iphoneItems = new List <IOrderItem>();

            Console.WriteLine("Orders in storage");
            foreach (var order in await storage.GetAllOrders())
            {
                Console.WriteLine($"Order with Id:{order.Id}");
                foreach (var orderItem in order.Items)
                {
                    PrintOrderItem(orderItem);
                    if (orderItem.Name.Contains("Iphone"))
                    {
                        iphoneItems.Add(orderItem);
                        continue;
                    }

                    if (orderItem.Name.Contains("Samsung"))
                    {
                        await orderItem.RemoveItem();
                    }
                }
            }

            foreach (var item in iphoneItems)
            {
                await item.ChangeQuantity(999);
            }

            Console.WriteLine("Orders after change");
            await PrintStorage(storage);

            Console.WriteLine("Purging all orders");
            foreach (var order in await storage.GetAllOrders())
            {
                await order.Purge();
            }

            await PrintStorage(storage);
        }
Пример #6
0
        public void ListenAlgo(IAlgo algo)
        {
            var callbackChannel = OperationContext.Current.GetCallbackChannel <IDataCallBacks>();

            if (!_subscribers.ContainsKey(callbackChannel))
            {
                _subscribers.Add(callbackChannel, algo.Id);
            }

            if (!_ordersStorages.ContainsKey(algo.Id))
            {
                var orderStorageForAlgo = new OrdersStorage(algo, 1000);

                orderStorageForAlgo.Entities.ListChanged += Entities_ListChanged;
                //orderStorageForAlgo.Entities.BeforeRemove += Entities_BeforeRemove;

                _ordersStorages.Add(algo.Id, orderStorageForAlgo);
            }
        }
Пример #7
0
 public OrderAttributesService(OrdersStorage storage)
 {
     _storage = storage;
 }
Пример #8
0
 public OrdersController(IConfiguration config)
 {
     _orders = new OrdersStorage(config);
 }
Пример #9
0
 public OrderTypesService(OrdersStorage storage)
 {
     _storage = storage;
 }
Пример #10
0
 public OrderStatusChangesService(OrdersStorage storage)
 {
     _storage = storage;
 }
Пример #11
0
 public OrderOperations(OrdersStorage orders)
 {
     _orders = orders.Orders;
 }
Пример #12
0
 public OrderCommentsService(OrdersStorage storage)
 {
     _storage = storage;
 }
Пример #13
0
        static void Main(string[] args)
        {
            var targets       = new Dictionary <short, decimal>();
            var ordersStorage = new OrdersStorage(new Algorithms(onlyNiceHash: false).First(a => a.Id == (byte)AlgoNiceHashEnum.Skunk), 2000, targetLevels: new short[] { 20, 40, 60, 80 });

            ordersStorage.TargetLevelChanged += (percent, price) =>
            {
                if (!targets.ContainsKey(percent))
                {
                    targets.Add(percent, price);
                }

                targets[percent] = price;
            };

            var pools = new[]
            {
                //YiiPoolEnum.Ahashpool, YiiPoolEnum.BlazePool, YiiPoolEnum.BlockMasters, YiiPoolEnum.HashRefinery,
                YiiPoolEnum.ZergPool, YiiPoolEnum.Zpool, YiiPoolEnum.NiceHash
            };

            var poolsInstances = new List <IYiiPool>();

            foreach (var pool in pools)
            {
                var poolInstance = YiiFactory.Create(pool);
                if (pool == YiiPoolEnum.NiceHash)
                {
                    poolInstance.LoopCommand(6000, YiiCommandEnum.Api, new Dictionary <string, string> {
                        { "method", "simplemultialgo.info" }
                    });
                }
                else
                {
                    poolInstance.LoopCommand(6000, YiiCommandEnum.Status);
                }

                poolsInstances.Add(poolInstance);

                poolInstance.StatusReceived += (sender, algos) =>
                {
                    if (DateTime.Now.TimeOfDay - _lastPrintConsole < new TimeSpan(0, 0, 0, 3))
                    {
                        return;
                    }

                    lock (_syncObject)
                    {
                        _lastPrintConsole = DateTime.Now.TimeOfDay;
                        System.Console.Clear();
                        System.Console.WriteLine(DateTime.Now);

                        var poolsString       = string.Empty.PadRight(20, ' ');
                        var lastQueriesString = string.Empty.PadRight(20, ' ');
                        foreach (var parsedPool in poolsInstances)
                        {
                            poolsString       += parsedPool.ToString().PadRight(14, ' ');
                            lastQueriesString += ((int)(DateTime.Now - parsedPool.LastQuery).TotalSeconds).ToString()
                                                 .PadRight(14, ' ');
                        }

                        System.Console.WriteLine(poolsString);
                        System.Console.WriteLine(lastQueriesString);

                        foreach (var parsedAlgoName in poolsInstances.SelectMany(a => a.PoolsAlgos).Select(a => a.Key).Distinct())
                        {
                            System.Console.Write($"{parsedAlgoName.PadRight(16, ' ')}");

                            var currentSum   = 0.0;
                            var averageSum   = 0.0;
                            var averageCount = 0;

                            foreach (var instance in poolsInstances)
                            {
                                if (instance.PoolsAlgos.ContainsKey(parsedAlgoName) &&
                                    instance.PoolType != YiiPoolEnum.NiceHash)
                                {
                                    averageCount++;
                                    averageSum += instance.PoolsAlgos[parsedAlgoName].EstimateLast24H;
                                    currentSum += instance.PoolsAlgos[parsedAlgoName].EstimateCurrent;
                                }
                            }

                            var average24H     = averageSum / averageCount;
                            var averageCurrent = currentSum / averageCount;

                            foreach (var instance in poolsInstances)
                            {
                                System.Console.ForegroundColor = ConsoleColor.DarkGray;
                                if (instance.PoolsAlgos.ContainsKey(parsedAlgoName))
                                {
                                    if (instance.PoolType != YiiPoolEnum.NiceHash)
                                    {
                                        var percent = instance.PoolsAlgos[parsedAlgoName].EstimateCurrent * 100 /
                                                      average24H;
                                        if (percent > 150)
                                        {
                                            System.Console.ForegroundColor = ConsoleColor.DarkRed;
                                        }
                                        else if (percent > 130)
                                        {
                                            System.Console.ForegroundColor = ConsoleColor.Yellow;
                                        }

                                        System.Console.Write(instance.PoolsAlgos[parsedAlgoName].EstimateCurrent.ToString("### ### ###.### ### 000"));
                                    }
                                    else
                                    {
                                        System.Console.Write(instance.PoolsAlgos[parsedAlgoName].EstimateCurrent.ToString("### ### ###.### ### 000"));
                                        var moreAt = averageCurrent * 100 /
                                                     instance.PoolsAlgos[parsedAlgoName].EstimateCurrent;

                                        if (moreAt > 150)
                                        {
                                            System.Console.ForegroundColor = ConsoleColor.DarkRed;
                                        }
                                        else if (moreAt > 130)
                                        {
                                            System.Console.ForegroundColor = ConsoleColor.Yellow;
                                        }

                                        System.Console.Write($" ({moreAt:F1}%)".PadRight(10, ' '));
                                        System.Console.ForegroundColor = ConsoleColor.White;
                                        System.Console.Write($"{parsedAlgoName.PadLeft(20, ' ')}");
                                        System.Console.ForegroundColor = ConsoleColor.DarkGray;
                                    }
                                }
                                else
                                {
                                    System.Console.Write("  ".PadRight(14, '-'));
                                }
                            }
                            System.Console.ForegroundColor = ConsoleColor.White;
                            System.Console.WriteLine();
                        }

                        System.Console.WriteLine();
                        foreach (var target in targets)
                        {
                            System.Console.WriteLine($"{target.Key} % => {target.Value}");
                        }
                    }
                };
            }

            System.Console.ReadLine();
        }
Пример #14
0
 public OrdersController()
 {
     ordersStorageInst = OrdersStorage.GetInstance();
 }