private async Task <List <CompanyDetail> > ObtainAndCleanExternalData(DownloadListedFirms dataSource) { var allCompanies = await dataSource.GetCompanyList(); allCompanies = allCompanies.Where(ac => !string.IsNullOrEmpty(ac.Ticker) && !string.IsNullOrEmpty(ac.SimId) && !string.IsNullOrEmpty(ac.Name)) .OrderBy(ac => ac.Ticker).ToList(); CompanyDetails = allCompanies; return(allCompanies); }
public async Task <List <CompanyDetail> > GetAllCompaniesAsync() { var tmpList = await _dlf.GetCompanyList(); allCompanies = new List <CompanyDetailMd>(); var dbCompanies = _dbconCompany.Get().ToList(); if (dbCompanies.Count() < 100 || dbCompanies.Where(x => x.IndustryTemplate.IsNullOrWhiteSpace()).Count() < 20) { var deleteStatus = await _dbconCompany.RemoveAll(); if (deleteStatus == false) { return(null); } } dbCompanies = _dbconCompany.Get().ToList(); if (tmpList == null) { return(Mapper.Map <List <CompanyDetailMd>, List <CompanyDetail> >(dbCompanies)); } foreach (var company in tmpList) { var dbCompany = dbCompanies.Where(x => x.SimId == company.SimId).FirstOrDefault(); if (dbCompany != null) { dbCompany.Name = company.Name; dbCompany.Ticker = company.Ticker; allCompanies.Add(dbCompany); } else { allCompanies.Add(new CompanyDetailMd(company)); } } var insertStatus = await _dbconCompany.UpdateMultiple(allCompanies); if (insertStatus) { var listOfAllCompanies = Mapper.Map <List <CompanyDetailMd>, List <CompanyDetail> >(allCompanies); return(listOfAllCompanies); } return(null); }