Initial Commit
This commit is contained in:
parent
4723485ee5
commit
ba080b074a
19 changed files with 409 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/bin/**/**
|
||||||
|
/obj/**/**
|
||||||
|
/App_Data/**/**
|
58
CvrModels/CvrCompany.cs
Normal file
58
CvrModels/CvrCompany.cs
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// ***********************************************************************
|
||||||
|
// Assembly : Inno.Api
|
||||||
|
// Author : FH
|
||||||
|
// Created : 01-01-2022
|
||||||
|
//
|
||||||
|
// Last Modified By : FH
|
||||||
|
// Last Modified On : 01-31-2022
|
||||||
|
// ***********************************************************************
|
||||||
|
// <copyright file="CvrCompany.cs" company="FCS">
|
||||||
|
// Copyright © FCS 2015-2022
|
||||||
|
// </copyright>
|
||||||
|
// <summary></summary>
|
||||||
|
// ***********************************************************************
|
||||||
|
|
||||||
|
namespace FCS.Virk.CvrModels
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class CvrCompany.
|
||||||
|
/// </summary>
|
||||||
|
public class CvrCompany
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the vat number.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The vat number.</value>
|
||||||
|
public string VatNumber { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the name.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The name.</value>
|
||||||
|
public string Name { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the name of the co.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The name of the co.</value>
|
||||||
|
public string CoName { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the address.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The address.</value>
|
||||||
|
public string Address { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the city.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The city.</value>
|
||||||
|
public string City { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the zip code.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The zip code.</value>
|
||||||
|
public string ZipCode { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the status.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The status.</value>
|
||||||
|
public List<CvrStatus> Status { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
32
CvrModels/CvrPeriod.cs
Normal file
32
CvrModels/CvrPeriod.cs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// ***********************************************************************
|
||||||
|
// Assembly : Inno.Api
|
||||||
|
// Author : FH
|
||||||
|
// Created : 01-01-2022
|
||||||
|
//
|
||||||
|
// Last Modified By : FH
|
||||||
|
// Last Modified On : 01-09-2022
|
||||||
|
// ***********************************************************************
|
||||||
|
// <copyright file="CvrPeriod.cs" company="FCS">
|
||||||
|
// Copyright © FCS 2015-2022
|
||||||
|
// </copyright>
|
||||||
|
// <summary></summary>
|
||||||
|
// ***********************************************************************
|
||||||
|
namespace FCS.Virk.CvrModels
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class CvrPeriod.
|
||||||
|
/// </summary>
|
||||||
|
public class CvrPeriod
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the start date.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The start date.</value>
|
||||||
|
public string StartDate { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the end date.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The end date.</value>
|
||||||
|
public string EndDate { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
37
CvrModels/CvrStatus.cs
Normal file
37
CvrModels/CvrStatus.cs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
// ***********************************************************************
|
||||||
|
// Assembly : Inno.Api
|
||||||
|
// Author : FH
|
||||||
|
// Created : 01-01-2022
|
||||||
|
//
|
||||||
|
// Last Modified By : FH
|
||||||
|
// Last Modified On : 01-31-2022
|
||||||
|
// ***********************************************************************
|
||||||
|
// <copyright file="CvrStatus.cs" company="FCS">
|
||||||
|
// Copyright © FCS 2015-2022
|
||||||
|
// </copyright>
|
||||||
|
// <summary></summary>
|
||||||
|
// ***********************************************************************
|
||||||
|
namespace FCS.Virk.CvrModels
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class CvrStatus.
|
||||||
|
/// </summary>
|
||||||
|
public class CvrStatus
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the last update.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The last update.</value>
|
||||||
|
public string LastUpdate { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the status.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The status.</value>
|
||||||
|
public string Status { get; set; } = "LUKKET";
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the period.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The period.</value>
|
||||||
|
public CvrPeriod Period { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
18
FCS.Virk.csproj
Normal file
18
FCS.Virk.csproj
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<LangVersion>10.0</LangVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net48</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
2
FCS.Virk.csproj.DotSettings
Normal file
2
FCS.Virk.csproj.DotSettings
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp90</s:String></wpf:ResourceDictionary>
|
37
VrCvrMapper.cs
Normal file
37
VrCvrMapper.cs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
using FCS.Virk.CvrModels;
|
||||||
|
using FCS.Virk.VrModels;
|
||||||
|
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrCvrMapper
|
||||||
|
{
|
||||||
|
public CvrCompany MapVrToCvr(VrVirksomhed vrVirk)
|
||||||
|
{
|
||||||
|
var c = new CvrCompany
|
||||||
|
{
|
||||||
|
Name = vrVirk.VirksomhedMetadata.NyesteNavn.Navn,
|
||||||
|
Address =
|
||||||
|
$"{vrVirk.VirksomhedMetadata.NyesteBeliggenhedsadresse.Vejnavn} {vrVirk.VirksomhedMetadata.NyesteBeliggenhedsadresse.HusnummerFra}",
|
||||||
|
CoName = vrVirk.VirksomhedMetadata.NyesteBeliggenhedsadresse.CoNavn,
|
||||||
|
ZipCode = vrVirk.VirksomhedMetadata.NyesteBeliggenhedsadresse.Postnummer.ToString(),
|
||||||
|
City = vrVirk.VirksomhedMetadata.NyesteBeliggenhedsadresse.PostDistrikt,
|
||||||
|
VatNumber = vrVirk.CvrNummer
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var cs in vrVirk.VirksomhedsStatus.Select(vrStatus => new CvrStatus
|
||||||
|
{
|
||||||
|
Status = vrStatus.Status,
|
||||||
|
LastUpdate = vrStatus.SidstOpdateret,
|
||||||
|
Period = new CvrPeriod
|
||||||
|
{
|
||||||
|
StartDate = vrStatus.Periode.GyldigFra,
|
||||||
|
EndDate = vrStatus.Periode.GyldigTil
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
c.Status.Add(cs);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
VrHttpRequest.cs
Normal file
30
VrHttpRequest.cs
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrHttpRequest
|
||||||
|
{
|
||||||
|
public async Task<VrResponseView> GetResponseAsync(string endpoint, string jsonData, string auth)
|
||||||
|
{
|
||||||
|
using var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
|
||||||
|
using var client = new HttpClient();
|
||||||
|
using var vrRequest = new HttpRequestMessage(HttpMethod.Post, endpoint);
|
||||||
|
|
||||||
|
vrRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", $"{auth}");
|
||||||
|
vrRequest.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||||
|
vrRequest.Content = content;
|
||||||
|
|
||||||
|
var response = await client.SendAsync(vrRequest).ConfigureAwait(true);
|
||||||
|
var jsonResult = await response.Content.ReadAsStringAsync().ConfigureAwait(true);
|
||||||
|
|
||||||
|
return new VrResponseView
|
||||||
|
{
|
||||||
|
Code = response.StatusCode,
|
||||||
|
IsSuccessStatusCode = response.IsSuccessStatusCode,
|
||||||
|
Message = jsonResult
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
12
VrModels/NyesteBeliggenhedsadresse.cs
Normal file
12
VrModels/NyesteBeliggenhedsadresse.cs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class NyesteBeliggenhedsadresse
|
||||||
|
{
|
||||||
|
public int? HusnummerFra { get; set; }
|
||||||
|
public int? HusnummerTil { get; set; }
|
||||||
|
public int? Postnummer { get; set; }
|
||||||
|
public string Vejnavn { get; set; } = "";
|
||||||
|
public string CoNavn { get; set; } = "";
|
||||||
|
public string PostDistrikt { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
7
VrModels/NyesteNavn.cs
Normal file
7
VrModels/NyesteNavn.cs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class NyesteNavn
|
||||||
|
{
|
||||||
|
public string Navn { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
8
VrModels/Periode.cs
Normal file
8
VrModels/Periode.cs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class Periode
|
||||||
|
{
|
||||||
|
public string GyldigFra { get; set; } = "";
|
||||||
|
public string GyldigTil { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
8
VrModels/VirksomhedMetadata.cs
Normal file
8
VrModels/VirksomhedMetadata.cs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class VirksomhedMetadata
|
||||||
|
{
|
||||||
|
public NyesteNavn NyesteNavn { get; set; } = new();
|
||||||
|
public NyesteBeliggenhedsadresse NyesteBeliggenhedsadresse { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
9
VrModels/VirksomhedsStatus.cs
Normal file
9
VrModels/VirksomhedsStatus.cs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class VirksomhedsStatus
|
||||||
|
{
|
||||||
|
public string SidstOpdateret { get; set; } = "";
|
||||||
|
public string Status { get; set; } = "";
|
||||||
|
public Periode Periode { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
10
VrModels/VrVirksomhed.cs
Normal file
10
VrModels/VrVirksomhed.cs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
namespace FCS.Virk.VrModels
|
||||||
|
{
|
||||||
|
public class VrVirksomhed
|
||||||
|
{
|
||||||
|
public string CvrNummer { get; set; } = "";
|
||||||
|
public List<VirksomhedsStatus> VirksomhedsStatus { get; set; } = new ();
|
||||||
|
public VirksomhedMetadata VirksomhedMetadata { get; set; } = new();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
10
VrQuery.cs
Normal file
10
VrQuery.cs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrQuery
|
||||||
|
{
|
||||||
|
public string VatNumber { get; set; } = "";
|
||||||
|
public string StreetName { get; set; } = "";
|
||||||
|
public string HouseNumber { get; set; } = "";
|
||||||
|
public string ZipCode { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
66
VrQueryMapper.cs
Normal file
66
VrQueryMapper.cs
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrQueryMapper
|
||||||
|
{
|
||||||
|
public JObject VrMapQuery(VrQuery query)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(query.VatNumber))
|
||||||
|
{
|
||||||
|
return new JObject(
|
||||||
|
new JProperty("_source",
|
||||||
|
new JArray(
|
||||||
|
"Vrvirksomhed.cvrNummer",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.conavn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.vejnavn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.husnummerFra",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.husnummerTil",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.postnummer",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.postdistrikt",
|
||||||
|
"Vrvirksomhed.virksomhedsstatus")
|
||||||
|
),
|
||||||
|
new JProperty("query",
|
||||||
|
new JObject(new JProperty("bool",
|
||||||
|
new JObject(new JProperty("must",
|
||||||
|
new JArray(
|
||||||
|
new JObject(new JProperty("match",
|
||||||
|
new JObject(new JProperty(
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.postnummer",
|
||||||
|
new JObject(new JProperty("query", query.ZipCode),
|
||||||
|
new JProperty("_name", "postnummer")))))),
|
||||||
|
new JObject(new JProperty("match",
|
||||||
|
new JObject(new JProperty(
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.vejnavn",
|
||||||
|
new JObject(new JProperty("query", query.StreetName),
|
||||||
|
new JProperty("_name", "vejnavn")))))),
|
||||||
|
new JObject(new JProperty("match",
|
||||||
|
new JObject(new JProperty(
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.husnummerFra",
|
||||||
|
new JObject(new JProperty("query", query.HouseNumber),
|
||||||
|
new JProperty("_name", "husnummerFra"))))))
|
||||||
|
)))))),
|
||||||
|
new JProperty("size", 50));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new JObject(
|
||||||
|
new JProperty("_source",
|
||||||
|
new JArray(
|
||||||
|
"Vrvirksomhed.cvrNummer",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.conavn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.vejnavn",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.husnummerFra",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.husnummerTil",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.postnummer",
|
||||||
|
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse.postdistrikt",
|
||||||
|
"Vrvirksomhed.virksomhedsstatus")
|
||||||
|
),
|
||||||
|
new JProperty("query",
|
||||||
|
new JObject(new JProperty("term",
|
||||||
|
new JObject(new JProperty("Vrvirksomhed.cvrNummer", query.VatNumber))))));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
VrQueryValidator.cs
Normal file
15
VrQueryValidator.cs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public static class VrQueryValidator
|
||||||
|
{
|
||||||
|
public static bool ValidateVrQuery(VrQuery query)
|
||||||
|
{
|
||||||
|
// Precise lookup
|
||||||
|
if (!string.IsNullOrEmpty(query.VatNumber)) return true;
|
||||||
|
// Search lookup
|
||||||
|
return !string.IsNullOrWhiteSpace(query.StreetName)
|
||||||
|
&& !string.IsNullOrWhiteSpace(query.HouseNumber)
|
||||||
|
&& !string.IsNullOrEmpty(query.ZipCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
VrResponseParser.cs
Normal file
36
VrResponseParser.cs
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
using FCS.Virk.VrModels;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrResponseParser
|
||||||
|
{
|
||||||
|
public List<VrVirksomhed?> ParseVrResponse(string jsonData)
|
||||||
|
{
|
||||||
|
var result = new List<VrVirksomhed?>();
|
||||||
|
|
||||||
|
var cvrObject = JObject.Parse(jsonData);
|
||||||
|
|
||||||
|
var numHits = (int) cvrObject.SelectToken("hits")?.SelectToken("total")!;
|
||||||
|
|
||||||
|
if (numHits == 0)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
var cvrHits = cvrObject.SelectToken("hits")?.SelectToken("hits");
|
||||||
|
|
||||||
|
for (var i = 0; i < numHits; i++)
|
||||||
|
{
|
||||||
|
var cObject = cvrHits?[i]?["_source"] != null ? (JObject?)cvrHits[i]?["_source"]?["Vrvirksomhed"] : null;
|
||||||
|
|
||||||
|
var jsonString = JsonConvert.SerializeObject(cObject);
|
||||||
|
|
||||||
|
var o = JsonConvert.DeserializeObject<VrVirksomhed>(jsonString);
|
||||||
|
|
||||||
|
result.Add(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
VrResponseView.cs
Normal file
11
VrResponseView.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace FCS.Virk
|
||||||
|
{
|
||||||
|
public class VrResponseView
|
||||||
|
{
|
||||||
|
public HttpStatusCode Code { get; set; }
|
||||||
|
public bool IsSuccessStatusCode { get; set; }
|
||||||
|
public string Message { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue