Exemple #1
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);
        }
Exemple #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()));
        }
Exemple #3
0
        // 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()));
        }