Example #1
0
 public void Consume(NewOrderMessage pong)
 {
     State.Add(pong);
     sagaId    = Id;
     LastState = State;
     wait.Set();
 }
Example #2
0
        public void Add(NewOrderMessage request)
        {
            try
            {
                string sqlInsertOrder   = "INSERT INTO Orders (OrderId, StoreId,OrderDate,OrderStatusId) Values (@OrderId, @StoreId,@OrderDate,@OrderStatusId)";
                string sqlInsertProduct = " INSERT INTO Product (ProductId, OrderId) Values (@ProductId, @OrderId)";

                using (var connection = new SqlConnection(_connectionString))
                {
                    connection.Execute(sqlInsertOrder, new { request.OrderId, request.StoreId, @OrderDate = DateTime.Now, @OrderStatusId = 1 });

                    if (request.Products == null || request.Products.Count == 0)
                    {
                        return;
                    }
                    foreach (var product in request.Products)
                    {
                        connection.Execute(sqlInsertProduct, new { @ProductId = product.ProductId, @OrderId = request.OrderId });
                    }
                }
            }
            catch (System.Exception ex)
            {
            }
        }
Example #3
0
        public void Publish(NewOrderMessage newOrderMessage)
        {
            var factory = new ConnectionFactory()
            {
                UserName = "******",
                Password = "******",
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
                    var consumer = new EventingBasicConsumer(channel);
                    try
                    {
                        string jsonString = JsonConvert.SerializeObject(newOrderMessage);
                        var    body       = Encoding.UTF8.GetBytes(jsonString);
                        channel.BasicPublish("", QUEUE_NAME, null, body);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
        }
        public void AddNewOrder(Order newOrder)
        {
            var orderId = Guid.NewGuid();

            newOrder.Id = orderId;

            Datastore.TryAdd(orderId, newOrder);

            using (var bus = RabbitHutch.CreateBus(Settings.Default.RabbitMqConnectionString))
            {
                var identity  = User.Identity as ClaimsIdentity;
                var subjectId = identity?.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;

                // TODO: re-think data/message shapes, coupling, and mapping <- pragmatic?
                var message = new NewOrderMessage
                {
                    UserId = subjectId,
                    Order  = Mapper.Map <QueuingMessages.Order>(newOrder)
                };

                bus.Publish(message);

                GlobalHost.ConnectionManager.GetHubContext <OrdersHub>()
                .Clients.Group(message.UserId)
                .orderCreated();
            }
        }
Example #5
0
        private Task Handle(Message arg1, CancellationToken arg2)
        {
            NewOrderMessage newOrderMessage = JsonConvert.DeserializeObject <NewOrderMessage>(Encoding.UTF8.GetString(arg1.Body));

            _orderSqlRepository.Add(newOrderMessage);
            return(Task.CompletedTask);
        }
Example #6
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("RECEIVER has started. \nPress any key to stop.");
            var factory = new ConnectionFactory()
            {
                UserName = "******",
                Password = "******",
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var             body            = ea.Body;
                        var             jsonString      = Encoding.UTF8.GetString(body);
                        NewOrderMessage newOrderMessage = JsonConvert.DeserializeObject <NewOrderMessage>(jsonString);
                        Console.WriteLine($"Received{jsonString}");
                        using (var context = new FoodServiceContext())
                        {
                            using (var transaction = context.Database.BeginTransaction())
                            {
                                try
                                {
                                    context.Order.Add(newOrderMessage.NewOrder);
                                    context.OrderCustomer.Add(newOrderMessage.NewOrderCustomer);
                                    context.OrderEmployee.Add(newOrderMessage.NewOrderEmployee);
                                    context.OrderItem.AddRange(newOrderMessage.NewOrderItems);

                                    context.SaveChanges();
                                    transaction.Commit();

                                    channel.BasicAck(ea.DeliveryTag, false);
                                }
                                catch (Exception e)
                                {
                                    transaction.Rollback();
                                }
                            }
                        }
                    };
                    try
                    {
                        channel.BasicConsume(QUEUE_NAME, false, consumer);
                        Console.ReadKey();
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
        }
Example #7
0
        private void OrderButton_Click(Object sender, EventArgs e)
        {
            var customerName = NameTextBox.Text;
            var drink        = DrinkComboBox.Text;
            var drinkSize    = (DrinkSize)Enum.Parse(typeof(DrinkSize), SizeComboBox.Text);

            var newOrder = new NewOrderMessage(customerName, drink, drinkSize);

            _bus.Send(newOrder);
        }
Example #8
0
        //private void OrdineAnnullatoDalDestinatario(AnnulloOrdineMessage message)
        //{
        //    throw new NotImplementedException();
        //}

        private void OrdineInserito(NewOrderMessage message)
        {
            Console.WriteLine("OrdineInserito {0} {1} {2}", message.CorrelationId, message.OrderId, message.OrderType);
            var orderInsertedMessage = new OrderInsertedMessage
            {
                CorrelationId = message.CorrelationId,
                OrderId       = message.OrderId,
            };

            Bus.Context().Respond(orderInsertedMessage);
        }
        public void ProcessNewOrder(NewOrderMessage message)
        {
            Name  = message.Name;
            Drink = string.Format("{0} {1}", message.Size, message.Item);

            Console.WriteLine(string.Format("{0} for {1}, got it!", Drink, Name));

            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(i * 200);
                Console.WriteLine("[wwhhrrrr....psssss...chrhrhrhrrr]");
            }
        }
        public void Add(NewOrderMessage request)
        {
            var collection          = _mongoHelper.MongoDatabase.GetCollection <BsonDocument>("order");
            var bsonDocumentRequest = new BsonDocument(
                new Dictionary <string, string> {
                { "OrderId", request.OrderId.ToString() },
                { "StoreId", request.StoreId.ToString() },
                { "Products", JsonConvert.SerializeObject(request.Products) }
            }
                );

            collection.InsertOne(bsonDocumentRequest);
        }
        public void Handle(NewOrderMessage message)
        {
            _view.NewOrder(new NewOrderView(message));

            Data.Drink        = message.Drink;
            Data.DrinkSize    = message.DrinkSize;
            Data.OrderId      = message.OrderId;
            Data.CustomerName = message.CustomerName;
            Data.Amount       = CalculateAmountAccordingTo(message.DrinkSize);

            Bus.Publish(new PrepareOrderMessage(Data.CustomerName, Data.Drink, Data.DrinkSize, Data.OrderId));
            Bus.Reply(new PaymentRequestMessage(Data.Amount, message.CustomerName, message.OrderId));
        }
        public NewOrderMessage ConvertToNewOrderMessage()
        {
            NewOrderMessage newOrder = new NewOrderMessage()
            {
                OrderId       = OrderId,
                ProductionIds = ProductionIds,
                Products      = ProductsOrder.Select(p => new ProductMessage()
                {
                    ProductId = p.ProductId
                }).ToList(),
                Total = this.ProductsOrder.Sum(p => p.Price)
            };

            return(newOrder);
        }
Example #13
0
        public void TopicSendMsg()
        {
            var send_msg = new NewOrderMessage
            {
                CreatedTime = DateTime.Now,
                OrderNum    = "22222",
                PayType     = 1,
                Price       = 100M,
                ProductCode = 1,
                Source      = Guid.NewGuid().ToString(),
                routeKey    = "com.mq.rabbit.order"//这个根据自己定义,路由键,客户端消费需要订阅,匹配这个路由键才可以消费到。
            };

            rabbitMQProducer.TopicSend(send_msg);
        }
Example #14
0
        public void FanoutSendMsg()
        {
            var send_msg = new NewOrderMessage
            {
                CreatedTime = DateTime.Now,
                OrderNum    = "33333",
                PayType     = 1,
                Price       = 100M,
                ProductCode = 1,
                Source      = Guid.NewGuid().ToString()
            };

            ///fanout模式
            rabbitMQProducer.FanoutSend(send_msg);
        }
Example #15
0
        public void Handle(NewOrderMessage message)
        {
            _view.NewOrder(new NewOrderView(message));

            Data.Drink        = message.Drink;
            Data.DrinkSize    = (int)message.DrinkSize;
            Data.OrderId      = message.OrderId;
            Data.CustomerName = message.CustomerName;
            Data.Amount       = CalculateAmountAccordingTo(message.DrinkSize);

            Bus.Send(new PrepareOrderMessage {
                CustomerName = Data.CustomerName, Drink = Data.Drink, DrinkSize = (DrinkSize)Data.DrinkSize, OrderId = Data.OrderId
            });
            Bus.Reply(new PaymentRequestMessage {
                OrderId = Data.OrderId, CustomerName = Data.CustomerName, Amount = Data.Amount
            });
        }
        void ProcessNewOrder(NewOrderMessage message)
        {
            _name   = message.Name;
            _item   = message.Item;
            _size   = message.Size;
            _amount = GetPriceForSize(_size);

            Console.WriteLine(string.Format("I've received an order for a {0} {1} for {2}.", _size, _item, _name));

            var paymentDueMessage = new PaymentDueMessage
            {
                CorrelationId = message.CorrelationId,
                Amount        = _amount,
            };

            Bus.Context().Respond(paymentDueMessage);
        }
Example #17
0
        public IHttpActionResult AddNewOrder(Order newOrder)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var orderId = Guid.NewGuid();

            newOrder.Id = orderId;

            try
            {
                Datastore.TryAdd(orderId, newOrder);
            }
            catch (Exception e)
            {
                string message = "We could not add the new order.";
                Log.Error(message + $" Reason: {0}", e);

                throw new OrderServiceException(message);
            }

            // TODO: Retry & exception handling
            using (var bus = RabbitHutch.CreateBus(Settings.Default.RabbitMqConnectionString))
            {
                var identity  = User.Identity as ClaimsIdentity;
                var subjectId = identity?.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;

                var message = new NewOrderMessage
                {
                    UserId = subjectId,
                    Order  = Mapper.Map <QueuingMessages.Order>(newOrder)
                };

                // TODO: Exception handling
                bus.Publish(message);

                GlobalHost.ConnectionManager.GetHubContext <OrdersHub>()
                .Clients.Group(message.UserId)
                .orderCreated();
            }

            return(Ok(newOrder));
        }
Example #18
0
        public void DirecSendMsgWihtExchange()
        {
            var send_msg = new NewOrderMessage
            {
                CreatedTime  = DateTime.Now,
                OrderNum     = "111111",
                PayType      = 1,
                Price        = 100M,
                ProductCode  = 1,
                Source       = Guid.NewGuid().ToString(),
                exchangeName = "directExchange",
                queueName    = "directOrder",
                routeKey     = "order1"
            };

            ///direct模式
            rabbitMQProducer.DirectSend(send_msg);
        }
        public ActionResult AddNewOrder([FromBody] DTOs.Order newOrder)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var orderId = Guid.NewGuid();

            newOrder.Id      = orderId;
            newOrder.Created = DateTime.UtcNow;

            try
            {
                Datastore.TryAdd(orderId, newOrder);
            }
            catch (Exception e)
            {
                string message = "We could not add the new order.";
                Log.Error(message + $" Reason: {0}", e);

                throw new OrderServiceException(message);
            }

            // TODO: Retry & exception handling
            using (var bus = RabbitHutch.CreateBus(_settings.RabbitMqConnectionString))
            {
                var identity  = User.Identity as ClaimsIdentity;
                var subjectId = identity?.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;

                var message = new NewOrderMessage
                {
                    UserId = subjectId,
                    Order  = Mapper.Map <Order>(newOrder)
                };

                // TODO: Exception handling
                bus.Publish(message);

                _orderHubContext.Clients.Group(message.UserId).SendAsync("orderCreated");
            }

            return(Ok());
        }
Example #20
0
        public void TopicSendMsgWihtExchange()
        {
            var send_msg = new NewOrderMessage
            {
                CreatedTime  = DateTime.Now,
                OrderNum     = "22222",
                PayType      = 1,
                Price        = 100M,
                ProductCode  = 1,
                Source       = Guid.NewGuid().ToString(),
                exchangeName = "topicExchange",
                queueName    = "topicOrder",
                routeKey     = "com.mq.rabbit.order"
            };

            ///Topic模式
            //var routingKey = "com.mq.rabbit.order";//这个根据自己定义,路由键,客户端消费需要订阅,匹配这个路由键才可以消费到。
            rabbitMQProducer.TopicSend(send_msg);
        }
Example #21
0
        private void button1_Click(object sender, EventArgs e)
        {
            _transactionId = CombGuid.Generate();

            if (_unsubscribeToken != null)
            {
                _unsubscribeToken();
            }
            _unsubscribeToken = Bus.SubscribeInstance(this);

            var message = new NewOrderMessage
            {
                CorrelationId = _transactionId,
                OrderId       = ++_orderId,
                OrderType     = "Ordine diretto"
            };

            //Console.WriteLine("Prima del publish!");
            Bus.Publish(message, x => x.SetResponseAddress(Bus.Endpoint.Address.Uri));
        }
Example #22
0
        public void Run()
        {
            Console.WriteLine("Sono nel Run!");
            _transactionId = CombGuid.Generate();

            if (_unsubscribeToken != null)
            {
                _unsubscribeToken();
            }
            _unsubscribeToken = Bus.SubscribeInstance(this);

            var message = new NewOrderMessage
            {
                CorrelationId = _transactionId,
                OrderId       = 1,
                OrderType     = "Ordine diretto"
            };

            Console.WriteLine("Prima del publish!");
            Bus.Publish(message, x => x.SetResponseAddress(Bus.Endpoint.Address.Uri));
        }
Example #23
0
        public void Execute(NewOrderMessage message)
        {
            Data.CorrelationId = Guid.NewGuid();
            Data.Meal          = message.Name;
            Data.Size          = message.Size;

            Console.WriteLine("New order recieved: Meal - {0}, Size - {1}, OrderId - {2}", message.Name, message.Size, message.CorrelationId);

            var prepFoodMessage = new PrepFoodMessage(Data.CorrelationId)
            {
                BunSize = message.Size
            };

            Console.WriteLine("Prepping meal");
            _bus.Publish(prepFoodMessage);

            var flipBurgerMessage = new CookBurgerMessage(Data.CorrelationId)
            {
                BurgerSize = message.Size
            };

            Console.WriteLine("Cooking burger");
            _bus.Publish(flipBurgerMessage);
        }
Example #24
0
        private void button1_Click(object sender, EventArgs e)
        {
            string drink = comboBox1.Text;
            string size  = comboBox2.Text;
            string name  = txtName.Text;

            _transactionId = CombGuid.Generate();

            if (_unsubscribeToken != null)
            {
                _unsubscribeToken();
            }
            _unsubscribeToken = Bus.SubscribeInstance(this);

            var message = new NewOrderMessage
            {
                CorrelationId = _transactionId,
                Item          = drink,
                Name          = name,
                Size          = size,
            };

            Bus.Publish(message, x => x.SetResponseAddress(Bus.Endpoint.Address.Uri));
        }
        public IActionResult AddNewOrder(CreateOrderModel createOrderModel)
        {
            var timestamp = DateTime.UtcNow;

            var newOrder = new Order
            {
                CustomerIdRef = Int32.Parse(createOrderModel?.CustomerSelected),
                EmployeeRef   = Int32.Parse(createOrderModel?.EmployeeSelected),
                PaymentIdRef  = Int32.Parse(createOrderModel?.PaymentSelected),
                Description   =
                    $"Ordered at {timestamp.ToShortDateString()} by {Int32.Parse(createOrderModel?.CustomerSelected)}. Employee: {Int32.Parse(createOrderModel?.EmployeeSelected)}",
                Status    = (new OrderStatus {
                    Status = OrderStatusEnum.Pending
                }).ToString(),
                Timestamp = timestamp,
            };

            var newOrderCustomer = new OrderCustomer
            {
                CustomerIdRef        = newOrder.CustomerIdRef,
                OrderIdRefNavigation = newOrder
            };

            var newOrderEmployee = new OrderEmployee
            {
                EmployeeIdRef        = newOrder.EmployeeRef,
                OrderIdRefNavigation = newOrder
            };

            var newOrderItems = (from foodItem in createOrderModel?.FoodItemsSelected
                                 select new OrderItem
            {
                FoodItemIdRef = Int32.Parse(foodItem),
                Quantity = 1,
                Order = newOrder
            }).ToList();

            var publisher = new Publisher.Publisher();

            try
            {
                var newOrderMessage = new NewOrderMessage(newOrder, newOrderCustomer, newOrderEmployee, newOrderItems);
                publisher.Publish(newOrderMessage);

                string  customerFullName = null;
                string  employeeFullName = null;
                string  paymentCode      = null;
                decimal totalPrice       = 0;
                using (var context = new FoodServiceContext())
                {
                    var customer = context.Customer.FirstOrDefault(x => x.CustomerId == newOrder.CustomerIdRef);
                    customerFullName = $"{customer.FirstName}, {customer.LastName}";

                    var employee = context.Employee.FirstOrDefault(x => x.EmployeeId == newOrder.EmployeeRef);
                    employeeFullName = $"{employee.FirstName}, {employee.LastName}";

                    var payment = context.Payment.FirstOrDefault(x => x.PaymentId == newOrder.PaymentIdRef);
                    paymentCode = payment.Code;

                    foreach (var orderItem in newOrderItems)
                    {
                        var foodItem = context.FoodItem.FirstOrDefault(x => x.FoodItemId == orderItem.FoodItemIdRef);
                        totalPrice += foodItem.UnitPrice * orderItem.Quantity;
                    }
                }
                var toAppend = $"<tr>" +
                               $"<td>{customerFullName}</td>" +
                               $"<td>{employeeFullName}</td>" +
                               $"<td>{paymentCode}</td>" +
                               $"<td>{newOrder.Status}</td>" +
                               $"<td>{newOrder.Timestamp.ToString()}</td>" +
                               $"<td>{totalPrice}</tr>";
                return(Json(new
                {
                    status = "OK",
                    toAppend = toAppend
                }));
            }
            catch (Exception e)
            {
                return(Json(new
                {
                    status = "ERROR"
                }));
            }
        }
        private void ProcessRegisterMessage(OrderRegisterMessage regMsg)
        {
            DateTime?expDate;

            if (regMsg.TillDate == null || regMsg.TillDate == DateTimeOffset.MaxValue)
            {
                expDate = null;
            }
            else
            {
                expDate = regMsg.TillDate.Value.ToLocalTime(TimeHelper.Moscow);
            }

            BaseCommandMessage command;

            switch (regMsg.OrderType)
            {
            case OrderTypes.Limit:
            case OrderTypes.Market:
            {
                command = new NewOrderMessage
                {
                    ByMarket  = regMsg.OrderType == OrderTypes.Market,
                    Client    = regMsg.PortfolioName,
                    Quantity  = regMsg.Volume.To <int>(),
                    Unfilled  = regMsg.TimeInForce.ToTransaq(),
                    BuySell   = regMsg.Side.ToTransaq(),
                    Price     = regMsg.Price,
                    SecId     = (int)regMsg.SecurityId.Native,
                    ExpDate   = expDate,
                    BrokerRef = regMsg.Comment,
                    Hidden    = (int)(regMsg.Volume - (regMsg.VisibleVolume ?? regMsg.Volume)),
                };

                break;
            }

            case OrderTypes.Conditional:
            {
                var cond = (TransaqOrderCondition)regMsg.Condition;

                if (cond.Type == TransaqOrderConditionTypes.Algo)
                {
                    command = new NewCondOrderMessage
                    {
                        ByMarket        = regMsg.OrderType == OrderTypes.Market,
                        Client          = regMsg.PortfolioName,
                        Quantity        = regMsg.Volume.To <int>(),
                        BuySell         = regMsg.Side.ToTransaq(),
                        Price           = regMsg.Price,
                        SecId           = (int)regMsg.SecurityId.Native,
                        CondType        = cond.AlgoType ?? TransaqAlgoOrderConditionTypes.None,
                        CondValue       = cond.AlgoValue ?? 0m,
                        ValidAfterType  = cond.AlgoValidAfterType ?? TransaqAlgoOrderValidTypes.TillCancelled,
                        ValidAfter      = cond.AlgoValidAfter,
                        ValidBeforeType = cond.AlgoValidBeforeType ?? TransaqAlgoOrderValidTypes.TillCancelled,
                        ValidBefore     = cond.AlgoValidBefore,
                        ExpDate         = expDate,
                        BrokerRef       = regMsg.Comment,
                        Hidden          = (int)(regMsg.Volume - (regMsg.VisibleVolume ?? regMsg.Volume)),
                    };
                }
                else                        // if (regMsg.Condition is TransaqOrderCondition)
                {
                    if (!cond.CheckConditionUnitType())
                    {
                        throw new InvalidOperationException(LocalizedStrings.Str3549);
                    }

                    var stopOrder = new NewStopOrderMessage
                    {
                        SecId         = (int)regMsg.SecurityId.Native,
                        Client        = regMsg.PortfolioName,
                        BuySell       = regMsg.Side.ToTransaq(),
                        LinkedOrderNo = cond.LinkedOrderId.To <string>(),
                        ExpDate       = expDate,
                        ValidFor      = expDate,
                    };

                    switch (cond.Type)
                    {
                    case TransaqOrderConditionTypes.StopLoss:
                        stopOrder.StopLoss = TransaqHelper.CreateStopLoss(cond);
                        break;

                    case TransaqOrderConditionTypes.TakeProfit:
                        stopOrder.TakeProfit = TransaqHelper.CreateTakeProfit(cond);
                        break;

                    case TransaqOrderConditionTypes.TakeProfitStopLoss:
                        stopOrder.StopLoss   = TransaqHelper.CreateStopLoss(cond);
                        stopOrder.TakeProfit = TransaqHelper.CreateTakeProfit(cond);
                        break;
                    }

                    command = stopOrder;
                }
                //else
                //	throw new InvalidOperationException(LocalizedStrings.Str3550Params.Put(regMsg.Condition, regMsg.TransactionId));

                break;
            }

            case OrderTypes.Repo:
            {
                command = new NewRepoOrderMessage
                {
                    SecId      = (int)regMsg.SecurityId.Native,
                    Client     = regMsg.PortfolioName,
                    BuySell    = regMsg.Side.ToTransaq(),
                    CpFirmId   = regMsg.RepoInfo.Partner,
                    MatchRef   = regMsg.RepoInfo.MatchRef,
                    BrokerRef  = regMsg.Comment,
                    Price      = regMsg.Price,
                    Quantity   = regMsg.Volume.To <int>(),
                    SettleCode = regMsg.RepoInfo.SettleCode,
                    RefundRate = regMsg.RepoInfo.RefundRate,
                    Rate       = regMsg.RepoInfo.Rate,
                };

                break;
            }

            case OrderTypes.ExtRepo:
            {
                command = new NewMRepoOrderMessage
                {
                    SecId           = (int)regMsg.SecurityId.Native,
                    Client          = regMsg.PortfolioName,
                    BuySell         = regMsg.Side.ToTransaq(),
                    CpFirmId        = regMsg.RepoInfo.Partner,
                    MatchRef        = regMsg.RepoInfo.MatchRef,
                    BrokerRef       = regMsg.Comment,
                    Price           = regMsg.Price,
                    Quantity        = regMsg.Volume.To <int>(),
                    SettleCode      = regMsg.RepoInfo.SettleCode,
                    RefundRate      = regMsg.RepoInfo.RefundRate,
                    Value           = regMsg.RepoInfo.Value,
                    Term            = regMsg.RepoInfo.Term,
                    Rate            = regMsg.RepoInfo.Rate,
                    StartDiscount   = regMsg.RepoInfo.StartDiscount,
                    LowerDiscount   = regMsg.RepoInfo.LowerDiscount,
                    UpperDiscount   = regMsg.RepoInfo.UpperDiscount,
                    BlockSecurities = regMsg.RepoInfo.BlockSecurities,
                };

                break;
            }

            case OrderTypes.Rps:
            {
                command = new NewRpsOrderMessage
                {
                    SecId      = (int)regMsg.SecurityId.Native,
                    Client     = regMsg.PortfolioName,
                    BuySell    = regMsg.Side.ToTransaq(),
                    CpFirmId   = regMsg.RpsInfo.Partner,
                    MatchRef   = regMsg.RpsInfo.MatchRef,
                    BrokerRef  = regMsg.Comment,
                    Price      = regMsg.Price,
                    Quantity   = regMsg.Volume.To <int>(),
                    SettleCode = regMsg.RpsInfo.SettleCode,
                };

                break;
            }

            case OrderTypes.Execute:
            {
                //command = new NewReportMessage
                //{
                //	BuySell = regMsg.Side.ToTransaq(),
                //};
                //break;
                throw new NotImplementedException();
            }

            default:
                throw new ArgumentOutOfRangeException();
            }

            var result = SendCommand(command);

            _orders.Add(result.TransactionId, regMsg.TransactionId);
            _ordersTypes.Add(regMsg.TransactionId, command is NewCondOrderMessage ? OrderTypes.Limit : regMsg.OrderType);
        }
        public Task <List <TransactionMetadata> > NewOrderAsync(NewOrder newOrder, Wallet wallet, TransactionOption options, bool sync = true)
        {
            TransactionMessage message = new NewOrderMessage(newOrder, wallet, options);

            return(BroadcastAsync(message.BuildMessageBody()));
        }
Example #28
0
 public NewOrderView(NewOrderMessage message)
 {
     CustomerName = message.CustomerName;
     Drink        = message.Drink;
     DrinkSize    = message.DrinkSize.ToString();
 }