private async Task <string> GetAnnualReportDataXml(ElasticAnnualReportModelDTO report) { var doc = report?.dokumenter? .FirstOrDefault(c => c.dokumentType == "AARSRAPPORT" && c.dokumentMimeType == "application/xml"); if (doc == null) { return(null); } using (IWebClient client = this.webClientFactory.GetGzipWebClient()) { client.Encoding = Encoding.UTF8; var result = await client.DownloadStringTaskAsync(doc.dokumentUrl); return(result); }; }
private async Task <AnnualReportXMLData> GetAnnualReportData(ElasticAnnualReportModelDTO report) { var data = await GetAnnualReportDataXml(report); if (data == null) { return(null); } var xdoc = XDocument.Parse(data); var elements = xdoc?.Root?.Elements(); if (elements == null || !elements.Any()) { return(null); } var equityVal = elements.FirstOrDefault(c => c.Name.LocalName.Equals("Equity"))?.Value; var profitLossVal = elements.FirstOrDefault(c => c.Name.LocalName.Equals("ProfitLoss"))?.Value; var currentAssetsVal = elements.FirstOrDefault(c => c.Name.LocalName.Equals("CurrentAssets"))?.Value; var assetsVal = elements.FirstOrDefault(c => c.Name.LocalName.Equals("Assets"))?.Value; var grossProfitLossVal = elements.FirstOrDefault(c => c.Name.LocalName.Equals("GrossProfitLoss"))?.Value; var dto = new AnnualReportXMLData() { RegistrationNumber = report.cvrNummer.ToString(), Equity = !string.IsNullOrWhiteSpace(equityVal) ? decimal.Parse(equityVal) : (decimal?)null, Assets = !string.IsNullOrWhiteSpace(assetsVal) ? decimal.Parse(assetsVal) : (decimal?)null, CurrentAssets = !string.IsNullOrWhiteSpace(currentAssetsVal) ? decimal.Parse(currentAssetsVal) : (decimal?)null, ProfitLoss = !string.IsNullOrWhiteSpace(profitLossVal) ? decimal.Parse(profitLossVal) : (decimal?)null, GrossProfitLoss = !string.IsNullOrWhiteSpace(grossProfitLossVal) ? decimal.Parse(grossProfitLossVal) : (decimal?)null }; return(dto); }