diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs
index 06805ca1..81fbaaa3 100644
--- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs
+++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceListPage.razor.cs
@@ -19,35 +19,47 @@ using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;
+
#pragma warning disable CS8618
namespace Wonky.Client.Pages;
public partial class AdvisorCustomerWorkplaceListPage : IDisposable
{
- [Parameter] public string CompanyId { get; set; } = "";
+ // ###############################################################
[Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; }
[Inject] public IAdvisorCustomerRepository CustomerRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
+
+ // ###############################################################
+ [Parameter] public string CompanyId { get; set; } = "";
+
+ // ###############################################################
private List Workplaces { get; set; } = new();
private CompanyDto Company { get; set; } = new();
private bool Working { get; set; } = true;
- protected override async Task OnParametersSetAsync()
- {
- Interceptor.RegisterEvent();
- Interceptor.RegisterBeforeSendEvent();
- Company = await CustomerRepo.GetCompanyById(CompanyId);
- Working = false;
- }
protected override async Task OnInitializedAsync()
{
- Working = true;
+ Interceptor.RegisterEvent();
+ Interceptor.RegisterBeforeSendEvent();
+
+ Company = await CustomerRepo.GetCompanyById(CompanyId);
+
+ await Task.Delay(150);
+
Workplaces = await WorkplaceRepo.GetWorkplaces(CompanyId);
+
Working = false;
+
}
+ private async Task> GetWorkplaces()
+ {
+ return await WorkplaceRepo.GetWorkplaces(CompanyId);
+ }
+
public void Dispose()
{
Interceptor.DisposeEvent();
diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor
new file mode 100644
index 00000000..01be7c33
--- /dev/null
+++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor
@@ -0,0 +1,114 @@
+@* Copyright (C) 2022 FCS Frede's Computer Services.
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
+*@
+
+@attribute [Authorize(Roles = "Advisor")]
+@page "/advisor/customers/{CompanyId}/workplaces/new"
+@using Microsoft.AspNetCore.Authorization
+
+Opret arbejdssted - @Company.Name
+
+
+
+
+
Opret arbejdssted for @Company.Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Stamdata
+
+
+
+
+
+
Navn
+
+
+
+
+
Beskrivelse
+
+
+
+
+
+
+
+
Placering og Opbevaring
+
+
+
+
Produkter
+
+
+
+
+
Øjenskylleflaske
+
+
+
+
+
+
+
Masker
+
+
+
+
+
Førstehjælp
+
+
+
+
+
+
+
Handsker
+
+
+
+
+
+
+
+
Sikkerhedsbriller
+
+
+
+
+
Affald
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor.cs b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor.cs
new file mode 100644
index 00000000..246d5587
--- /dev/null
+++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceNew.razor.cs
@@ -0,0 +1,107 @@
+// Copyright (C) 2022 FCS Frede's Computer Services.
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html]
+//
+
+using System.Text.Json;
+using Blazored.Toast.Services;
+using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Components.Forms;
+using Wonky.Client.HttpInterceptors;
+using Wonky.Client.HttpRepository;
+using Wonky.Entity.DTO;
+
+namespace Wonky.Client.Pages;
+
+#pragma warning disable CS8618
+
+public partial class AdvisorCustomerWorkplaceNew : IDisposable
+{
+ // ###############################################################
+ [Inject] public HttpInterceptorService Interceptor { get; set; }
+ [Inject] public IAdvisorCustomerRepository CustomerRepo { get; set; }
+ [Inject] public IAdvisorWorkplaceRepository WorkplaceRepo { get; set; }
+ [Inject] public IToastService Toaster { get; set; }
+ [Inject] public ILogger Logger { get; set; }
+
+ // ###############################################################
+ [Parameter] public string CompanyId { get; set; } = "";
+
+
+ // ###############################################################
+ private WorkplaceDto Workplace { get; set; } = new();
+ private EditContext FormContext { get; set; }
+ private CompanyDto Company { get; set; } = new();
+ private bool FormInvalid { get; set; } = true;
+ private bool Working { get; set; } = true;
+
+
+ protected override async Task OnInitializedAsync()
+ {
+ Interceptor.RegisterEvent();
+ Interceptor.RegisterBeforeSendEvent();
+
+ FormContext = new EditContext(Workplace);
+
+ FormContext.OnFieldChanged += HandleFieldChanged!;
+ FormContext.OnValidationStateChanged += ValidationChanged!;
+
+ // get company
+ Company = await GetCompany(CompanyId);
+ while (string.IsNullOrWhiteSpace(Company.CompanyId))
+ {
+ await Task.Delay(150);
+ }
+ Working = false;
+ }
+
+ private async Task GetCompany(string companyId)
+ {
+ return await CustomerRepo.GetCompanyById(companyId);
+ }
+
+ private async Task SubmitWorkplace()
+ {
+ Logger.LogDebug("CompanyId {}", JsonSerializer.Serialize(Workplace));
+ Logger.LogDebug("Workplace {}", JsonSerializer.Serialize(Workplace, new JsonSerializerOptions(JsonSerializerDefaults.Web)));
+ var result = await WorkplaceRepo.CreateWorkplace(CompanyId, Workplace);
+ Logger.LogDebug("HTTP result {}", result);
+ }
+
+ private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
+ {
+
+ FormInvalid = !FormContext.Validate();
+
+ StateHasChanged();
+ }
+
+
+ private void ValidationChanged(object sender, ValidationStateChangedEventArgs e)
+ {
+ FormInvalid = false;
+ FormContext.OnFieldChanged -= HandleFieldChanged!;
+ FormContext.OnValidationStateChanged -= ValidationChanged!;
+ FormContext = new EditContext(Workplace);
+ FormContext.OnFieldChanged += HandleFieldChanged!;
+ FormContext.OnValidationStateChanged += ValidationChanged!;
+ }
+
+
+ public void Dispose()
+ {
+ Interceptor.DisposeEvent();
+ FormContext.OnFieldChanged -= HandleFieldChanged!;
+ FormContext.OnValidationStateChanged -= ValidationChanged!;
+ }
+}
\ No newline at end of file
diff --git a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor
index f110f102..a1406bd2 100644
--- a/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor
+++ b/Wonky.Client/Pages/AdvisorCustomerWorkplaceViewEditPage.razor
@@ -28,84 +28,81 @@