コード例 #1
0
        protected override void ExecuteCommand(BrokersLoginRequest request)
        {
            var user = request.User;

            Core.OMS.AddTrader(user, request.Accounts, out var accErrors);
            var gotErrors = accErrors != null && accErrors.Count > 0;
            var errors    = gotErrors ? string.Join(Environment.NewLine, accErrors.Select(i => i.Value)) : null;
            var accounts  = gotErrors ? user.Accounts.Where(a => !accErrors.ContainsKey(a)).ToList() : user.Accounts;

            PushResponse(new BrokerLoginResponse
            {
                User     = request.User,
                Accounts = accounts,
                Error    = errors
            });

            foreach (var account in accounts)
            {
                Task.Run(() =>
                {
                    var response = new BrokersAvailableSecuritiesResponse
                    {
                        User       = user,
                        Securities = Core.OMS.GetAvailableSecurities(account),
                        BrokerId   = account.ID
                    };
                    PushResponse(response);
                });
            }
        }
コード例 #2
0
 internal void OnAvailableSecurities(BrokersAvailableSecuritiesResponse message)
 {
     AvailableSecurities?.Invoke(this, new EventArgs<string, List<Data.Contracts.Security>>(message.BrokerId,
         message.Securities.Select(DataConverter.ToClientSecurity).ToList()));
 }