/// <summary> /// Get statements from data provider and insert it to database. /// </summary> /// <param name="simId">The sim identifier.</param> /// <returns></returns> public async Task <bool> UpdateStatements(string simId) { if (simId.IsNullOrWhiteSpace()) { return(false); } var cd = _hcl.GetCompanyDetails(simId); if (cd.LastUpdate != null && ((TimeSpan)(DateTime.Now - cd.LastUpdate)).Days < 30) { return(true); } var companyFinancials = await ObtainCompanyFinancilasAsync(simId); if (companyFinancials == null || companyFinancials.Count == 0) { return(false); } var cfMdl = new List <CompanyFinancialsMd>(); var oldcfML = _dbconCompany.Get(o => o.SimId.Equals(simId)).ToList(); foreach (var(companyFinancial, oldcf) in from companyFinancial in companyFinancials let oldcf = oldcfML.Where(o => o.SimId.Equals(companyFinancial.SimId) && o.FYear == companyFinancial.FYear && o.Statement == companyFinancial.Statement).FirstOrDefault() select(companyFinancial, oldcf)) { cfMdl.Add(new CompanyFinancialsMd(companyFinancial)); if (oldcf != null) { cfMdl.Last().Id = oldcf.Id; } } try { var returnValue = await _dbconCompany.UpdateMultiple(cfMdl); if (returnValue == false) { return(false); } await RemoveUnwantedRecords(cfMdl, oldcfML); returnValue = await _hcl.UpdateCompanyDetailAsync(simId, cfMdl.First().IndustryTemplate); return(returnValue); } catch (Exception ex) { Console.WriteLine($"Error in method HandleFinacials:UpdateStatments\n{ex.Message}"); return(false); } }
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); }