private List <Command> CreateCommands(XElement accountNode, IEnumerable <Protocal.Commands.OrderPhaseChange> orderChanges, Protocal.Commands.ChangedFund changedFund, LastValues lastValues) { List <Command> result = new List <Command>(); if (_account.AlertLevel > lastValues.AlertLevel) { result.Add(_account.CreateAlertLevelRisedCommand()); } var orderCommands = this.CreateOrderChangedCommand(orderChanges); if (orderCommands.Count > 0) { result.AddRange(orderCommands); } if (lastValues.Neccessary != _account.Fund.Necessary) { result.Add(_account.CreateAccountUpdateCommand()); } else if (changedFund.Result != null) { result.Add(_account.CreateAccountBalanceCommand((Fund)changedFund.Result)); } if (_account.ChangedRequests != null) { Logger.InfoFormat("create commands changedDeliveryRequest count = {0}", _account.ChangedRequests.Count); foreach (var eachRequest in _account.ChangedRequests) { result.Add(new DeliveryCommand(eachRequest.ToXmlNode())); } } return(result); }
private void ProcessOrderChanges(IEnumerable <Protocal.Commands.OrderPhaseChange> orderChanges, List <Command> commands, XElement accountNode, Protocal.Commands.ChangedFund changedFund, LastValues lastValues) { Logger.InfoFormat("order changes count = {0}", orderChanges.Count()); if (orderChanges != null && orderChanges.Count() == 1 && orderChanges.Single().ChangeType == Protocal.Commands.OrderChangeType.Deleted) { this.ProcessForOrderDeleted(accountNode, (OrderChange)orderChanges.Single()); } commands.AddRange(this.CreateCommands(accountNode, orderChanges, changedFund, lastValues)); }