From ad580c5f0da626e3e74dc9c9e6ef5ba7c8f6223a Mon Sep 17 00:00:00 2001 From: Frede Hundewadt <22748698+fhdk@users.noreply.github.com> Date: Fri, 18 Mar 2022 15:06:23 +0100 Subject: [PATCH] wip refactor virk interface refactor create company --- Wonky.Client/AppId.cs | 2 +- .../Components/CompanySearchDropdown.razor | 12 +- .../Components/CompanySearchDropdown.razor.cs | 12 +- .../Components/CompanySortDropdown.razor | 9 +- .../Components/CompanySortDropdown.razor.cs | 7 +- .../Components/ItemGroupDropdown.razor | 14 +- .../Components/ItemGroupDropdown.razor.cs | 28 +--- .../Components/ItemSearchDropdown.razor | 10 +- .../Components/ItemSearchDropdown.razor.cs | 8 +- .../Components/ItemSortDropdown.razor | 9 +- .../Components/ItemSortDropdown.razor.cs | 7 +- .../Components/PageSizeDropdown.razor | 12 +- .../Components/PageSizeDropdown.razor.cs | 8 +- .../Components/RegLookupAddress.razor | 2 - .../Components/VatAddressInputComponent.razor | 24 +++ .../VatAddressInputComponent.razor.cs | 31 ++++ .../Components/VatNumberInputComponent.razor | 14 ++ .../VatNumberInputComponent.razor.cs | 30 ++++ Wonky.Client/Models/VatAddress.cs | 10 ++ Wonky.Client/Pages/CompanyCreate.razor | 72 ++++----- Wonky.Client/Pages/CompanyCreate.razor.cs | 64 ++++---- Wonky.Client/Pages/CompanyList.razor | 3 - Wonky.Client/Pages/CompanyUpdate.razor | 152 ++++++++---------- Wonky.Client/Pages/SalesItemCatalog.razor | 4 - .../Services/UserPreferenceService.cs | 10 +- Wonky.Client/Services/VirkRegistryService.cs | 2 +- Wonky.Client/Shared/NavMenu.razor | 12 +- Wonky.Client/Wonky.Client.csproj | 1 + Wonky.Client/wwwroot/css/app.css | 2 + Wonky.Entity/DTO/CompanyDto.cs | 4 +- Wonky.Entity/DTO/CreateCompanyResponse.cs | 1 + Wonky.Entity/Requests/PagingParams.cs | 2 +- 32 files changed, 313 insertions(+), 265 deletions(-) create mode 100644 Wonky.Client/Components/VatAddressInputComponent.razor create mode 100644 Wonky.Client/Components/VatAddressInputComponent.razor.cs create mode 100644 Wonky.Client/Components/VatNumberInputComponent.razor create mode 100644 Wonky.Client/Components/VatNumberInputComponent.razor.cs create mode 100644 Wonky.Client/Models/VatAddress.cs diff --git a/Wonky.Client/AppId.cs b/Wonky.Client/AppId.cs index 38a63d40..c8d0ff11 100644 --- a/Wonky.Client/AppId.cs +++ b/Wonky.Client/AppId.cs @@ -2,7 +2,7 @@ namespace Wonky.Client; public class AppId { - public string Version { get; set; } = "0.2.2"; + public string Version { get; set; } = "0.2.4"; public string Name { get; set; } = "Wonky Online"; public bool IsBeta { get; set; } = false; diff --git a/Wonky.Client/Components/CompanySearchDropdown.razor b/Wonky.Client/Components/CompanySearchDropdown.razor index 3b524c98..debff6fe 100644 --- a/Wonky.Client/Components/CompanySearchDropdown.razor +++ b/Wonky.Client/Components/CompanySearchDropdown.razor @@ -14,9 +14,11 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // *@ - + + + + + + \ No newline at end of file diff --git a/Wonky.Client/Components/CompanySearchDropdown.razor.cs b/Wonky.Client/Components/CompanySearchDropdown.razor.cs index faa930f5..7efc23d6 100644 --- a/Wonky.Client/Components/CompanySearchDropdown.razor.cs +++ b/Wonky.Client/Components/CompanySearchDropdown.razor.cs @@ -34,17 +34,12 @@ public partial class CompanySearchDropdown : IDisposable { UserPreferenceService.OnChange += ProfileServiceOnOnChange; _preferences = await UserPreferenceService.GetPreferences(); - - Items.Add("name", "Firmanavn"); - Items.Add("account", "Konto"); - Items.Add("city", "Bynavn"); - Items.Add("zipCode", "Postnr"); - Items.Add("phone", "Telefon"); - Selection = (from x in Items where x.Key == _preferences.CompanySearch select x.Key).First(); + Selection = _preferences.CompanySearch; } private async Task OnSelectionChanged(ChangeEventArgs e) { var val = e.Value.ToString(); + if (val == "-1") return; await OnChanged.InvokeAsync(val); await UserPreferenceService.SetCompanySearch(val); } @@ -56,4 +51,5 @@ public partial class CompanySearchDropdown : IDisposable public void Dispose() { UserPreferenceService.OnChange -= ProfileServiceOnOnChange; - } } \ No newline at end of file + } +} \ No newline at end of file diff --git a/Wonky.Client/Components/CompanySortDropdown.razor b/Wonky.Client/Components/CompanySortDropdown.razor index fca59eb7..12d4d13b 100644 --- a/Wonky.Client/Components/CompanySortDropdown.razor +++ b/Wonky.Client/Components/CompanySortDropdown.razor @@ -15,9 +15,8 @@ // *@ - + + + \ No newline at end of file diff --git a/Wonky.Client/Components/CompanySortDropdown.razor.cs b/Wonky.Client/Components/CompanySortDropdown.razor.cs index 17eefcaa..83698398 100644 --- a/Wonky.Client/Components/CompanySortDropdown.razor.cs +++ b/Wonky.Client/Components/CompanySortDropdown.razor.cs @@ -33,15 +33,12 @@ namespace Wonky.Client.Components { UserPreferenceService.OnChange += ProfileServiceOnOnChange; _preferences = await UserPreferenceService.GetPreferences(); - - Items.Add("name", "Firmanavn"); - Items.Add("account", "Konto"); - Items.Add("city", "Bynavn"); - Selection = (from x in Items where x.Key == _preferences.CompanySort select x.Key).First(); + Selection = _preferences.CompanySort; } private async Task OnSelectionChanged(ChangeEventArgs e) { var val = e.Value.ToString(); + if (val == "-1") return; await OnChanged.InvokeAsync(val); await UserPreferenceService.SetCompanySort(val); } diff --git a/Wonky.Client/Components/ItemGroupDropdown.razor b/Wonky.Client/Components/ItemGroupDropdown.razor index 586e29ac..b4f08019 100644 --- a/Wonky.Client/Components/ItemGroupDropdown.razor +++ b/Wonky.Client/Components/ItemGroupDropdown.razor @@ -15,9 +15,13 @@ // *@ - + + + + + + + + \ No newline at end of file diff --git a/Wonky.Client/Components/ItemGroupDropdown.razor.cs b/Wonky.Client/Components/ItemGroupDropdown.razor.cs index 0923b544..1157e4cf 100644 --- a/Wonky.Client/Components/ItemGroupDropdown.razor.cs +++ b/Wonky.Client/Components/ItemGroupDropdown.razor.cs @@ -20,40 +20,18 @@ using Wonky.Client.Services; namespace Wonky.Client.Components; -public partial class ItemGroupDropdown : IDisposable +public partial class ItemGroupDropdown { [Inject] private ILocalStorageService LocalStorage { get; set; } [Inject] private UserPreferenceService UserPreferenceService { get; set; } [Parameter] public EventCallback OnChanged { get; set; } private Dictionary Items { get; set; } = new(); private Preferences _preferences = new(); - private string Selection { get; set; } - protected override async Task OnInitializedAsync() - { - UserPreferenceService.OnChange += ProfileServiceOnOnChange; - _preferences = await UserPreferenceService.GetPreferences(); - - Items.Add("0", "Alle"); - Items.Add("1", "Lim Sealer Reparation"); - Items.Add("2", "Grunder Maling"); - Items.Add("3", "Smøremidler"); - Items.Add("4", "Rens Polish"); - Items.Add("5", "Tape Selvklæbende"); - Items.Add("6", "Tilbehør Diverse"); - } - + private string? Selection { get; set; } private async Task OnSelectionChanged(ChangeEventArgs e) { var val = e.Value.ToString(); + if (val == "-1") return; await OnChanged.InvokeAsync(val); } - private void ProfileServiceOnOnChange(Preferences newPreferences) - { - _preferences = newPreferences; - StateHasChanged(); - } - public void Dispose() - { - UserPreferenceService.OnChange -= ProfileServiceOnOnChange; - } } \ No newline at end of file diff --git a/Wonky.Client/Components/ItemSearchDropdown.razor b/Wonky.Client/Components/ItemSearchDropdown.razor index 97c09342..67c49936 100644 --- a/Wonky.Client/Components/ItemSearchDropdown.razor +++ b/Wonky.Client/Components/ItemSearchDropdown.razor @@ -15,9 +15,9 @@ // *@ - + + + + \ No newline at end of file diff --git a/Wonky.Client/Components/ItemSearchDropdown.razor.cs b/Wonky.Client/Components/ItemSearchDropdown.razor.cs index 6a0e1109..82993878 100644 --- a/Wonky.Client/Components/ItemSearchDropdown.razor.cs +++ b/Wonky.Client/Components/ItemSearchDropdown.razor.cs @@ -26,19 +26,17 @@ public partial class ItemSearchDropdown : IDisposable [Parameter] public EventCallback OnChanged { get; set; } private Dictionary Items { get; set; } = new(); private Preferences _preferences = new(); - private string Selection { get; set; } = "name"; + private string? Selection { get; set; } protected override async Task OnInitializedAsync() { UserPreferenceService.OnChange += ProfileServiceOnOnChange; _preferences = await UserPreferenceService.GetPreferences(); - Items.Add("name", "Varenavn"); - Items.Add("sku", "Varenr"); - Items.Add("shortName", "Forkortelse"); - Selection = (from x in Items where x.Key == _preferences.ItemSearch select x.Key).First(); + Selection = _preferences.ItemSearch; } private async Task OnSelectChanged(ChangeEventArgs e) { var val = e.Value.ToString(); + if (val == "-1") return; await OnChanged.InvokeAsync(val); await UserPreferenceService.SetItemSearch(val); } diff --git a/Wonky.Client/Components/ItemSortDropdown.razor b/Wonky.Client/Components/ItemSortDropdown.razor index 6e8e7fd5..2f81875e 100644 --- a/Wonky.Client/Components/ItemSortDropdown.razor +++ b/Wonky.Client/Components/ItemSortDropdown.razor @@ -15,9 +15,8 @@ // *@ - + + + \ No newline at end of file diff --git a/Wonky.Client/Components/ItemSortDropdown.razor.cs b/Wonky.Client/Components/ItemSortDropdown.razor.cs index 12f32650..51a2adf8 100644 --- a/Wonky.Client/Components/ItemSortDropdown.razor.cs +++ b/Wonky.Client/Components/ItemSortDropdown.razor.cs @@ -26,18 +26,17 @@ public partial class ItemSortDropdown : IDisposable [Parameter] public EventCallback OnChanged { get; set; } private Dictionary Items { get; set; } = new(); private Preferences _preferences = new(); - private string Selection { get; set; } = "name"; + private string? Selection { get; set; } protected override async Task OnInitializedAsync() { UserPreferenceService.OnChange += ProfileServiceOnOnChange; _preferences = await UserPreferenceService.GetPreferences(); - Items.Add("name", "Varenavn"); - Items.Add("sku", "Varenr"); - Selection = (from x in Items where x.Key == _preferences.ItemSort select x.Key).First(); + Selection = _preferences.ItemSort; } private async Task OnSelectChanged(ChangeEventArgs e) { var val = e.Value.ToString(); + if (val == "-1") return; await OnChanged.InvokeAsync(val); await UserPreferenceService.SetItemSort(val); } diff --git a/Wonky.Client/Components/PageSizeDropdown.razor b/Wonky.Client/Components/PageSizeDropdown.razor index f6950488..054f4f04 100644 --- a/Wonky.Client/Components/PageSizeDropdown.razor +++ b/Wonky.Client/Components/PageSizeDropdown.razor @@ -15,11 +15,13 @@ // *@ - + + + + + + \ No newline at end of file diff --git a/Wonky.Client/Components/PageSizeDropdown.razor.cs b/Wonky.Client/Components/PageSizeDropdown.razor.cs index 320a0f0e..cdcaffc3 100644 --- a/Wonky.Client/Components/PageSizeDropdown.razor.cs +++ b/Wonky.Client/Components/PageSizeDropdown.razor.cs @@ -33,13 +33,7 @@ namespace Wonky.Client.Components { UserPreferenceService.OnChange += ProfileServiceOnOnChange; _preferences = await UserPreferenceService.GetPreferences(); - - Items.Add("5", "5"); - Items.Add("10", "10"); - Items.Add("15", "15"); - Items.Add("30", "30"); - Items.Add("50", "50"); - Selection = (from x in Items where x.Key == _preferences.PageSize select x.Key).First(); + Selection = _preferences.PageSize; } private async Task OnSelectChanged(ChangeEventArgs e) { diff --git a/Wonky.Client/Components/RegLookupAddress.razor b/Wonky.Client/Components/RegLookupAddress.razor index 12d046ad..eb9b4541 100644 --- a/Wonky.Client/Components/RegLookupAddress.razor +++ b/Wonky.Client/Components/RegLookupAddress.razor @@ -14,8 +14,6 @@ // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // *@ -@using Microsoft.VisualBasic -@using System.Diagnostics
diff --git a/Wonky.Client/Components/VatAddressInputComponent.razor b/Wonky.Client/Components/VatAddressInputComponent.razor new file mode 100644 index 00000000..02edd478 --- /dev/null +++ b/Wonky.Client/Components/VatAddressInputComponent.razor @@ -0,0 +1,24 @@ + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
\ No newline at end of file diff --git a/Wonky.Client/Components/VatAddressInputComponent.razor.cs b/Wonky.Client/Components/VatAddressInputComponent.razor.cs new file mode 100644 index 00000000..63e3d564 --- /dev/null +++ b/Wonky.Client/Components/VatAddressInputComponent.razor.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Forms; +using Wonky.Client.Models; + +namespace Wonky.Client.Components; +public partial class VatAddressInputComponent : IDisposable +{ + private VatAddress Address { get; set; } = new(); + private EditContext? _editAddress; + private bool _formInvalid = true; + [Parameter] public EventCallback OnValidSubmit { get; set; } + protected override void OnInitialized() + { + _editAddress = new EditContext(Address); + _editAddress.OnFieldChanged += HandleFieldChanged; + } + private async Task SubmitForm() + { + await OnValidSubmit.InvokeAsync(Address); + } + private void HandleFieldChanged(object? sender, FieldChangedEventArgs e) + { + _formInvalid = !_editAddress!.Validate(); + StateHasChanged(); + } + public void Dispose() + { + _editAddress!.OnFieldChanged -= HandleFieldChanged; + } +} \ No newline at end of file diff --git a/Wonky.Client/Components/VatNumberInputComponent.razor b/Wonky.Client/Components/VatNumberInputComponent.razor new file mode 100644 index 00000000..8ec2f571 --- /dev/null +++ b/Wonky.Client/Components/VatNumberInputComponent.razor @@ -0,0 +1,14 @@ + + + +
+
+ + +
+
+ +
+
+
\ No newline at end of file diff --git a/Wonky.Client/Components/VatNumberInputComponent.razor.cs b/Wonky.Client/Components/VatNumberInputComponent.razor.cs new file mode 100644 index 00000000..76af8175 --- /dev/null +++ b/Wonky.Client/Components/VatNumberInputComponent.razor.cs @@ -0,0 +1,30 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Forms; + +namespace Wonky.Client.Components; +public partial class VatNumberInputComponent : IDisposable +{ + private string VatNumber { get; set; } = ""; + private EditContext? _editVatNumber; + private bool _formInvalid = true; + [Parameter] public EventCallback OnValidSubmit { get; set; } + protected override void OnInitialized() + { + _editVatNumber = new EditContext(VatNumber); + _editVatNumber.OnFieldChanged += HandleFieldChanged; + } + private async Task SubmitForm() + { + await OnValidSubmit.InvokeAsync(VatNumber); + } + private void HandleFieldChanged(object? sender, FieldChangedEventArgs e) + { + _formInvalid = !_editVatNumber!.Validate(); + StateHasChanged(); + } + public void Dispose() + { + _editVatNumber!.OnFieldChanged -= HandleFieldChanged; + } +} \ No newline at end of file diff --git a/Wonky.Client/Models/VatAddress.cs b/Wonky.Client/Models/VatAddress.cs new file mode 100644 index 00000000..28eeb170 --- /dev/null +++ b/Wonky.Client/Models/VatAddress.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace Wonky.Client.Models; + +public class VatAddress +{ + [Required] public string? StreetName { get; set; } + [Required] public string? HouseNumber { get; set; } + [Required] public string? ZipCode { get; set; } +} \ No newline at end of file diff --git a/Wonky.Client/Pages/CompanyCreate.razor b/Wonky.Client/Pages/CompanyCreate.razor index 5e6219bf..5bf420a9 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor +++ b/Wonky.Client/Pages/CompanyCreate.razor @@ -17,58 +17,43 @@ @page "/company/create" @using Microsoft.AspNetCore.Authorization - +@using Wonky.Client.Components @attribute [Authorize(Roles = "Adviser")] -

Opret firma

+

Opret firma

-
- @if(_virkRegInfo.VatNumber != string.Empty) +
+ +
+
+
+
+ + @if (VInfos.Any()) { - foreach (var state in _virkRegInfo.States) + @foreach (var info in VInfos) { - +
+
+ @info.VatNumber +
+
+ @info.Name +
+
+ @info.States[^1].State +
+
+ +
+
} }
-
- - -
- -
- -
-
- -
-
-
-
-@* *@ + - @* *@
@@ -84,7 +69,7 @@
- +
@@ -104,10 +89,9 @@
- +
-
diff --git a/Wonky.Client/Pages/CompanyCreate.razor.cs b/Wonky.Client/Pages/CompanyCreate.razor.cs index 7b9d0045..0717b72d 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor.cs +++ b/Wonky.Client/Pages/CompanyCreate.razor.cs @@ -25,6 +25,7 @@ using Wonky.Client.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using Microsoft.Extensions.Logging; +using Wonky.Client.Models; using Wonky.Entity.DTO; using Wonky.Entity.Models; using Wonky.Entity.Requests; @@ -37,10 +38,8 @@ namespace Wonky.Client.Pages private VirkRegInfo _virkRegInfo = new(); private EditContext _editContext; private bool _formInvalid = true; - - private EditContext _cvrContext; - private bool _cvrInvalid = true; private VirkParams _virkParams = new(); + private List VInfos { get; set; } = new(); [Required] public string VatToLookup { get; set; } = ""; [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } [Inject] public HttpInterceptorService Interceptor { get; set; } @@ -54,11 +53,7 @@ namespace Wonky.Client.Pages { _editContext = new EditContext(_companyDto); _editContext.OnFieldChanged += HandleFieldChanged; - - _cvrContext = new EditContext(VatToLookup); - _cvrContext.OnFieldChanged += HandleCvrChanged; - _cvrContext.OnValidationStateChanged += CvrValidationChanged; - + var ux = await StorageService.GetItemAsync("_ux"); _companyDto.SalesRepId = ux.Id; @@ -66,15 +61,31 @@ namespace Wonky.Client.Pages Interceptor.RegisterBeforeSendEvent(); } - private async Task GetCvrDataFromVat() + private async Task GetInfoFromAddress(VatAddress address) { - var result = await VirkRegistryService.QueryVirkRegistry(new VirkParams {VatNumber = VatToLookup}).ConfigureAwait(true); + VInfos = await VirkRegistryService.QueryVirkRegistry( + new VirkParams + { + StreetName = address.StreetName, + HouseNumber = address.HouseNumber, + ZipCode = address.ZipCode + }); + if (!VInfos.Any()) + { + ToastService.ShowError($"Ingen virksomheder fundet."); + } + } + private async Task GetInfoFromVat(string vatNumber) + { + var result = await VirkRegistryService + .QueryVirkRegistry(new VirkParams {VatNumber = vatNumber}); + if (!result.Any()) { - ToastService.ShowError($"Firma med CVR '{VatToLookup}' findes ikke."); + ToastService.ShowError($"Firma med CVR '{vatNumber}' findes ikke."); return; } - ToastService.ShowSuccess($"Data for '{VatToLookup}' er hentet."); + ToastService.ShowSuccess($"Data for '{vatNumber}' er hentet."); _virkRegInfo = result[0]; _companyDto.Name = _virkRegInfo.Name; _companyDto.Address1 = _virkRegInfo.CoName; @@ -83,29 +94,24 @@ namespace Wonky.Client.Pages _companyDto.City = _virkRegInfo.City; _companyDto.VatNumber = _virkRegInfo.VatNumber; } - + + private void SelectCompany(string vatNumber) + { + _virkRegInfo = (from x in VInfos where x.VatNumber == vatNumber select x).First(); + _companyDto.Name = _virkRegInfo.Name; + _companyDto.Address1 = _virkRegInfo.CoName; + _companyDto.Address2 = _virkRegInfo.Address; + _companyDto.ZipCode = _virkRegInfo.ZipCode; + _companyDto.City = _virkRegInfo.City; + _companyDto.VatNumber = _virkRegInfo.VatNumber; + } private async Task Create() { var newId = await CompanyRepo.CreateCompany(_companyDto); ToastService.ShowSuccess($"Godt så! '{_companyDto.Name}' er oprettet i CRM."); Navigation.NavigateTo($"/company/{newId}"); } - - private void HandleCvrChanged(object sender, FieldChangedEventArgs e) - { - _cvrInvalid = !_cvrContext.Validate(); - StateHasChanged(); - } - - private void CvrValidationChanged(object sender, ValidationStateChangedEventArgs e) - { - _cvrInvalid = true; - _cvrContext.OnFieldChanged -= HandleCvrChanged; - _cvrContext = new EditContext(VatToLookup); - _cvrContext.OnFieldChanged += HandleCvrChanged; - _cvrContext.OnValidationStateChanged -= CvrValidationChanged; - } - + private void HandleFieldChanged(object sender, FieldChangedEventArgs e) { _formInvalid = !_editContext.Validate(); diff --git a/Wonky.Client/Pages/CompanyList.razor b/Wonky.Client/Pages/CompanyList.razor index 41633c14..8eaf1070 100644 --- a/Wonky.Client/Pages/CompanyList.razor +++ b/Wonky.Client/Pages/CompanyList.razor @@ -24,19 +24,16 @@
-
-
-
diff --git a/Wonky.Client/Pages/CompanyUpdate.razor b/Wonky.Client/Pages/CompanyUpdate.razor index b1df9172..20fffb11 100644 --- a/Wonky.Client/Pages/CompanyUpdate.razor +++ b/Wonky.Client/Pages/CompanyUpdate.razor @@ -23,104 +23,90 @@ @if (_companyDto != null) { -
-
-
- @_companyDto.Name -
- @_companyDto.CompanyId -
- @if (!string.IsNullOrEmpty(_companyDto.VatNumber)) - { -
- +
+
+ + +
+ +
+ + +
- } -
- @* *@ - - - @* *@ -
- -
- - -
+
+ +
+
-
- -
- -
+
+
+ +
+
-
- -
- -
+
+
+ +
+ +
-
- -
- - -
+
+
+ +
+ +
-
- -
- - -
+
+
+ +
+ +
-
- -
- - -
+
+
+ +
+
-
- -
- -
+
+
+ +
+
-
- -
- -
+
+
+ +
+
-
- -
- -
-
-
- -
- -
+
+
+ +
+
+
-
-
- -
-
- -
-