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