public async Task <IActionResult> Edit(int id, [Bind("Id,AccountNumber,Password,Alive")] AspNetUserForexAccount frxUserAccount) { if (id != frxUserAccount.Id) { return(NotFound()); } if (ModelState.IsValid) { try { AppIdentityUser _user = await _userManager.FindByNameAsync(User.Identity.Name); frxUserAccount.AppIdentityUserId = _user.Id; _identitycontext.Update(frxUserAccount); await _identitycontext.SaveChangesAsync(); if (frxUserAccount.Alive == true) { var temp = _identitycontext.AspNetUserForexAccount.Where(x => x.AppIdentityUserId == _user.Id && x.AccountNumber != frxUserAccount.AccountNumber).ToList(); foreach (var t in temp) { t.Alive = false; } _identitycontext.UpdateRange(temp); await _identitycontext.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException) { if (!FrxUserAccountExists(frxUserAccount.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(PartialView("~/Areas/Forex/Views/FrxUserAccount/CreateEdit.cshtml", frxUserAccount)); }
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())); }
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); }