コード例 #1
0
        public async Task <Exception> TryUpdateAccountInfo(UserInfo userInfo)
        {
            if (!ConnectedUsers.ContainsKey(userInfo.Id))
            {
                return(new ValidationException(string.Empty));
            }

            var response = await TryRunTask <string, AccountInfoResponse>(GetAccountInfo, OnDisposeCts.Token, userInfo.Login);

            if (response.IsSuccess)
            {
                ConnectedUsers[userInfo.Id].AccountInfo = response.Result;
                var responseBalances = response.Result.Balances;
                responseBalances.ForEach(x => x.UserInfo = ConnectedUsers[userInfo.Id]);
                lock (Balances)
                {
                    responseBalances.ForEach(x =>
                    {
                        var balanceInd = Balances.FindIndex(y => y.UserInfo.Id == x.UserInfo.Id && y.CurrencyType == x.CurrencyType);
                        if (balanceInd >= 0)
                        {
                            Balances[balanceInd] = x;
                        }
                        else
                        {
                            Balances.Add(x);
                        }
                    });
                }
            }
            else
            {
                return(response.Exception);
            }

            var historyResp = await TryRunTask <string, AccountHistoryResponse[]>(GetAccountHistory, OnDisposeCts.Token, userInfo.Login);

            if (historyResp.IsSuccess)
            {
                ConnectedUsers[userInfo.Id].AccountHistory = historyResp.Result;
                return(null);
            }

            return(historyResp.Exception);
        }