/// <summary> /// ImportContracts /// </summary> /// <param name="p"></param> private async Task CommandImportContractsAsync(object p) { if (String.IsNullOrWhiteSpace(ExchangeIbSelected)) { LogCurrent.Add($"ERROR! Exchange must be selected."); return; } LogCurrent = LogSymbols; LogCurrent.Clear(); BackgroundLog = Brushes.Gray; await Task.Run(() => { try { string[] companiesArray = null; int delay = 0; Dispatcher.Invoke(() => { delay = Convert.ToInt32(Configuration.Instance["DelayMathingSymbols"]); companiesArray = CompaniesForSymbolResolution.ToArray(); CompaniesList = companiesArray.ToList(); SymbolProcessed = new List <string>(); CompaniesProcessed = new List <string>(); }); foreach (var company in companiesArray) { CurrentCompany = company; IbClient.Instance.LookForSymbols(CurrentCompany); Thread.Sleep(delay); } } catch (Exception exception) { Dispatcher.Invoke(() => { LogCurrent.Add(exception.ToString()); }); } }); if (ConnectedToIb) { LogCurrent.Add($"OK! Import completed."); DataContext.Instance.SaveChanges(); LogCurrent.Add("OK! All contracts saved in database."); IbClient.Instance.Disonnect(); UpdateDbState(); InventoryText = GenerateInventoryText(); UpdateCompaniesForSymbolResolution(ExchangesFmpSelected); } else { LogCurrent.Add($"ERROR! Error while connection to IB server."); } }
/// <summary> /// UpdateCompaniesForSymbolResolution /// </summary> /// <param name="exchangesFmpSelected"></param> private void UpdateCompaniesForSymbolResolution(List <string> exchangesFmpSelected) { CompaniesForSymbolResolutionText = String.Empty; CompaniesForSymbolResolution = QueryFactory.CompaniesForSymbolResolutionQuery.Run(DbState.CompaniesWoDocumentsIbSymbolNotResolvedNotUnique, exchangesFmpSelected); if (CompaniesForSymbolResolution.Any()) { CompaniesForSymbolResolutionText = CompaniesForSymbolResolution.Aggregate((r, n) => r + "\r\n" + n); } else { CompaniesForSymbolResolutionText = string.Empty; } string text = $"Companies for Symbol resolution ({CompaniesForSymbolResolution.Count} selected)\r\nExchanges: {ExchangesFmpSelected.Aggregate((r, n) => r + ", " + n)} "; CompaniesForSymbolResolutionHeader = text; }