public static ConnectAPI GetConnectAPI(AppIdentityDbContext identitycontext, AppDbContext context, string userName, int?acId) { ConnectAPI connectAPI = new ConnectAPI(); var useraccounts = identitycontext.AspNetUserForexAccount.Where(u => u.AppIdentityUser.UserName == userName).ToList(); var frxaccounts = new List <FrxAccount>(); if (useraccounts.Count != 0) { frxaccounts = context.FrxAccount.Where(x => useraccounts.SingleOrDefault(s => s.AccountNumber == x.AccountNumber && s.Password == x.Password) != null).ToList(); } if (frxaccounts.Count == 0) { connectAPI.AccountId = 0; return(connectAPI); } var frxaccount = new FrxAccount(); if (acId == null) { var tempac1 = new AspNetUserForexAccount(); var tempac2 = useraccounts.SingleOrDefault(x => x.Alive == true); if (tempac2 == null) { tempac1 = useraccounts[0]; } else { tempac1 = tempac2; } frxaccount = frxaccounts.SingleOrDefault(x => x.AccountNumber == tempac1.AccountNumber); } else { frxaccount = frxaccounts.SingleOrDefault(x => x.AccountId == acId); } var account = TradingAccount.GetTradingAccounts(frxaccount.ApiUrl, frxaccount.AccessToken).SingleOrDefault(x => x.AccountId == frxaccount.AccountId); if (account != null) { frxaccount.Balance = account.Balance / 100; } else { connectAPI.AccountId = 0; return(connectAPI); } connectAPI.UserId = useraccounts[0].AppIdentityUserId; connectAPI.AccountId = frxaccount.AccountId; connectAPI.Balance = frxaccount.Balance; connectAPI.PreciseLeverage = frxaccount.PreciseLeverage; connectAPI.ClientId = frxaccount.ClientId; connectAPI.ClientSecret = frxaccount.ClientSecret; connectAPI.AccessToken = frxaccount.AccessToken; connectAPI.RefreshToken = frxaccount.RefreshToken; connectAPI.ConnectUrl = frxaccount.ConnectUrl; connectAPI.ApiUrl = frxaccount.ApiUrl; connectAPI.ApiHost = frxaccount.ApiHost; connectAPI.ApiPort = frxaccount.ApiPort; connectAPI.TraderRegistrationTimestamp = frxaccount.TraderRegistrationTimestamp; return(connectAPI); }
public async Task <IActionResult> Index() { #region Parameters string _accessToken = ""; string _apiUrl = "https://api.spotware.com/"; AppIdentityUser _user = await _userManager.FindByNameAsync(User.Identity.Name); AppIdentityUser _admin = await _userManager.FindByNameAsync("lee890720"); if (_user.ConnectAPI) { _accessToken = _user.AccessToken; } else { _accessToken = _admin.AccessToken; } #endregion #region GetAccount var useraccounts = _identitycontext.AspNetUserForexAccount.Where(u => u.AppIdentityUserId == _user.Id).ToList(); var frxaccounts = _context.FrxAccount.Where(x => useraccounts.SingleOrDefault(s => s.AccountNumber == x.AccountNumber && s.Password == x.Password) != null).ToList(); if (frxaccounts.Count == 0) { return(Redirect("/")); } var frxaccount = new FrxAccount(); var TAC = new AspNetUserForexAccount(); var tempAC = useraccounts.SingleOrDefault(x => x.Alive == true); if (tempAC == null) { TAC = useraccounts[0]; } else { TAC = tempAC; } frxaccount = frxaccounts.SingleOrDefault(x => x.AccountNumber == TAC.AccountNumber); #endregion #region GetSymbols var tempsymbols = _context.FrxSymbol; _context.RemoveRange(tempsymbols); await _context.SaveChangesAsync(); var symbols = Symbols.GetSymbols(_apiUrl, frxaccount.AccountId.ToString(), _accessToken); foreach (var s in symbols) { var symbol = new FrxSymbol(); symbol.SymbolId = s.SymbolId; symbol.SymbolName = s.SymbolName; symbol.Digits = s.Digits; symbol.PipPosition = s.PipPosition; symbol.MeasurementUnits = s.MeasurementUnits; symbol.BaseAsset = s.BaseAsset; symbol.QuoteAsset = s.QuoteAsset; symbol.TradeEnabled = s.TradeEnabled; symbol.TickSize = s.TickSize; symbol.Description = s.Description; symbol.MaxLeverage = s.MaxLeverage; symbol.SwapLong = s.SwapLong; symbol.SwapShort = s.SwapShort; symbol.ThreeDaysSwaps = s.ThreeDaysSwaps; if (s.SymbolName.Contains("XAG")) { symbol.MinOrderLot = (double)s.MinOrderVolume / 100 / 1000; } else if (s.SymbolName.Contains("XBR") || s.SymbolName.Contains("XTI") || s.SymbolName.Contains("XAU")) { symbol.MinOrderLot = (double)s.MinOrderVolume / 100 / 100; } else { symbol.MinOrderLot = (double)s.MinOrderVolume / 100 / 100000; } symbol.MinOrderVolume = s.MinOrderVolume / 100; symbol.MinOrderStep = s.MinOrderStep / 100; symbol.MaxOrderVolume = s.MaxOrderVolume / 100; symbol.AssetClass = s.AssetClass; symbol.LastBid = s.LastBid; symbol.LastAsk = s.LastAsk; symbol.TradingMode = s.TradingMode; _context.Add(symbol); await _context.SaveChangesAsync(); } #endregion string[] bases = { "XAU", "XAG", "XBR", "XTI" }; var result = _context.FrxSymbol.Where(x => (x.AssetClass == 1 || bases.Contains(x.BaseAsset)) && x.TradeEnabled); return(View(await result.ToListAsync())); }
// GET: Forex/FrxUserAccount public async Task <IActionResult> Index() { AppIdentityUser _user = await _userManager.FindByNameAsync(User.Identity.Name); if (User.Identity.Name == "lee890720" || _user.ConnectAPI) { string _accessToken = ""; string _apiUrl = ""; _accessToken = _user.AccessToken; _apiUrl = _user.ApiUrl; #region GetAccount var accounts = TradingAccount.GetTradingAccounts(_apiUrl, _accessToken); foreach (var a in accounts) { var result = _context.FrxAccount.SingleOrDefault(x => x.AccountId == a.AccountId); if (result == null) { var temp = new FrxAccount(); temp.AccountId = a.AccountId; temp.AccountNumber = a.AccountNumber; temp.BrokerName = a.BrokerTitle; temp.Currency = a.DepositCurrency; temp.TraderRegistrationTimestamp = a.TraderRegistrationTimestamp; temp.IsLive = a.Live; temp.Balance = a.Balance; temp.PreciseLeverage = a.Leverage; temp.ClientId = _user.ClientId; temp.ClientSecret = _user.ClientSecret; temp.AccessToken = _user.AccessToken; temp.RefreshToken = _user.RefreshToken; temp.ConnectUrl = _user.ConnectUrl; temp.ApiUrl = _user.ApiUrl; temp.ApiHost = _user.ApiHost; temp.ApiPort = _user.ApiPort; _context.Add(temp); await _context.SaveChangesAsync(); } else { if (!string.IsNullOrEmpty(_user.ClientId) && !string.IsNullOrEmpty(_user.ClientSecret)) { if (!string.IsNullOrEmpty(_user.AccessToken) && !string.IsNullOrEmpty(_user.RefreshToken)) { if (!string.IsNullOrEmpty(_user.ConnectUrl) && !string.IsNullOrEmpty(_user.ApiUrl)) { if (!string.IsNullOrEmpty(_user.ApiHost) && _user.ApiPort != 0) { result.ClientId = _user.ClientId; result.ClientSecret = _user.ClientSecret; result.AccessToken = _user.AccessToken; result.RefreshToken = _user.RefreshToken; result.ConnectUrl = _user.ConnectUrl; result.ApiUrl = _user.ApiUrl; result.ApiHost = _user.ApiHost; result.ApiPort = _user.ApiPort; _context.Update(result); await _context.SaveChangesAsync(); } } } } } } #endregion } return(View(await _identitycontext.AspNetUserForexAccount.Where(x => x.AppIdentityUserId == _user.Id).ToListAsync())); }