diff --git a/Wonky.Client/Components/AdminAdviserTableComponent.razor b/Wonky.Client/Components/AdminAdviserTableComponent.razor index ababbd01..1fd0c88c 100644 --- a/Wonky.Client/Components/AdminAdviserTableComponent.razor +++ b/Wonky.Client/Components/AdminAdviserTableComponent.razor @@ -49,10 +49,10 @@ @user.CountryCode @user.SalesRep - @user.FullName + @user.FullName @user.PhoneNumber @user.Email - Salg + Salg } diff --git a/Wonky.Client/Components/AdminReportTableComponent.razor b/Wonky.Client/Components/AdminReportTableComponent.razor index 42aaef96..d07598c4 100644 --- a/Wonky.Client/Components/AdminReportTableComponent.razor +++ b/Wonky.Client/Components/AdminReportTableComponent.razor @@ -22,7 +22,7 @@ @foreach (var report in ReportList) { - +
@report.ReportDate diff --git a/Wonky.Client/Components/AdminReportTableComponent.razor.cs b/Wonky.Client/Components/AdminReportTableComponent.razor.cs index 6ff9ea99..1ea3922d 100644 --- a/Wonky.Client/Components/AdminReportTableComponent.razor.cs +++ b/Wonky.Client/Components/AdminReportTableComponent.razor.cs @@ -7,4 +7,5 @@ public partial class AdminReportTableComponent { [Parameter] public List ReportList { get; set; } = new(); [Parameter] public string UserId { get; set; } = ""; + [Parameter] public string CountryCode { get; set; } = ""; } \ No newline at end of file diff --git a/Wonky.Client/Pages/ActivityVisitNew.razor.cs b/Wonky.Client/Pages/ActivityVisitNew.razor.cs index 036dbbb0..e4455419 100644 --- a/Wonky.Client/Pages/ActivityVisitNew.razor.cs +++ b/Wonky.Client/Pages/ActivityVisitNew.razor.cs @@ -297,9 +297,10 @@ public partial class ActivityVisitNew : IDisposable _poFormInvalid = false; _editContext.OnFieldChanged -= HandleFieldChanged; + _editContext.OnValidationStateChanged -= ValidationChanged; _editContext = new EditContext(_draft); _editContext.OnFieldChanged += HandleFieldChanged; - _editContext.OnValidationStateChanged -= ValidationChanged; + _editContext.OnValidationStateChanged += ValidationChanged; } public void Dispose() diff --git a/Wonky.Client/Pages/AdminAdviserUserList.razor b/Wonky.Client/Pages/AdminAdviserUserList.razor index eaadc875..cbedbc49 100644 --- a/Wonky.Client/Pages/AdminAdviserUserList.razor +++ b/Wonky.Client/Pages/AdminAdviserUserList.razor @@ -1,7 +1,7 @@ @using Wonky.Client.Components @using Microsoft.AspNetCore.Authorization @attribute [Authorize(Roles = "Admin")] -@page "/admin/users" +@page "/admin/users/advisers/{CountryCode}"
diff --git a/Wonky.Client/Pages/AdminAdviserUserList.razor.cs b/Wonky.Client/Pages/AdminAdviserUserList.razor.cs index 77d6144b..fe9cba94 100644 --- a/Wonky.Client/Pages/AdminAdviserUserList.razor.cs +++ b/Wonky.Client/Pages/AdminAdviserUserList.razor.cs @@ -7,18 +7,22 @@ namespace Wonky.Client.Pages; public partial class AdminAdviserUserList : IDisposable { + [Parameter] public string CountryCode { get; set; } = ""; [Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; } - private List? _salesReps { get; set; } = new(); + private List _salesReps { get; set; } = new(); + protected override async Task OnInitializedAsync() { _interceptor.RegisterEvent(); _interceptor.RegisterBeforeSendEvent(); - - _salesReps = await _userRepo.GetAdvisers(); + var adviserList = await _userRepo.GetAdvisers(); + _salesReps = adviserList + .Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100) + .ToList(); } - + public void Dispose() { _interceptor.DisposeEvent(); diff --git a/Wonky.Client/Pages/AdminAdviserView.razor b/Wonky.Client/Pages/AdminAdviserView.razor index 44d37f0b..52a5284d 100644 --- a/Wonky.Client/Pages/AdminAdviserView.razor +++ b/Wonky.Client/Pages/AdminAdviserView.razor @@ -1,6 +1,7 @@ -@page "/admin/users/{UserId}" +@page "/admin/users/advisers/{CountryCode}/{UserId}/view" @using Microsoft.AspNetCore.Authorization @attribute [Authorize(Roles = "Admin")] + -
+ +

NULSTIL ADGANGSKODE

-
- +
+ +
-
- +
+ +
- +
+
+ +
+
+ } else { diff --git a/Wonky.Client/Pages/AdminAdviserView.razor.cs b/Wonky.Client/Pages/AdminAdviserView.razor.cs index 5d34694e..e2d53834 100644 --- a/Wonky.Client/Pages/AdminAdviserView.razor.cs +++ b/Wonky.Client/Pages/AdminAdviserView.razor.cs @@ -1,3 +1,4 @@ +using System.Security.Policy; using System.Text.Json; using Blazored.Toast.Services; using Microsoft.AspNetCore.Components; @@ -11,6 +12,7 @@ namespace Wonky.Client.Pages; public partial class AdminAdviserView : IDisposable { [Parameter] public string UserId { get; set; } = ""; + [Parameter] public string CountryCode { get; set; } = ""; [Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; } [Inject] private ILogger _logger { get; set; } @@ -19,6 +21,9 @@ public partial class AdminAdviserView : IDisposable private AdviserInfoView _adviserInfo { get; set; } = new(); private EditContext _editContext { get; set; } private AdviserUpdateDto _updateInfo { get; set; } = new(); + private AdminResetPasswordDto _passwords { get; set; } = new(); + private EditContext _passwdContext { get; set; } + private bool _pwInvalid = true; private readonly JsonSerializerOptions? _options = new JsonSerializerOptions { @@ -27,6 +32,9 @@ public partial class AdminAdviserView : IDisposable protected override async Task OnParametersSetAsync() { + _editContext = new EditContext(_updateInfo); + _passwdContext = new EditContext(_passwords); + _interceptor.RegisterEvent(); _interceptor.RegisterBeforeSendEvent(); @@ -39,27 +47,47 @@ public partial class AdminAdviserView : IDisposable _updateInfo.PhoneNumber = _adviserInfo.PhoneNumber; _updateInfo.LockoutEnabled = _adviserInfo.LockoutEnabled; - } + _passwdContext.OnFieldChanged += PwHandleFieldChanged; + _passwdContext.OnValidationStateChanged += PwValidationChanged; - protected override void OnInitialized() - { - _editContext = new EditContext(_updateInfo); } private async Task UpdateAdviser() { _toast.ShowInfo("Sender data til server ..."); await _userRepo.UpdateAdviser(UserId, _updateInfo); - _navigator.NavigateTo("/admin/users"); - } + private void PwHandleFieldChanged(object sender, FieldChangedEventArgs e) + { + _pwInvalid = !_passwdContext.Validate(); + + StateHasChanged(); + } + private void PwValidationChanged(object sender, ValidationStateChangedEventArgs e) + { + _pwInvalid = true; + + _passwdContext.OnFieldChanged -= PwHandleFieldChanged; + _passwdContext.OnValidationStateChanged -= PwValidationChanged; + + _passwdContext = new EditContext(_passwords); + + _passwdContext.OnFieldChanged += PwHandleFieldChanged; + _passwdContext.OnValidationStateChanged += PwValidationChanged; + } + private async Task SetPassword() { - + await _userRepo.ResetUserPassword(UserId, _passwords.NewPassword, _passwords.ConfirmPassword); + _toast.ShowInfo("Password er nulstillet."); + _passwords.NewPassword = ""; + _passwords.ConfirmPassword = ""; } public void Dispose() { _interceptor.DisposeEvent(); + _passwdContext.OnFieldChanged -= PwHandleFieldChanged; + _passwdContext.OnValidationStateChanged -= PwValidationChanged; } } \ No newline at end of file diff --git a/Wonky.Client/Pages/AdminSalesReportList.razor b/Wonky.Client/Pages/AdminSalesReportList.razor index 14624fb3..39536903 100644 --- a/Wonky.Client/Pages/AdminSalesReportList.razor +++ b/Wonky.Client/Pages/AdminSalesReportList.razor @@ -17,7 +17,7 @@ @using Wonky.Client.Components @using Microsoft.AspNetCore.Authorization @attribute [Authorize(Roles = "Admin")] -@page "/admin/users/advisers/{UserId}/reports" +@page "/admin/users/advisers/{CountryCode}/{UserId}/reports"
@@ -27,6 +27,6 @@
- +
diff --git a/Wonky.Client/Pages/AdminSalesReportList.razor.cs b/Wonky.Client/Pages/AdminSalesReportList.razor.cs index 072d8ca8..296c514c 100644 --- a/Wonky.Client/Pages/AdminSalesReportList.razor.cs +++ b/Wonky.Client/Pages/AdminSalesReportList.razor.cs @@ -9,6 +9,7 @@ namespace Wonky.Client.Pages; public partial class AdminSalesReportList : IDisposable { [Parameter] public string UserId { get; set; } = ""; + [Parameter] public string CountryCode { get; set; } = ""; [Inject] private IAdminReportHttpRepository _reportRepo { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; } diff --git a/Wonky.Client/Pages/AdminSalesReportView.razor b/Wonky.Client/Pages/AdminSalesReportView.razor index 43b94d47..3a1d44b2 100644 --- a/Wonky.Client/Pages/AdminSalesReportView.razor +++ b/Wonky.Client/Pages/AdminSalesReportView.razor @@ -17,7 +17,7 @@ @using Wonky.Client.Components @using Microsoft.AspNetCore.Authorization -@page "/admin/users/advisers/{UserId}/reports/{ReportDate}" +@page "/admin/users/advisers/{CountryCode}/{UserId}/reports/{ReportDate}" @attribute [Authorize(Roles = "Admin")]
diff --git a/Wonky.Client/Pages/AdminSalesReportView.razor.cs b/Wonky.Client/Pages/AdminSalesReportView.razor.cs index a466e890..600cee68 100644 --- a/Wonky.Client/Pages/AdminSalesReportView.razor.cs +++ b/Wonky.Client/Pages/AdminSalesReportView.razor.cs @@ -7,8 +7,9 @@ namespace Wonky.Client.Pages; public partial class AdminSalesReportView { - [Parameter] public string ReportDate { get; set; } - [Parameter] public string UserId { get; set; } + [Parameter] public string ReportDate { get; set; } = ""; + [Parameter] public string UserId { get; set; } = ""; + [Parameter] public string CountryCode { get; set; } = ""; [Inject] private IAdminReportHttpRepository _reportRepo { get; set; } private NgSalesReportView _report { get; set; } = new(); diff --git a/Wonky.Client/Pages/Index.razor b/Wonky.Client/Pages/Index.razor index b31755d3..0ae814b6 100644 --- a/Wonky.Client/Pages/Index.razor +++ b/Wonky.Client/Pages/Index.razor @@ -23,7 +23,16 @@ @attribute [Authorize(Roles = "Adviser,Admin,Supervisor")] - + + + + + + @code{ diff --git a/Wonky.Client/Shared/NavMenu.razor b/Wonky.Client/Shared/NavMenu.razor index 35ffdd51..a516e7b2 100644 --- a/Wonky.Client/Shared/NavMenu.razor +++ b/Wonky.Client/Shared/NavMenu.razor @@ -42,7 +42,7 @@ diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 68439aec..7be9bce0 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,7 +1,7 @@ { "appInfo": { "name": "Wonky Client", - "version": "0.8.42", + "version": "0.8.44", "isBeta": true, "image": "grumpy-coder.png" }, diff --git a/Wonky.Entity/DTO/AdminResetPasswordDto.cs b/Wonky.Entity/DTO/AdminResetPasswordDto.cs new file mode 100644 index 00000000..585b55ee --- /dev/null +++ b/Wonky.Entity/DTO/AdminResetPasswordDto.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Wonky.Entity.DTO; + +public class AdminResetPasswordDto +{ + [Required(ErrorMessage = "Kode skal udfyldes")] + public string NewPassword { get; set; } = ""; + + [Compare(nameof(NewPassword), ErrorMessage = "Koderne er ikke ens.")] + public string ConfirmPassword { get; set; } = ""; +} \ No newline at end of file