public override async Task <bool> LoadWalletsFromDb(IDbConnectorService dbservice) { //IDbConnectorService dbservice = new DbConnectorService(); try { var wallets = dbservice.GetWallets(); var accounts = dbservice.GetAccounts(); foreach (var account in accounts) { if (account.AccountKeyId != Guid.Empty) { try { if (EconomyMainContext.StartWithShops) { if (account.Shop == null) { account.Shop = ShopFactory.GetShop(ShopTypes.NeblioTokenShop, account.Address, "La58e9EeXUMx41uyfqk6kgVWAQq9yBs44nuQW8"); } account.Shop.IsActive = true; account.Shop.StartShop(); } } catch (Exception ex) { ; // probably no setting for the shop } } } if (wallets != null && accounts != null) { // this function will load accounts to proper wallets foreach (var w in wallets) { w.NewTransaction += Wall_NewTransaction; w.NewConfirmedTransactionDetailsReceived += WalletHandler_NewTransactionDetailsReceived; if (w != null) { foreach (var a in accounts) { var ltxParsed = accountHandler.GetLastAccountProcessedTxs(a.Address); if (ltxParsed != null) { a.LastConfirmedTxId = ltxParsed.LastConfirmedTxId; a.LastProcessedTxId = ltxParsed.LastProcessedTxId; } a.WalletName = w.Name; a.StartRefreshingData(EconomyMainContext.WalletRefreshInterval); if (a.WalletId == w.Id) { w.Accounts.TryAdd(a.Address, a); } } } } } if (wallets != null) { //refresh main wallet dictionary EconomyMainContext.Wallets.Clear(); foreach (var w in wallets) { EconomyMainContext.Wallets.TryAdd(w.Id.ToString(), w); } } return(true); } catch (Exception ex) { log.Error("Cannot Load and pair wallets and accounts.", ex); return(false); } }