Skip to content

Commit

Permalink
feat: add geo search filtering for alle-type datasets (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
SondreJDigdir authored Oct 15, 2024
1 parent c0e46b4 commit 22d85ef
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 53 deletions.
36 changes: 36 additions & 0 deletions src/Dan.Plugin.Tilda/Extensions/BrEntityRegisterEntryExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Dan.Plugin.Tilda.Models;

namespace Dan.Plugin.Tilda.Extensions;

public static class BrEntityRegisterEntryExtensions
{
public static bool MatchesFilterParameters(this BREntityRegisterEntry brEntity, TildaParameters tildaParameters)
{
// No params; nothing to filter on
if (tildaParameters == null)
{
return true;
}

if (tildaParameters.postcode != null && brEntity.Postadresse?.Postnummer != tildaParameters.postcode)
{
return false;
}

if (tildaParameters.municipalityNumber != null &&
brEntity.Postadresse?.Kommunenummer != tildaParameters.municipalityNumber)
{
return false;
}

if (tildaParameters.nace != null &&
(brEntity.Naeringskode1?.Kode != tildaParameters.nace ||
brEntity.Naeringskode2?.Kode != tildaParameters.nace ||
brEntity.Naeringskode3?.Kode != tildaParameters.nace))
{
return false;
}

return true;
}
}
40 changes: 34 additions & 6 deletions src/Dan.Plugin.Tilda/Metadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,34 @@ private static List<EvidenceParameter> GetTildaAllParameters()
};
}

private static List<EvidenceParameter> GetTildaAllParametersWithGeoSearch()
{
var parameters = GetTildaAllParameters();
var geoSearchParameters = new List<EvidenceParameter>
{
new()
{
EvidenceParamName = "postnummer",
ParamType = EvidenceParamType.Number,
Required = false
},
new()
{
EvidenceParamName = "kommunenummer",
ParamType = EvidenceParamType.Number,
Required = false
},
new()
{
EvidenceParamName = "naeringskode",
ParamType = EvidenceParamType.String,
Required = false
}
};
parameters.AddRange(geoSearchParameters);
return parameters;
}

private static IEnumerable<EvidenceCode> GetTildaStorulykkeMetadataAlle()
{
var schema = JsonSchema.FromType<StorulykkevirksomhetListe>().ToJson(Formatting.Indented);
Expand All @@ -168,7 +196,7 @@ private static IEnumerable<EvidenceCode> GetTildaStorulykkeMetadataAlle()
Description = "TildaStorulykkevirksomhetAlle",
EvidenceCodeName = "TildaStorulykkevirksomhetAlle",
EvidenceSource = "Tilda",
IsAsynchronous = false,
IsAsynchronous = false,
BelongsToServiceContexts = belongsToTilda,
MaxValidDays = 365,
AuthorizationRequirements = GetTildaAuthRequirements<ITildaAlertMessage>(),
Expand Down Expand Up @@ -207,7 +235,7 @@ private static IEnumerable<EvidenceCode> GetTildaStorulykkeMetadata()
Description = "TildaStorulykkevirksomhet",
EvidenceCodeName = "TildaStorulykkevirksomhet",
EvidenceSource = "Tilda",
IsAsynchronous = false,
IsAsynchronous = false,
BelongsToServiceContexts = belongsToTilda,
MaxValidDays = 365,
AuthorizationRequirements = GetTildaAuthRequirements<ITildaAlertMessage>(),
Expand All @@ -234,7 +262,7 @@ private static List<EvidenceCode> GetTildaMeldingTilAnnenMyndighetMetadata()
{
var schema = JsonSchema.FromType<AlertMessageList>().ToJson(Newtonsoft.Json.Formatting.Indented);
var a = new EvidenceCode()
{
{
Description = "TildaMeldingTilAnnenMyndighet v1",
EvidenceCodeName = "TildaMeldingTilAnnenMyndighetv1",
EvidenceSource = "Tilda",
Expand Down Expand Up @@ -397,7 +425,7 @@ private static IEnumerable<EvidenceCode> GetTilsynsTrendMetadataAll()
JsonSchemaDefintion = schema
}
},
Parameters = GetTildaAllParameters(),
Parameters = GetTildaAllParametersWithGeoSearch(),
};

return new List<EvidenceCode>
Expand Down Expand Up @@ -433,7 +461,7 @@ private static IEnumerable<EvidenceCode> GetTilsynskoordineringAllMetadata()
JsonSchemaDefintion = schema
}
},
Parameters = GetTildaAllParameters()
Parameters = GetTildaAllParametersWithGeoSearch()
};

return new List<EvidenceCode>
Expand Down Expand Up @@ -700,7 +728,7 @@ public static List<EvidenceCode> GetTilsynsdataRapportAllMetadata()
JsonSchemaDefintion = schema
}
},
Parameters = GetTildaAllParameters()
Parameters = GetTildaAllParametersWithGeoSearch()
};

a.AuthorizationRequirements.AddRange(GetTildaAuthRequirements<ITildaAuditReportsAll>());
Expand Down
6 changes: 6 additions & 0 deletions src/Dan.Plugin.Tilda/Models/BREntityRegisterEntry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ public class BREntityRegisterEntry
[JsonProperty("naeringskode1")]
public InstitusjonellSektorkode Naeringskode1 { get; set; }

[JsonProperty("naeringskode2")]
public InstitusjonellSektorkode Naeringskode2 { get; set; }

[JsonProperty("naeringskode3")]
public InstitusjonellSektorkode Naeringskode3 { get; set; }

[JsonProperty("antallAnsatte")]
public long AntallAnsatte { get; set; }

Expand Down
12 changes: 8 additions & 4 deletions src/Dan.Plugin.Tilda/Models/TildaParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@ public class TildaParameters

public string year { get; set; }

public TildaParameters()
{
public string postcode { get; set; }

}
public string municipalityNumber { get; set; }

public string nace { get; set; }

public TildaParameters(DateTime? fromDate, DateTime? toDate, string npdid, bool? includeSubunits, string sourceFilter, string identifier, string filter, string year, string month)
public TildaParameters(DateTime? fromDate, DateTime? toDate, string npdid, bool? includeSubunits, string sourceFilter, string identifier, string filter, string year, string month, string postcode, string municipalityNumber, string nace)
{
this.fromDate = fromDate;
this.toDate = toDate;
Expand All @@ -36,6 +37,9 @@ public TildaParameters(DateTime? fromDate, DateTime? toDate, string npdid, bool?
this.filter = filter;
this.year = year;
this.month = month;
this.postcode = postcode;
this.municipalityNumber = municipalityNumber;
this.nace = nace;
}
}
}
10 changes: 0 additions & 10 deletions src/Dan.Plugin.Tilda/Settings.cs

This file was deleted.

71 changes: 38 additions & 33 deletions src/Dan.Plugin.Tilda/Tilda.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Dan.Plugin.Tilda.Extensions;


namespace Dan.Plugin.Tilda
Expand Down Expand Up @@ -388,23 +389,14 @@ private TildaParameters GetValuesFromParameters(EvidenceHarvesterRequest req)
req.TryGetParameter("filter", out string filter);
req.TryGetParameter("aar", out string year);
req.TryGetParameter("maaned", out string month);

/*
var fromDate = req.GetOptionalParameterValue<DateTime?>("startdato")?.ToUniversalTime();
var toDate = req.GetOptionalParameterValue<DateTime?>("sluttdato")?.ToUniversalTime();
var npdid = req.GetOptionalParameterValue<string>("npdid");
var sourceFilter = req.GetOptionalParameterValue<string>("tilsynskilder");
var includeSubunits = req.GetOptionalParameterValue<bool?>("inkluderUnderenheter");
var identifier = req.GetOptionalParameterValue<string>("identifikator");
var filter = req.GetOptionalParameterValue<string>("filter");
var year = req.GetOptionalParameterValue<Int64?>("aar");
var month = req.GetOptionalParameterValue<Int64?>("maaned");
*/
req.TryGetParameter("postnummer", out string postcode);
req.TryGetParameter("kommunenummer", out string municipalityNumber);
req.TryGetParameter("naeringskode", out string nace);

if (includeSubunits)
throw new Exception("inkluderUnderenheter er ikke støttet ennå :)");

return new TildaParameters(fromDateTime, toDateTime, npdid, false, sourceFilter, identifier, filter, year, month);
return new TildaParameters(fromDateTime, toDateTime, npdid, false, sourceFilter, identifier, filter, year, month, postcode, municipalityNumber, nace);
}


Expand Down Expand Up @@ -469,11 +461,18 @@ private async Task<List<TildaRegistryEntry>> GetOrganizationsFromBR(string organ
return result;
}

private async Task<TildaRegistryEntry> GetOrganizationFromBR(string organizationNumber)
private async Task<TildaRegistryEntry> GetOrganizationFromBR(string organizationNumber, TildaParameters tildaParameters = null)
{
var brResult = await Helpers.GetFromBR(organizationNumber, _erClient, false, _policyRegistry);
var brEntity = brResult.First();
AccountsInformation accountsInformation = null;

// Filters out on parameters, currently only on "geo search" params
if (!brEntity.MatchesFilterParameters(tildaParameters))
{
return null;
}

if (brEntity.Organisasjonsform.Kode != "ENK")
{
accountsInformation = await Helpers.GetAnnualTurnoverFromBR(organizationNumber, _client, _policyRegistry);
Expand Down Expand Up @@ -692,7 +691,7 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesTrendAll(EvidenceHarves
var distinctList = result.TrendReports.GroupBy(x => x.ControlObject).Select(y => y.FirstOrDefault()).ToList();
foreach (var item in distinctList)
{
taskList.Add(GetOrganizationFromBR(item.ControlObject));
taskList.Add(GetOrganizationFromBR(item.ControlObject, param));
}
}

Expand Down Expand Up @@ -722,7 +721,7 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesTrendAll(EvidenceHarves

private async Task<List<EvidenceValue>> GetEvidenceValuesTilsynskoordingeringAllASync(EvidenceHarvesterRequest req, TildaParameters param)
{
var sourceList = _tildaSourceProvider.GetRelevantSources<ITildaAuditCoordinationAll>(req.OrganizationNumber);
var sourceList = _tildaSourceProvider.GetRelevantSources<ITildaAuditCoordinationAll>(req.OrganizationNumber).ToList();
AuditCoordinationList result = null;
var brResults = new List<TildaRegistryEntry>();
var ecb = new EvidenceBuilder(_metadata, "TildaTilsynskoordineringAllev1");
Expand All @@ -748,12 +747,17 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesTilsynskoordingeringAll
var distinctList = result.AuditCoordinations.GroupBy(x => x.ControlObject).Select(y => y.FirstOrDefault()).ToList();
foreach (var item in distinctList)
{
taskList.Add(GetOrganizationFromBR(item.ControlObject));
taskList.Add(GetOrganizationFromBR(item.ControlObject, param));
}
}

await Task.WhenAll(taskList);
taskList = taskList.GroupBy(x => x.Result.OrganizationNumber).Select(y => y.FirstOrDefault()).ToList();
taskList = taskList
.Where(task => task.Result is not null)
.GroupBy(x => x.Result.OrganizationNumber)
.Select(y => y.FirstOrDefault())
.ToList();

foreach (var t in taskList)
{
brResults.Add(t.Result);
Expand Down Expand Up @@ -794,21 +798,24 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesTilsynsRapportAllAsync(

var taskList = new List<Task<TildaRegistryEntry>>();

/* if (result.AuditReports != null)
{
var distinctList = result.AuditReports.GroupBy(x => x.ControlObject).Select(y => y.FirstOrDefault()).ToList();
foreach (var item in distinctList)
{
taskList.Add(GetOrganizationFromBR(item.ControlObject));
}
}
if (result.AuditReports != null)
{
var distinctList = result.AuditReports.GroupBy(x => x.ControlObject).Select(y => y.FirstOrDefault()).ToList();
foreach (var item in distinctList)
{
taskList.Add(GetOrganizationFromBR(item.ControlObject, param));
}
}

await Task.WhenAll(taskList);
await Task.WhenAll(taskList);

foreach (var t in taskList)
{
brResults.Add(t.Result);
}*/
taskList = taskList
.Where(task => task.Result is not null)
.ToList();
foreach (var t in taskList)
{
brResults.Add(t.Result);
}
}
catch (Exception ex)
{
Expand Down Expand Up @@ -873,7 +880,5 @@ private async Task<List<EvidenceValue>> GetEvidenceValuesTilsynsrapport(Evidence

return ecb.GetEvidenceValues();
}


}
}

0 comments on commit 22d85ef

Please sign in to comment.