示例#1
0
        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));
        }
示例#2
0
        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()));
        }
示例#3
0
        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);
        }