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); }); } }
internal void OnAvailableSecurities(BrokersAvailableSecuritiesResponse message) { AvailableSecurities?.Invoke(this, new EventArgs<string, List<Data.Contracts.Security>>(message.BrokerId, message.Securities.Select(DataConverter.ToClientSecurity).ToList())); }