From e73b108d9e0d9f9a9b93d5b019fab8be3e31d2dd Mon Sep 17 00:00:00 2001 From: Danilo Calderini Date: Thu, 27 Apr 2023 16:33:03 +0200 Subject: [PATCH 1/2] bug fix --- ifrs17/Import/Importers.ipynb | 45 ++++++++++++++++------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index dbab9748..fb55595f 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -524,41 +524,38 @@ "source": [ "public async Task GetAllArgsAsync(ImportArgs args, IDataSource dataSource, string format)", "\n{", - "\n ImportArgs[] allArgs;", + "\n IEnumerable allArgs;", "\n switch(format)", "\n {", - "\n case ImportFormats.Cashflow:", - "\n case ImportFormats.Actual: ", - "\n case ImportFormats.Opening:", - "\n {", - "\n if(args.Scenario != null) return args.RepeatOnce().ToArray();", - "\n var secondaryArgs = await dataSource.Query() ", - "\n .Where(x => x.ReportingNode == args.ReportingNode && x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, format)).ToArrayAsync();", - "\n ", - "\n if(secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", - "\n allArgs = args.RepeatOnce().Concat(secondaryArgs).ToArray();", - "\n break;", - "\n }", - "\n default: ", - "\n {", + "\n case ImportFormats.YieldCurve: {", "\n if(args.Scenario == null) {", - "\n var scenarios = format switch {", - "\n ImportFormats.YieldCurve => await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct().ToArrayAsync(),", - "\n ImportFormats.DataNodeParameter => await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct().ToArrayAsync()", - "\n };", + "\n var scenarios = await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct().ToArrayAsync();", "\n var targetPartitions = await dataSource.Query()", "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarios.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", - "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow));", "\n }", "\n else {", "\n allArgs = (await dataSource.Query()", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow));", + "\n }", + "\n break;", + "\n }", + "\n default: {", + "\n if(args.Scenario != null) {", + "\n if (format == ImportFormats.DataNodeParameter) return (args with {ImportFormat = ImportFormats.Cashflow}).RepeatOnce().ToArray();", + "\n return args.RepeatOnce().ToArray();", "\n }", - "\n break;", + "\n var secondaryArgs = await dataSource.Query()", + "\n .Where(x => x.ReportingNode == args.ReportingNode && x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, format)).ToArrayAsync();", + "\n", + "\n if(secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", + "\n allArgs = args.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n if (format == ImportFormats.DataNodeParameter) allArgs.Select(x => x with {ImportFormat = ImportFormats.Cashflow});", + "\n break;", "\n }", "\n }", "\n return allArgs.Where(x => (!Scenarios.EnableScenario && x.Scenario == null) || Scenarios.EnableScenario).ToArray();", From 35381be3befd9ff7f0670d7fd8b81aef443c5fc8 Mon Sep 17 00:00:00 2001 From: Davide Colleoni Date: Thu, 27 Apr 2023 23:16:24 +0200 Subject: [PATCH 2/2] fix get all args --- ifrs17/Import/Importers.ipynb | 47 +++++++++++++++++++------------ ifrs17/Report/ReportStorage.ipynb | 2 +- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index fb55595f..6b57b49a 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -524,38 +524,49 @@ "source": [ "public async Task GetAllArgsAsync(ImportArgs args, IDataSource dataSource, string format)", "\n{", - "\n IEnumerable allArgs;", + "\n ImportArgs[] allArgs;", "\n switch(format)", "\n {", - "\n case ImportFormats.YieldCurve: {", + "\n case ImportFormats.YieldCurve:", + "\n {", "\n if(args.Scenario == null) {", "\n var scenarios = await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct().ToArrayAsync();", - "\n var targetPartitions = await dataSource.Query()", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && !scenarios.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", + "\n var targetPartitions = await dataSource.Query().Where(x => x.Year == args.Year && x.Month == args.Month && !scenarios.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", - "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow));", + "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", "\n }", "\n else {", "\n allArgs = (await dataSource.Query()", - "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", - "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow));", - "\n }", - "\n break;", + "\n .Where(x => x.Year == args.Year && x.Month == args.Month && x.Scenario == null).ToArrayAsync())", + "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), args.Scenario, ImportFormats.Cashflow)).ToArray();", + "\n }", + "\n break;", "\n }", - "\n default: {", - "\n if(args.Scenario != null) {", - "\n if (format == ImportFormats.DataNodeParameter) return (args with {ImportFormat = ImportFormats.Cashflow}).RepeatOnce().ToArray();", - "\n return args.RepeatOnce().ToArray();", + "\n case ImportFormats.DataNodeParameter:", + "\n {", + "\n if(args.Scenario != null)", + "\n return (args with {ImportFormat = ImportFormats.Cashflow}).RepeatOnce().ToArray();", + "\n else {", + "\n var partitionByReportingNode = (await dataSource.Query().Where(x => x.ReportingNode == args.ReportingNode).ToArrayAsync()).Single().Id;", + "\n var scenarios = await dataSource.Query().Where(x => x.Partition == partitionByReportingNode && x.Year == args.Year && x.Month == args.Month && x.Scenario != null).Select(x => x.Scenario).Distinct().ToArrayAsync();", + "\n var targetPartitions = await dataSource.Query().Where(x => x.ReportingNode == args.ReportingNode && x.Year == args.Year && x.Month == args.Month && !scenarios.Contains(x.Scenario)).OrderBy(x => x.Scenario).ToArrayAsync();", + "\n var targetScenarios = targetPartitions.Where(x => x.Scenario != null).Select(x => x.Scenario);", + "\n if(targetScenarios.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", targetScenarios));", + "\n allArgs = targetPartitions.Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, ImportFormats.Cashflow)).ToArray();", "\n }", - "\n var secondaryArgs = await dataSource.Query()", + "\n break;", + "\n }", + "\n default: ", + "\n {", + "\n if(args.Scenario != null) return args.RepeatOnce().ToArray();", + "\n var secondaryArgs = await dataSource.Query() ", "\n .Where(x => x.ReportingNode == args.ReportingNode && x.Year == args.Year && x.Month == args.Month && x.Scenario != null)", "\n .Select(x => new ImportArgs(x.ReportingNode, x.Year, x.Month, default(Periodicity), x.Scenario, format)).ToArrayAsync();", - "\n", + "\n ", "\n if(secondaryArgs.Any()) ApplicationMessage.Log(Warning.ScenarioReCalculations, String.Join(\", \", secondaryArgs.Select(x => x.Scenario)));", - "\n allArgs = args.RepeatOnce().Concat(secondaryArgs).ToArray();", - "\n if (format == ImportFormats.DataNodeParameter) allArgs.Select(x => x with {ImportFormat = ImportFormats.Cashflow});", - "\n break;", + "\n allArgs = args.RepeatOnce().Concat(secondaryArgs).ToArray();", + "\n break;", "\n }", "\n }", "\n return allArgs.Where(x => (!Scenarios.EnableScenario && x.Scenario == null) || Scenarios.EnableScenario).ToArray();", diff --git a/ifrs17/Report/ReportStorage.ipynb b/ifrs17/Report/ReportStorage.ipynb index e2082099..21d8424e 100644 --- a/ifrs17/Report/ReportStorage.ipynb +++ b/ifrs17/Report/ReportStorage.ipynb @@ -241,7 +241,7 @@ "\n }", "\n", "\n public async Task> GetScenariosAsync(string scenario) => ", - "\n scenario == \"Delta\" || scenario == \"All\" ", + "\n scenario == Scenarios.Delta || scenario == Scenarios.All", "\n ? (await workspace.Query().Select(x => x.Scenario).ToArrayAsync()).ToHashSet()", "\n : scenario.RepeatOnce().ToHashSet();", "\n}"