public async Task <FinancialStatementsData> GetFinancialStatementAsync(string customerNumber, string reportType, string accountingMethod, int year) { if (string.IsNullOrEmpty(customerNumber)) { // _logger.LogError("Could not fetch party data without customer number."); throw new Exception("No customer number!"); } using (var httpClient = _httpClientFactory.CreateClient()) { httpClient.AddDefaultJsonHeaders(); try { using (HttpResponseMessage response = await httpClient.GetAsync(_apiEndPoints.GetServiceUrl("financial-statements") + "reports/customer/" + customerNumber + "?year=" + year + "&report-type=" + reportType + "&accounting-method=" + accountingMethod)) { FinancialStatementsData fsd = new FinancialStatementsData(); var res = await response.Content.ReadAsStringAsync(); if (res.Equals("[]")) { fsd.ReportId = null; } else { JArray list = JArray.Parse(res); // AutoMapper.Mapper.Map(json, fsd, typeof(JObject), typeof(List<FinancialStatementsData>)); foreach (var item in list) { fsd.ReportId = Convert.ToInt64(item["report-header"]["report-id"]); fsd.ReportType = item["report-header"]["report-type"].ToString(); fsd.ReportDate = Convert.ToDateTime(item["report-header"]["report-date"].ToString()); } } return(fsd); } // else // { // _logger.LogError("Unknown Party type ({partyKind}) while fetching party data for party number: {partyNumber}", partyKind, party.CustomerNumber); // throw new Exception("Unknown Party type: " + partyKind); //} } catch (HttpRequestException e) { //_logger.LogError(e, "Could not fetch party data for party number: {partyNumber}", customerNumber); throw e; } } }
public async Task <bool> Handle(UpdateFinancialStatementsCommand message, CancellationToken cancellationToken) { var mandatoryReports = await _configurationService.GetEffective("financial-statements/mandatory-reports"); JObject json = JObject.Parse(mandatoryReports); JArray list = (JArray)json["mandatory-reports"]; foreach (var involvedPartyItem in message.Application.InvolvedParties) { if (involvedPartyItem is OrganizationParty organization) { var fslist = new List <FinancialStatement>(); organization.FinancialStatements = new List <FinancialStatement>(); foreach (var item in list) { JArray reports = (JArray)item["reports"]; var distinctYears = (from foo in reports select foo["year"]).Distinct().ToArray(); foreach (var year in distinctYears) { FinancialStatement statement = new FinancialStatement(); statement.Reports = new List <Report>(); statement.Year = Convert.ToInt32(year); foreach (var statementItem in reports) { if (Convert.ToInt32(statementItem["year"]) == Convert.ToInt32(year)) { FinancialStatementsData financialStatementsData = await _financialStatementsService.GetFinancialStatementAsync(organization.CustomerNumber, statementItem["report-type"].ToString(), statementItem["accounting-method"].ToString(), Convert.ToInt32(statementItem["year"])); Report r = new Report { ReportId = (financialStatementsData.ReportId != 0) ? financialStatementsData.ReportId : null, ReportType = statementItem["report-type"].ToString(), AccountingMethod = statementItem["accounting-method"].ToString(), ReportDate = financialStatementsData.ReportDate }; statement.Reports.Add(r); } } fslist.Add(statement); } } organization.FinancialStatements = fslist; } } _involvedPartyRepository.PublishFinancialStatementsChangeEvent(message.Application.ApplicationNumber, message.Application.CustomerNumber); return(true); }