-
SortProducts(PSort.Desc)"> Navn
-
SortProducts(PSort.Sku)"> Varenr
-
SortProducts(PSort.Qty)"> Antal
+
SortProducts(ProductSort.Desc)"> Navn
+
SortProducts(ProductSort.Sku)"> Varenr
+
SortProducts(ProductSort.Qty)"> Antal
diff --git a/Wonky.Client/OverlayOffice/OfficeCustomerProductListOverlay.razor.cs b/Wonky.Client/OverlayOffice/OfficeCustomerProductListOverlay.razor.cs
index 7287c3f9..1a700c2f 100644
--- a/Wonky.Client/OverlayOffice/OfficeCustomerProductListOverlay.razor.cs
+++ b/Wonky.Client/OverlayOffice/OfficeCustomerProductListOverlay.razor.cs
@@ -58,12 +58,12 @@ public partial class OfficeCustomerProductListOverlay : IDisposable
ReorderOverlay.Show();
}
- private void SortProducts(PSort column)
+ private void SortProducts(ProductSort column)
{
Descending = !Descending;
switch (column)
{
- case PSort.Desc:
+ case ProductSort.Desc:
if (Descending)
{
Inventory = Inventory.OrderByDescending(x => x.Description).ToList();
@@ -72,7 +72,7 @@ public partial class OfficeCustomerProductListOverlay : IDisposable
Inventory = Inventory.OrderBy(x => x.Description).ToList();
break;
- case PSort.Sku:
+ case ProductSort.Sku:
if (Descending)
{
Inventory = Inventory.OrderByDescending(x => x.Sku).ToList();
@@ -81,7 +81,7 @@ public partial class OfficeCustomerProductListOverlay : IDisposable
Inventory = Inventory.OrderBy(x => x.Sku).ToList();
break;
- case PSort.Qty:
+ case ProductSort.Qty:
if (Descending)
{
Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList();
@@ -90,9 +90,9 @@ public partial class OfficeCustomerProductListOverlay : IDisposable
Inventory = Inventory.OrderBy(x => x.Quantity).ToList();
break;
- case PSort.None:
+ case ProductSort.None:
break;
- case PSort.Abbr:
+ case ProductSort.Abbr:
break;
default:
Inventory = Inventory.OrderByDescending(x => x.Quantity).ToList();
diff --git a/Wonky.Client/Pages/AdvisorQuoteListPage.razor b/Wonky.Client/Pages/AdvisorQuoteListPage.razor
index 7de175dc..a5e412ef 100644
--- a/Wonky.Client/Pages/AdvisorQuoteListPage.razor
+++ b/Wonky.Client/Pages/AdvisorQuoteListPage.razor
@@ -27,22 +27,22 @@
- FilterQuotes(QStatus.All)"/>
+ FilterQuotes(QuoteStatus.All)"/>
- FilterQuotes(QStatus.Lose)"/>
+ FilterQuotes(QuoteStatus.Lose)"/>
- FilterQuotes(QStatus.Archive)"/>
+ FilterQuotes(QuoteStatus.Archive)"/>
- FilterQuotes(QStatus.None)"/>
+ FilterQuotes(QuoteStatus.None)"/>
- FilterQuotes(QStatus.Note)"/>
+ FilterQuotes(QuoteStatus.Note)"/>
- FilterQuotes(QStatus.NoteOpen)" checked/>
+ FilterQuotes(QuoteStatus.NoteOpen)" checked/>
diff --git a/Wonky.Client/Pages/AdvisorQuoteListPage.razor.cs b/Wonky.Client/Pages/AdvisorQuoteListPage.razor.cs
index b8c3b5c5..b2ee118a 100644
--- a/Wonky.Client/Pages/AdvisorQuoteListPage.razor.cs
+++ b/Wonky.Client/Pages/AdvisorQuoteListPage.razor.cs
@@ -36,7 +36,7 @@ public partial class AdvisorQuoteListPage : IDisposable
private List
QuoteList { get; set; } = new();
private List FilteredQuotes { get; set; } = new();
private bool Working { get; set; }
- private QStatus QFilter { get; set; } = QStatus.NoteOpen;
+ private QuoteStatus QuoteFilter { get; set; } = QuoteStatus.NoteOpen;
protected override async Task OnInitializedAsync()
{
@@ -48,20 +48,20 @@ public partial class AdvisorQuoteListPage : IDisposable
Working = false;
// filter quotes - if any - default to QStatus.NoteOpen
if (QuoteList.Any())
- await FilterQuotes(QFilter);
+ await FilterQuotes(QuoteFilter);
}
- private async Task FilterQuotes(QStatus status)
+ private async Task FilterQuotes(QuoteStatus status)
{
- QFilter = status;
+ QuoteFilter = status;
QuoteList = await Storage.GetItemAsync>("quotes");
- FilteredQuotes = QFilter switch
+ FilteredQuotes = QuoteFilter switch
{
- QStatus.None => QuoteList.Where(x => x.QuoteStatusEnum is "None").ToList(),
- QStatus.Lose => QuoteList.Where(x => x.QuoteStatusEnum is "Lose").ToList(),
- QStatus.Archive => QuoteList.Where(x => x.QuoteStatusEnum is "Archive").ToList(),
- QStatus.Note => QuoteList.Where(x => x.QuoteStatusEnum is "Note").ToList(),
- QStatus.NoteOpen => QuoteList.Where(x => x.QuoteStatusEnum is "Note" or "None").ToList(),
+ QuoteStatus.None => QuoteList.Where(x => x.QuoteStatusEnum is "None").ToList(),
+ QuoteStatus.Lose => QuoteList.Where(x => x.QuoteStatusEnum is "Lose").ToList(),
+ QuoteStatus.Archive => QuoteList.Where(x => x.QuoteStatusEnum is "Archive").ToList(),
+ QuoteStatus.Note => QuoteList.Where(x => x.QuoteStatusEnum is "Note").ToList(),
+ QuoteStatus.NoteOpen => QuoteList.Where(x => x.QuoteStatusEnum is "Note" or "None").ToList(),
_ => QuoteList.ToList()
};
}
@@ -71,7 +71,7 @@ public partial class AdvisorQuoteListPage : IDisposable
Working = true;
// find the quote to update
var quote = QuoteList.First(x => x.ESalesNumber == args.ESalesNumber);
- if (args.Status == QStatus.Win)
+ if (args.Status == QuoteStatus.Order)
quote.OrderDate = $"{DateTime.Now:yyyy-MM-dd}";
quote.QuoteStatusEnum = Utils.EnumToString(args.Status);
// send update request to backend
@@ -85,7 +85,7 @@ public partial class AdvisorQuoteListPage : IDisposable
await Storage.SetItemAsync("quotes", QuoteList.OrderBy(x => x.Company.Name));
// filter quotes - if any - based on active filter
if(QuoteList.Any())
- await FilterQuotes(QFilter);
+ await FilterQuotes(QuoteFilter);
Working = false;
// signal page state changed
StateHasChanged();
diff --git a/Wonky.Client/Pages/AdvisorReportViewPage.razor b/Wonky.Client/Pages/AdvisorReportViewPage.razor
index 8a67c4ac..9185316c 100644
--- a/Wonky.Client/Pages/AdvisorReportViewPage.razor
+++ b/Wonky.Client/Pages/AdvisorReportViewPage.razor
@@ -26,10 +26,10 @@
-
+
-
+
diff --git a/Wonky.Client/Pages/AdvisorReportViewPage.razor.cs b/Wonky.Client/Pages/AdvisorReportViewPage.razor.cs
index f02820ee..b93f6563 100644
--- a/Wonky.Client/Pages/AdvisorReportViewPage.razor.cs
+++ b/Wonky.Client/Pages/AdvisorReportViewPage.razor.cs
@@ -58,21 +58,21 @@ public partial class AdvisorReportViewPage : IDisposable
await FetchReport(ReportDate);
}
- private void Print(PTarget target)
+ private void Print(PrintTarget target)
{
ReturnUrl = new Uri(Navigator.Uri).AbsolutePath;
switch (target)
{
- case PTarget.OrderPage:
+ case PrintTarget.OrderPage:
Navigator.NavigateTo($"/report/print/orders/{XUserInfo.CountryCode.ToLower()}/{XUserInfo.UserId}/{ReportDate}?returnUrl={ReturnUrl}");
break;
- case PTarget.FrontPage:
+ case PrintTarget.FrontPage:
Navigator.NavigateTo($"/report/print/summary/{XUserInfo.CountryCode.ToLower()}/{XUserInfo.UserId}/{ReportDate}?returnUrl={ReturnUrl}");
break;
- case PTarget.None:
+ case PrintTarget.None:
break;
- case PTarget.All:
+ case PrintTarget.All:
break;
default:
throw new ArgumentOutOfRangeException(nameof(target), target, null);
diff --git a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs
index 4bf9bf87..820fbbf8 100644
--- a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs
+++ b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs
@@ -74,7 +74,7 @@ public partial class CommonReportPrintOrderPage
await ProcessRepo.UpdateWarehouseOrderStatus(new OrderProcessState
{
OrderId = item.ActivityId,
- ProcessStatusEnum = Utils.EnumToString(PStatus.Accepted)
+ ProcessStatusEnum = Utils.EnumToString(ProcessStatus.Printed)
});
}
Toaster.ClearAll();
diff --git a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor
index 9e6eed46..b65242c3 100644
--- a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor
+++ b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor
@@ -26,10 +26,10 @@
-
+
-
+
diff --git a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs
index 559d1e5c..2e823267 100644
--- a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs
+++ b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs
@@ -69,20 +69,20 @@ public partial class OfficeAdvisorReportViewPage : IDisposable
.InvokeAsync
("import", "/scripts/print-invoke.js");
}
}
- private void Print(PTarget target)
+ private void Print(PrintTarget target)
{
_returnUrl = new Uri(Navigator.Uri).AbsolutePath;
switch (target)
{
- case PTarget.OrderPage:
+ case PrintTarget.OrderPage:
Navigator.NavigateTo($"/report/print/orders/{CountryCode}/{UserId}/{ReportDate}?returnUrl={_returnUrl}");
break;
- case PTarget.FrontPage:
+ case PrintTarget.FrontPage:
Navigator.NavigateTo($"/report/print/summary/{CountryCode}/{UserId}/{ReportDate}?returnUrl={_returnUrl}");
break;
- case PTarget.None:
+ case PrintTarget.None:
break;
- case PTarget.All:
+ case PrintTarget.All:
break;
default:
throw new ArgumentOutOfRangeException(nameof(target), target, null);
@@ -101,7 +101,7 @@ public partial class OfficeAdvisorReportViewPage : IDisposable
await ProcessRepo.UpdateWarehouseOrderStatus(new OrderProcessState
{
OrderId = item.ActivityId,
- ProcessStatusEnum = Utils.EnumToString(PStatus.Accepted)
+ ProcessStatusEnum = Utils.EnumToString(ProcessStatus.Printed)
});
}
Toaster.ClearAll();
diff --git a/Wonky.Client/Pages/SystemUserCreatePage.razor b/Wonky.Client/Pages/SystemUserCreatePage.razor
index 5700986d..3c5a94f2 100644
--- a/Wonky.Client/Pages/SystemUserCreatePage.razor
+++ b/Wonky.Client/Pages/SystemUserCreatePage.razor
@@ -22,113 +22,116 @@
- @if (!string.IsNullOrWhiteSpace(UserInfo.UserId))
- {
-
-
-
-
-
-
-
-
- Fornavn
- |
-
-
-
- |
-
- Efternavn
- |
-
-
-
- |
-
-
-
- Email
- |
-
-
-
- |
-
- Mobilnummer
- |
-
-
-
- |
-
-
-
- Sælgernr.
- |
-
-
-
- |
-
- Landekode
- |
-
-
-
- |
-
-
-
- Spærret
- |
-
-
-
- |
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
- NULSTIL ADGANGSKODE
-
-
Password politik
-
Mindst 10 tegn bestående af store og små bogstaver samt tal. Du kan teste pasword og danne stærke password på pw.nix.dk
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
- }
+
+
+
+
+
+
+
+ @*
+
+
+
+
+
+ *@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Password politik
+
Mindst 10 tegn bestående af store og små bogstaver samt tal. Du kan teste pasword og danne stærke password på pw.nix.dk
+
+
+
+
@@ -136,4 +139,4 @@
@if (Working)
{
-}
+}
\ No newline at end of file
diff --git a/Wonky.Client/Pages/SystemUserCreatePage.razor.cs b/Wonky.Client/Pages/SystemUserCreatePage.razor.cs
index 72958e5f..7fca5b66 100644
--- a/Wonky.Client/Pages/SystemUserCreatePage.razor.cs
+++ b/Wonky.Client/Pages/SystemUserCreatePage.razor.cs
@@ -21,6 +21,7 @@ using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.Helpers;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
+using Wonky.Client.Models;
using Wonky.Entity.DTO;
#pragma warning disable CS8618
@@ -33,14 +34,14 @@ public partial class SystemUserCreatePage : IDisposable
[Inject] public ISystemUserRepository UserRepo { get; set; }
[Inject] public ILogger Logger { get; set; }
[Inject] public IToastService Toaster { get; set; }
- private UserManagerEditView UserInfo { get; set; } = new();
- private EditContext UserEditContext { get; set; }
- private ResetPasswordDto Passwords { get; set; } = new();
- private EditContext PasswdContext { get; set; }
- private bool PwInvalid { get; set; } = true;
+ private UserManagerCreate NewUserInfo { get; set; } = new();
+ private EditContext NewUserContext { get; set; }
+ private bool ContextInvalid { get; set; } = true;
private bool Working { get; set; } = true;
private bool ReadOnly { get; set; } = true;
-
+ private PasswordInput PasswdInput { get; set; } = new();
+ private AssignedRoles AssignedRoles { get; set; } = new();
+
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
@@ -51,48 +52,65 @@ public partial class SystemUserCreatePage : IDisposable
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
- UserEditContext = new EditContext(UserInfo);
- PasswdContext = new EditContext(Passwords);
+ NewUserContext = new EditContext(NewUserInfo);
- PasswdContext.OnFieldChanged += PwHandleFieldChanged!;
- PasswdContext.OnValidationStateChanged += PwValidationChanged;
+ NewUserContext.OnFieldChanged += ContextHandleFieldChanged!;
+ NewUserContext.OnValidationStateChanged += ContextValidationChanged;
Working = false;
}
private async Task CreateUser()
{
+ // NewUserInfo.AssignedRoles = new List()
+ // {
+ // new (){ Name = "Admin", Assigned = false },
+ // new (){ Name = "Advisor", Assigned = false },
+ // new (){ Name = "Management", Assigned = false },
+ // new (){ Name = "Office", Assigned = false },
+ // new (){ Name = "Supervisor", Assigned = false },
+ // new (){ Name = "Warehouse", Assigned = false },
+ // };
+
ReadOnly = true;
Working = true;
Toaster.ShowInfo("Sender data til server ...");
- await UserRepo.CreateUser(UserInfo);
+ await UserRepo.CreateUser(NewUserInfo);
Working = false;
Toaster.ShowInfo("Bruger er oprettet ...");
}
- private void PwHandleFieldChanged(object sender, FieldChangedEventArgs e)
+ private void ContextHandleFieldChanged(object sender, FieldChangedEventArgs e)
{
- PwInvalid = !PasswdContext.Validate();
+ Logger.LogDebug("contextHandleFieldChanged => e.FieldIdentifier.FieldName {}", e.FieldIdentifier.FieldName);
+ if (e.FieldIdentifier.FieldName == "NewPassword")
+ {
+ if (!Utils.IsValidPasswd(PasswdInput.NewPassword))
+ {
+ ContextInvalid = true;
+ return;
+ }
+ }
+ NewUserInfo.Passwd = PasswdInput.NewPassword;
+ ContextInvalid = !NewUserContext.Validate();
StateHasChanged();
}
- private void PwValidationChanged(object? sender, ValidationStateChangedEventArgs e)
+ private void ContextValidationChanged(object? sender, ValidationStateChangedEventArgs e)
{
- PwInvalid = true;
- if (!Utils.IsValidPasswd(Passwords.NewPassword))
- return;
+ ContextInvalid = true;
- PasswdContext.OnFieldChanged -= PwHandleFieldChanged!;
- PasswdContext.OnValidationStateChanged -= PwValidationChanged;
+ NewUserContext.OnFieldChanged -= ContextHandleFieldChanged!;
+ NewUserContext.OnValidationStateChanged -= ContextValidationChanged;
- PasswdContext = new EditContext(Passwords);
+ NewUserContext = new EditContext(NewUserInfo);
- PasswdContext.OnFieldChanged += PwHandleFieldChanged!;
- PasswdContext.OnValidationStateChanged += PwValidationChanged;
+ NewUserContext.OnFieldChanged += ContextHandleFieldChanged!;
+ NewUserContext.OnValidationStateChanged += ContextValidationChanged;
}
public void Dispose()
{
Interceptor.DisposeEvent();
- PasswdContext.OnFieldChanged -= PwHandleFieldChanged!;
- PasswdContext.OnValidationStateChanged -= PwValidationChanged;
+ NewUserContext.OnFieldChanged -= ContextHandleFieldChanged!;
+ NewUserContext.OnValidationStateChanged -= ContextValidationChanged;
}
}
\ No newline at end of file
diff --git a/Wonky.Client/Pages/SystemUserListPage.razor b/Wonky.Client/Pages/SystemUserListPage.razor
index 920bffc2..be1c985e 100644
--- a/Wonky.Client/Pages/SystemUserListPage.razor
+++ b/Wonky.Client/Pages/SystemUserListPage.razor
@@ -19,9 +19,18 @@
@attribute [Authorize(Roles = "Admin")]
@page "/system/users"
-Admin User List Page
+Administrativ - Bruger liste
+
+
+
Administrativ - Bruger liste
+
+
+
-Admin User List Page
diff --git a/Wonky.Client/Pages/WarehouseOrderListPage.razor.cs b/Wonky.Client/Pages/WarehouseOrderListPage.razor.cs
index a59dcbbb..cbaa4ba0 100644
--- a/Wonky.Client/Pages/WarehouseOrderListPage.razor.cs
+++ b/Wonky.Client/Pages/WarehouseOrderListPage.razor.cs
@@ -44,29 +44,29 @@ public partial class WarehouseOrderListPage : IDisposable
OrderList = await FetchOrders(Status);
}
- private async Task GetStatusCallback(PStatus status)
+ private async Task GetStatusCallback(ProcessStatus status)
{
Working = true;
OrderList = new List();
switch (status)
{
- case PStatus.None or PStatus.Accepted:
+ case ProcessStatus.None or ProcessStatus.Printed:
Header = "Ubehandlede ordrer";
ReadyToShip = false;
break;
- case PStatus.Picked:
+ case ProcessStatus.Picked:
Header = "Plukkede ordrer";
ReadyToShip = false;
break;
- case PStatus.Packed:
+ case ProcessStatus.Packed:
Header = "Pakkede ordrer";
ReadyToShip = true;
break;
- case PStatus.Shipped:
+ case ProcessStatus.Shipped:
break;
- case PStatus.All:
+ case ProcessStatus.All:
break;
- case PStatus.Express:
+ case ProcessStatus.Express:
break;
default:
throw new ArgumentOutOfRangeException(nameof(status), status, null);
diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json
index 7c99709d..b27806b6 100644
--- a/Wonky.Client/wwwroot/appsettings.json
+++ b/Wonky.Client/wwwroot/appsettings.json
@@ -9,7 +9,7 @@
"Logging": {
"LogLevel": {
"Default": "Debug",
- "System": "Information",
+ "System": "Debug",
"Microsoft": "Information"
},
"Debug": {
diff --git a/Wonky.Entity/DTO/SubjectAssignment.cs b/Wonky.Entity/DTO/SubjectAssignment.cs
new file mode 100644
index 00000000..972bbb3f
--- /dev/null
+++ b/Wonky.Entity/DTO/SubjectAssignment.cs
@@ -0,0 +1,24 @@
+
+// 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]
+//
+
+namespace Wonky.Entity.DTO;
+
+public class SubjectAssignment
+{
+ public string Name { get; set; }
+ public string UserId { get; set; }
+ public bool Assigned { get; set; }
+}
\ No newline at end of file
diff --git a/Wonky.Entity/DTO/UserManagerCreate.cs b/Wonky.Entity/DTO/UserManagerCreate.cs
new file mode 100644
index 00000000..abc020d0
--- /dev/null
+++ b/Wonky.Entity/DTO/UserManagerCreate.cs
@@ -0,0 +1,39 @@
+
+// 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.ComponentModel.DataAnnotations;
+
+namespace Wonky.Entity.DTO;
+
+public class UserManagerCreate
+{
+ [MaxLength(128)] public string CompanyId { get; set; } = "";
+ [MaxLength(128)] public string ContactId { get; set; } = "";
+ [Required(ErrorMessage = "Landekode skal udfyldes")][MaxLength(2, ErrorMessage = "Landekode er 2 bogstaver")] public string CountryCode { get; set; } = "";
+ [MaxLength(128, ErrorMessage = "Kort beskrivelse på højst 128 tegn.")] public string Description { get; set; } = "";
+ [Required(ErrorMessage = "Email adresse skal udfyldes")][MaxLength(255, ErrorMessage = "Der er afsat 255 tegn til email adressen")] public string Email { get; set; } = "";
+ public bool EmailConfirmed { get; set; }
+ public bool EShop { get; set; }
+ [Required(ErrorMessage = "Fornavn skal udfyldes")][MaxLength(50, ErrorMessage = "Der er afsat 50 tegn til fornavn")] public string FirstName { get; set; } = "";
+ [Required(ErrorMessage = "Efternavn skal udfyldes")][MaxLength(50, ErrorMessage = "Der er afsat 50 tegn til efternavn")] public string LastName { get; set; } = "";
+ public bool LockoutEnabled { get; set; }
+ public string Passwd { get; set; } = "";
+ [Required(ErrorMessage = "Telefon nummer skal udfyldes")][MaxLength(20, ErrorMessage = "Der er afsat 20 tegn til telefon nummber")] public string PhoneNumber { get; set; } = "";
+ [Required(ErrorMessage = "Medarbejder ID skal udfyldes")][MaxLength(20, ErrorMessage = "Der er afsat 20 tegn til medarbejder ID")] public string SalesRep { get; set; } = "";
+ public string UserId { get; set; } = "";
+ public List AssignedRoles { get; set; } = new();
+ public List AssignedSubjects { get; set; } = new();
+}
\ No newline at end of file
diff --git a/Wonky.Entity/DTO/UserManagerEditView.cs b/Wonky.Entity/DTO/UserManagerEditView.cs
index 58a62e78..5a964d63 100644
--- a/Wonky.Entity/DTO/UserManagerEditView.cs
+++ b/Wonky.Entity/DTO/UserManagerEditView.cs
@@ -22,17 +22,18 @@ public class UserManagerEditView
{
[MaxLength(128)] public string CompanyId { get; set; } = "";
[MaxLength(128)] public string ContactId { get; set; } = "";
- [Required][MaxLength(3)] public string CountryCode { get; set; } = "";
- [MaxLength(128)] public string Description { get; set; } = "";
- [Required][MaxLength(255)] public string Email { get; set; } = "";
+ [Required(ErrorMessage = "Landekode skal udfyldes")][MaxLength(2, ErrorMessage = "Landekode er 2 bogstaver")] public string CountryCode { get; set; } = "";
+ [MaxLength(128, ErrorMessage = "Kort beskrivelse på højst 128 tegn.")] public string Description { get; set; } = "";
+ [Required(ErrorMessage = "Email adresse skal udfyldes")][MaxLength(255, ErrorMessage = "Der er afsat 255 tegn til email adressen")] public string Email { get; set; } = "";
public bool EmailConfirmed { get; set; }
public bool EShop { get; set; }
- [Required][MaxLength(50)] public string FirstName { get; set; } = "";
- [Required][MaxLength(50)] public string LastName { get; set; } = "";
+ [Required(ErrorMessage = "Fornavn skal udfyldes")][MaxLength(50, ErrorMessage = "Der er afsat 50 tegn til fornavn")] public string FirstName { get; set; } = "";
+ [Required(ErrorMessage = "Efternavn skal udfyldes")][MaxLength(50, ErrorMessage = "Der er afsat 50 tegn til efternavn")] public string LastName { get; set; } = "";
public bool LockoutEnabled { get; set; }
public string Passwd { get; set; } = "";
- [Required][MaxLength(20)] public string PhoneNumber { get; set; } = "";
- [Required][MaxLength(20)] public string SalesRep { get; set; } = "";
+ [Required(ErrorMessage = "Telefon nummer skal udfyldes")][MaxLength(20, ErrorMessage = "Der er afsat 20 tegn til telefon nummber")] public string PhoneNumber { get; set; } = "";
+ [Required(ErrorMessage = "Medarbejder ID skal udfyldes")][MaxLength(20, ErrorMessage = "Der er afsat 20 tegn til medarbejder ID")] public string SalesRep { get; set; } = "";
public string UserId { get; set; } = "";
- public List AssignedRoles { get; set; } = new();
+ public List AssignedRoles { get; set; } = new();
+ public List AssignedSubjects { get; set; } = new();
}
\ No newline at end of file