Beispiel #1
0
 /// <summary>
 ///     Sends trade
 /// </summary>
 /// <param name="incoming">Trade</param>
 public void SendTrading(TradingModel incoming) //Sends a message to a client.
 {
     using (TextWriter write = new StringWriter())
     {
         using (XmlWriter newXml = XmlWriter.Create(write))
         {
             newXml.WriteStartDocument();
             newXml.WriteStartElement("Trading");
             newXml.WriteElementString("ID", incoming.Id.ToString());
             newXml.WriteElementString("OwnerID", incoming.Owner.ToString());
             newXml.WriteElementString("BuyerID", incoming.Buyer.ToString());
             newXml.WriteElementString("BuyerName", incoming.BuyerName.ToString());
             newXml.WriteElementString("AssetID", incoming.AssetId.ToString());
             newXml.WriteElementString("ItemID", incoming.ItemId.ToString());
             newXml.WriteElementString("Price", incoming.Price.ToString());
             newXml.WriteElementString("Amount", incoming.Amount.ToString());
             newXml.WriteElementString("Text", incoming.Text);
             newXml.WriteElementString("Time", incoming.Time.ToString());
             newXml.WriteElementString("Accept", incoming.Accept.ToString());
             newXml.WriteElementString("PurcaseName", incoming.PurcaseName);
             newXml.WriteElementString("TotalPrice", incoming.TotalPrice.ToString());
             newXml.WriteEndElement();
             newXml.WriteWhitespace("\n");
             newXml.WriteEndDocument();
         }
         var writer = new StreamWriter(_clientSocket.GetStream());
         writer.WriteLine(write);
         writer.Flush();
     }
 }
Beispiel #2
0
        private void Buy_Market(object o, EventArgs e)
        {
            var dt       = new DateTime();
            var newTrade = new TradingModel(0, 0, 0, "", 0, 0, 0.0, Convert.ToInt32(OMamount.Text), "", dt, 0, "", 0.0);

            if (_asset != null)
            {
                newTrade.AssetId     = _asset.Id;
                newTrade.Price       = (_asset.Price / 20) * (Convert.ToInt32(OMamount.Text) / 5);
                newTrade.PurcaseName = _asset.Name;
            }
            else
            {
                newTrade.ItemId      = _item.Id;
                newTrade.Price       = _item.Value * Convert.ToInt32(OMamount.Text);
                newTrade.PurcaseName = _item.Name;
            }

            EventHandler handler = TalkToBank;

            if (handler != null)
            {
                handler(newTrade, e);
            }
        }
Beispiel #3
0
        /// <summary>
        ///     Recieves trade
        /// </summary>
        /// <param name="doc"></param>
        /// <returns>Trade</returns>
        private static TradingModel RecieveTrading(XmlDocument doc) //Recieves a message from a client.
        {
            var recieveTrading = new TradingModel(0, 0, 0, "", 0, 0, 0, 0, "", new DateTime(), 0, "", 0);

            XmlElement root        = doc["Trading"];
            string     id          = root["ID"].InnerText;
            string     oId         = root["OwnerID"].InnerText;
            string     bId         = root["BuyerID"].InnerText;
            string     bName       = root["BuyerName"].InnerText;
            string     aId         = root["AssetID"].InnerText;
            string     iId         = root["ItemID"].InnerText;
            string     price       = root["Price"].InnerText;
            string     amount      = root["Amount"].InnerText;
            string     text        = root["Text"].InnerText;
            string     time        = root["Time"].InnerText;
            string     accept      = root["Accept"].InnerText;
            string     purcasename = root["PurcaseName"].InnerText;
            string     totalprice  = root["TotalPrice"].InnerText;

            recieveTrading.Id          = Int32.Parse(id);
            recieveTrading.Owner       = Int32.Parse(oId);
            recieveTrading.Buyer       = Int32.Parse(bId);
            recieveTrading.BuyerName   = bName;
            recieveTrading.AssetId     = Int32.Parse(aId);
            recieveTrading.ItemId      = Int32.Parse(iId);
            recieveTrading.Price       = double.Parse(price);
            recieveTrading.Amount      = Int32.Parse(amount);
            recieveTrading.Text        = text;
            recieveTrading.Time        = Convert.ToDateTime(time);
            recieveTrading.Accept      = Int32.Parse(accept);
            recieveTrading.PurcaseName = purcasename;
            recieveTrading.TotalPrice  = double.Parse(totalprice);
            return(recieveTrading);
        }
        /// <summary>
        ///     Edits trade
        /// </summary>
        /// <param name="tm">Trade</param>
        public void EditTrade(TradingModel tm)
        {
            IQueryable <trade> trade =
                from t in _db.trades
                where t.Id == tm.Id
                select t;

            foreach (trade t in trade)
            {
                t.ownerId      = tm.Owner;
                t.buyerId      = tm.Buyer;
                t.buyerName    = tm.BuyerName;
                t.assetId      = tm.AssetId;
                t.itemId       = tm.ItemId;
                t.price        = tm.Price;
                t.amount       = tm.Amount;
                t.tradeText    = tm.Text;
                t.tradeTime    = tm.Time;
                t.accept       = tm.Accept;
                t.purchaseName = tm.PurcaseName;
                t.totalPrice   = tm.TotalPrice;
            }
            try
            {
                _db.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        private async void TradeOfferControl_Loaded(object sender, RoutedEventArgs e)
        {
            var sellerId = TradeOffer?.SellerId.ToString();

            // If the seller name hasn't been loaded yet, look it up
            if (sellerId != null && sellerId == SellerName && TradingModel != null)
            {
                SellerName = await TradingModel.GetTraderNameAsync(TradeOffer.SellerId).ConfigureAwait(true);
            }
        }
Beispiel #6
0
        public async Task <IActionResult> ExtendTradingSession([FromBody] TradingModel request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessage()));
            }

            await _clientSessionsClient.ExtendTradingSession(_lykkePrincipal.GetToken(), TimeSpan.FromMilliseconds(request.Ttl));

            return(Ok());
        }
        public async Task <IActionResult> CreateTradingSession([FromBody] TradingModel request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessage()));
            }

            await _clientSessionsClient.CreateTradingSession(_requestContext.SessionId, TimeSpan.FromMilliseconds(request.Ttl));

            return(Ok());
        }
Beispiel #8
0
        //Conditional Trading - Asking to buy an asset or item from a group
        private void Buy_Trading(object o, EventArgs e)
        {
            var dt       = new DateTime();
            var newTrade = new TradingModel(0, 0, 0, "", 0, 0, double.Parse(CTprice.Text), Convert.ToInt32(CTamount.Text),
                                            "", dt, 0, "", 0);

            if (CTmessage.Text == "Type in a message...")
            {
                newTrade.Text = "";
            }
            else
            {
                newTrade.Text = CTmessage.Text;
            }

            if (groupsListBox.SelectedIndex == -1)
            {
                //buyButton.Content = "Choose a group!";
                return;
            }

            var selected = (GroupModel)groupsListBox.SelectedItem;

            newTrade.Owner = selected.Id;

            if (_asset != null)
            {
                newTrade.AssetId     = _asset.Id;
                newTrade.ItemId      = 0;
                newTrade.PurcaseName = _asset.Name;
            }
            else
            {
                newTrade.AssetId     = 0;
                newTrade.ItemId      = _item.Id;
                newTrade.PurcaseName = _item.Name;
                newTrade.TotalPrice  = newTrade.Price * newTrade.Amount;
            }
            groupsListBox.SelectedIndex = -1;

            EventHandler handler = SendTrade;

            if (handler != null)
            {
                handler(newTrade, e);
            }
        }
Beispiel #9
0
        public void ConfirmWithBank(TradingModel newTrade, bool bank)
        {
            if (bank)
            {
                EventHandler handler = BuyFromMarket;

                if (handler != null)
                {
                    handler(newTrade, new EventArgs());
                }
            }
            else
            {
                bankWarning.Visibility = Visibility.Visible;
                buyButton.Visibility   = Visibility.Collapsed;
            }
        }
        public void AddInboxTrade(TradingModel message)
        {
            bool existing = false;

            for (int i = 0; i < Trades.Count; i++)
            {
                if (Trades[i].Id == message.Id)
                {
                    Trades[i].Accept = message.Accept;
                    existing         = true;
                }
            }
            if (!existing)
            {
                Trades.Add(message);
            }

            Trades = Trades.OrderByDescending(o => o.Time).ToList();
            ShowNotificationIcon("test", null);
            ShowMessages();
        }
        /// <summary>
        ///     Gets trade
        /// </summary>
        /// <param name="id">Trade id</param>
        /// <returns>Trade</returns>
        private TradingModel GetTradeId(int id)
        {
            TradingModel trade = (from trades in _db.trades
                                  where trades.Id == id
                                  select new TradingModel
            {
                Id = trades.Id,
                Owner = trades.ownerId,
                Buyer = trades.buyerId,
                BuyerName = trades.buyerName,
                AssetId = (int)trades.assetId,
                ItemId = (int)trades.itemId,
                Price = (double)trades.price,
                Amount = (int)trades.amount,
                Text = trades.tradeText,
                Time = (DateTime)trades.tradeTime,
                Accept = (int)trades.accept,
                PurcaseName = trades.purchaseName,
                TotalPrice = (double)trades.totalPrice
            }).ToList().Last();

            return(trade);
        }
        /// <summary>
        ///     Adds new trade to DB
        /// </summary>
        /// <param name="tm">Trade</param>
        /// <returns>Trade</returns>
        public TradingModel NewTrade(TradingModel tm)
        {
            var newTrade = new trade
            {
                ownerId      = tm.Owner,
                buyerId      = tm.Buyer,
                buyerName    = tm.BuyerName,
                assetId      = tm.AssetId,
                itemId       = tm.ItemId,
                price        = tm.Price,
                amount       = tm.Amount,
                tradeText    = tm.Text,
                tradeTime    = tm.Time,
                accept       = tm.Accept,
                purchaseName = tm.PurcaseName,
                totalPrice   = tm.TotalPrice
            };

            _db.trades.InsertOnSubmit(newTrade);

            try
            {
                _db.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            int id = (from t in _db.trades
                      orderby t.Id descending
                      select t.Id).First();

            TradingModel outgoing = GetTradeId(id);

            return(outgoing);
        }
Beispiel #13
0
        public void TestInitialize()
        {
            _statisticsServiceMock        = new Mock <IStatisticsService>();
            _forexMarketServiceMock       = new Mock <IForexMarketService>();
            _forexTradingAgentServiceMock = new Mock <IForexTradingAgentService>();
            _forexTradingServiceMock      = new Mock <IForexTradingService>();

            _periods = new List <string> {
                "300", "600", "900", "1800"
            };

            _months = new List <string>();
            for (var i = 1; i <= 12; i++)
            {
                _months.Add(string.Format("{0:00}", i));
            }

            _statisticsSequence = new List <StatisticsSequenceDto>
            {
                new StatisticsSequenceDto
                {
                    C45Errors = 10,
                    C50Errors = 9,
                    Cases     = 500,
                    Chunk     = 0
                },
                new StatisticsSequenceDto
                {
                    C45Errors = 10,
                    C50Errors = 9,
                    Cases     = 499,
                    Chunk     = 1
                },
                new StatisticsSequenceDto
                {
                    C45Errors = 10,
                    C50Errors = 9,
                    Cases     = 501,
                    Chunk     = 2
                },
                new StatisticsSequenceDto
                {
                    C45Errors = 10,
                    C50Errors = 9,
                    Cases     = 498,
                    Chunk     = 3
                },
                new StatisticsSequenceDto
                {
                    C45Errors = 10,
                    C50Errors = 9,
                    Cases     = 502,
                    Chunk     = 4
                }
            };

            _nextRecordCalls        = 0;
            _nextRecordCallsOverall = 0;
            _forexTrees             = new List <ForexTreeData>
            {
                new ForexTreeData
                {
                    Bid = 1.1111,
                    Ask = 1.1115
                },
                new ForexTreeData
                {
                    Bid = 1.1110,
                    Ask = 1.1114
                },
                new ForexTreeData
                {
                    Bid = 1.1109,
                    Ask = 1.1112
                },
                new ForexTreeData
                {
                    Bid = 1.1107,
                    Ask = 1.1110
                },
                new ForexTreeData
                {
                    Bid = 1.1105,
                    Ask = 1.1105
                }
            };

            _forexMarketServiceMock
            .Setup(x => x.NextRecord())
            .Returns(_forexTrees[_nextRecordCalls])
            .Callback(() => {
                _nextRecordCalls++;
                _nextRecordCallsOverall++;
            });

            _forexTradingAgentServiceMock
            .Setup(x => x.ClassifyRecord(It.IsAny <ForexTreeData>()))
            .Returns(MarketAction.Buy);

            _forexMarketServiceMock
            .Setup(x => x.IsDone())
            .Returns(() => _nextRecordCalls == _forexTrees.Count);

            _forexMarketServiceMock
            .Setup(x => x.Clear())
            .Callback(() => _nextRecordCalls = 0);

            _statisticsServiceMock
            .SetupGet(x => x.StatisticsSequence)
            .Returns(_statisticsSequence);

            _forexTradingServiceMock
            .Setup(x => x.BidSize)
            .Returns(2000.0);

            _model = new TradingModel(
                _statisticsServiceMock.Object,
                _forexMarketServiceMock.Object,
                _forexTradingAgentServiceMock.Object,
                _forexTradingServiceMock.Object
                );
        }
Beispiel #14
0
 /// <summary>
 ///     Performs the asset trade
 /// </summary>
 /// <param name="tm">The Trade</param>
 /// <returns>The changed item inventories</returns>
 public static List <ItemInventoryModel> TradeItem(TradingModel tm)
 {
     return(TradingDal.TradeItem(tm));
 }
Beispiel #15
0
 /// <summary>
 ///     Performs the asset trade
 /// </summary>
 /// <param name="tm">The Trade</param>
 /// <returns>The changed asset inventories</returns>
 public static List <AssetInventoryModel> TradeAsset(TradingModel tm)
 {
     return(TradingDal.TradeAsset(tm));
 }
Beispiel #16
0
 /// <summary>
 ///     Edits the trade in DB
 /// </summary>
 /// <param name="tm">The Trade</param>
 public static void EditTrade(TradingModel tm)
 {
     TradingDal.EditTrade(tm);
 }
Beispiel #17
0
 /// <summary>
 ///     Adds new trade to DB
 /// </summary>
 /// <param name="tm">The trade</param>
 /// <returns>The trade</returns>
 public static TradingModel NewTrade(TradingModel tm)
 {
     return(TradingDal.NewTrade(tm));
 }
        /// <summary>
        ///     Performs item trade
        /// </summary>
        /// <param name="tm">Trade</param>
        /// <returns>Changed item inventories</returns>
        public List <ItemInventoryModel> TradeItem(TradingModel tm)
        {
            var itemInventories = new List <ItemInventoryModel>();
            var itemInventory   = new ItemInventoryModel();

            IQueryable <itemInventory> query =
                (from itemInv in _db.itemInventories
                 where itemInv.itemId == tm.ItemId &&
                 itemInv.teamId == tm.Buyer
                 select itemInv);

            if (query.Count() != 0)
            {
                itemInventory result = query.First();
                result.quantity += tm.Amount;
                if (result.quantity != null)
                {
                    itemInventory = new ItemInventoryModel(result.Id, tm.Buyer, tm.ItemId, (double)result.quantity);
                }
            }

            else
            {
                itemInventory = new ItemInventoryModel(0, tm.Buyer, tm.ItemId, tm.Amount);
                _inventoryDal.BuyItem(itemInventory);
            }

            // Submit the changes to the database.
            try
            {
                _db.SubmitChanges();
                itemInventories.Add(itemInventory);
                ValueDal.IncreaseOrDecreaseCash(tm.Buyer, -tm.Price);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                // Provide for exceptions.
            }

            if (tm.Owner != 0)
            {
                query = (from itemInv in _db.itemInventories
                         where itemInv.itemId == tm.ItemId &&
                         itemInv.teamId == tm.Owner
                         select itemInv);

                if (query.Count() != 0)
                {
                    itemInventory result = query.First();
                    result.quantity -= tm.Amount;
                    if (result.quantity != null)
                    {
                        itemInventory = new ItemInventoryModel(result.Id, tm.Buyer, tm.ItemId, (double)result.quantity);
                    }
                }

                // Submit the changes to the database.
                try
                {
                    _db.SubmitChanges();
                    itemInventories.Add(itemInventory);
                    ValueDal.IncreaseOrDecreaseCash(tm.Owner, tm.Price);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    // Provide for exceptions.
                }
            }

            return(itemInventories);
        }
        /// <summary>
        ///     Performs asset trade
        /// </summary>
        /// <param name="tm">Trade</param>
        /// <returns>Changed asset inventories</returns>
        public List <AssetInventoryModel> TradeAsset(TradingModel tm)
        {
            var assetInventories = new List <AssetInventoryModel>();
            var assetInventory   = new AssetInventoryModel();

            IQueryable <assetInventory> query =
                (from assetInv in _db.assetInventories
                 where assetInv.assetId == tm.AssetId &&
                 assetInv.teamId == tm.Buyer
                 select assetInv);

            if (query.Count() != 0)
            {
                assetInventory result = query.First();
                result.share += tm.Amount;
                if (result.share != null)
                {
                    assetInventory = new AssetInventoryModel(result.Id, tm.AssetId, tm.Buyer, (int)result.share);
                }
            }

            else
            {
                var newAssetInventory = new AssetInventoryModel(0, tm.AssetId, tm.Buyer, tm.Amount);
                assetInventory = _inventoryDal.BuyAsset(newAssetInventory);
            }

            // Submit the changes to the database.
            try
            {
                _db.SubmitChanges();
                assetInventories.Add(assetInventory);
                ValueDal.IncreaseOrDecreaseCash(tm.Buyer, -tm.Price);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                // Provide for exceptions.
            }

            if (tm.Owner != 0)
            {
                query = (from assetInv in _db.assetInventories
                         where assetInv.assetId == tm.AssetId &&
                         assetInv.teamId == tm.Owner
                         select assetInv);
                if (query.Count() != 0)
                {
                    assetInventory result = query.First();
                    result.share -= tm.Amount;
                    if (result.share != null)
                    {
                        assetInventory = new AssetInventoryModel(result.Id, tm.AssetId, tm.Owner, (int)result.share);
                    }
                }

                // Submit the changes to the database.
                try
                {
                    _db.SubmitChanges();
                    assetInventories.Add(assetInventory);
                    ValueDal.IncreaseOrDecreaseCash(tm.Owner, tm.Price);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    // Provide for exceptions.
                }
            }

            return(assetInventories);
        }
Beispiel #20
0
        /// <summary>
        ///     Communcates with server
        /// </summary>
        private void DoChat()
        {
            Thread.Sleep(100);
            while (true)
            {
                Thread.Sleep(10);
                string     incomeData;
                TextReader reader = new StreamReader(_clientSocket.GetStream());

                if (_clientSocket.Available > 0)
                {
                    var doc = new XmlDocument();

                    while ((incomeData = reader.ReadLine()) != null && (incomeData.StartsWith("<") && incomeData.EndsWith(">")))
                    {
                        Console.WriteLine(incomeData);
                        doc.LoadXml(incomeData);
                        XmlElement root = doc.DocumentElement;
                        if (root != null)
                        {
                            string rootText = root.Name;

                            if (rootText == "Timestamp")
                            {
                                DateTime s = RecieveTimeStamp(doc);
                                RecieveObject(s, null);
                            }

                            else if (rootText == "Cashlist")
                            {
                                List <CashPerTeamModel> s = RecieveCurrentCash(doc);
                                RecieveObject(s, null);
                            }

                            else if (rootText == "Message")
                            {
                                MessageModel incoming = RecieveMessage(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "Trading")
                            {
                                TradingModel incoming = RecieveTrading(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "Notification")
                            {
                                NotificationModel incoming = RecieveNotification(doc);
                                RecieveObject(incoming, null);
                            }
                            else if (rootText == "Asset")
                            {
                                AssetModel incoming = RecieveAsset(doc);
                                RecieveObject(incoming, null);
                            }
                            else if (rootText == "AssetInventory")
                            {
                                AssetInventoryModel incoming = RecieveAssetInventory(doc);
                                RecieveObject(incoming, null);
                            }
                            else if (rootText == "AssetList")
                            {
                                List <AssetModel> incoming = RecieveAssetList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "AssetInventoryList")
                            {
                                List <AssetInventoryModel> incoming = RecieveAssetInventoryList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "Item")
                            {
                                ItemModel incoming = RecieveItem(doc);
                                RecieveObject(incoming, null);
                            }
                            else if (rootText == "ItemInventory")
                            {
                                ItemInventoryModel incoming = RecieveItemInventory(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "ItemList")
                            {
                                List <ItemModel> incoming = RecieveItemList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "ItemInventoryList")
                            {
                                List <ItemInventoryModel> incoming = RecieveItemInventoryList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "GroupList")
                            {
                                List <GroupModel> incoming = RecieveGroupList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "MessageList")
                            {
                                List <MessageModel> incoming = RecieveMessageList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "NotificationList")
                            {
                                List <NotificationModel> incoming = RecieveNotificationList(doc);
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "TradingList")
                            {
                                List <TradingModel> incoming = RecieveTradingList(doc);
                                //Console.WriteLine("test");
                                RecieveObject(incoming, null);
                            }

                            else if (rootText == "Groupnumber")
                            {
                                int groupNumber = RecieveGroupNumber(doc);
                                RecieveObject(groupNumber, null);
                            }

                            else if (rootText == "Pause")
                            {
                                bool paused = RecievePauseState(doc);
                                RecieveObject(paused, null);
                            }
                        }
                    }
                }
            }
        }
 public IResponse PostClientSession(TradingModel model, string authorization)
 {
     return(Request.Post("/client/session").AddJsonBody(model).WithHeaders("Authorization", authorization).Build().Execute());
 }