release v0.8.44
This commit is contained in:
parent
ec41adfc70
commit
f4e03be1fa
16 changed files with 99 additions and 33 deletions
|
@ -49,10 +49,10 @@
|
|||
<tr class="align-middle">
|
||||
<td class="align-content-center">@user.CountryCode</td>
|
||||
<td>@user.SalesRep</td>
|
||||
<td><a href="/admin/users/@user.UserId">@user.FullName</a></td>
|
||||
<td><a href="/admin/users/advisers/@user.CountryCode.ToLower()/@user.UserId/view">@user.FullName</a></td>
|
||||
<td>@user.PhoneNumber</td>
|
||||
<td>@user.Email</td>
|
||||
<td><a class="btn btn-info" href="/admin/users/advisers/@user.UserId/reports">Salg</a></td>
|
||||
<td><a class="btn btn-info" href="/admin/users/advisers/@user.CountryCode.ToLower()/@user.UserId/reports">Salg</a></td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
</div>
|
||||
@foreach (var report in ReportList)
|
||||
{
|
||||
<a class="list-group-item list-group-item-action" href="/admin/users/@report./reports/@report.ReportDate">
|
||||
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/@CountryCode/@UserId/reports/@report.ReportDate">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@report.ReportDate
|
||||
|
|
|
@ -7,4 +7,5 @@ public partial class AdminReportTableComponent
|
|||
{
|
||||
[Parameter] public List<NgSalesReportListView> ReportList { get; set; } = new();
|
||||
[Parameter] public string UserId { get; set; } = "";
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@using Wonky.Client.Components
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize(Roles = "Admin")]
|
||||
@page "/admin/users"
|
||||
@page "/admin/users/advisers/{CountryCode}"
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
|
|
|
@ -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<AdminAdviserListView>? _salesReps { get; set; } = new();
|
||||
private List<AdminAdviserListView> _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();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
@page "/admin/users/{UserId}"
|
||||
@page "/admin/users/advisers/{CountryCode}/{UserId}/view"
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize(Roles = "Admin")]
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Sælger info</h3>
|
||||
|
@ -78,28 +79,36 @@
|
|||
<button type="submit" class="btn btn-primary">Gem</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-primary" href="/admin/users">Tilbage</a>
|
||||
<a class="btn btn-primary" href="/admin/users/advisers/@CountryCode">Tilbage</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-primary" href="/admin/users/advisers/@UserId/reports">Salg</a>
|
||||
<a class="btn btn-primary" href="/admin/users/advisers/@CountryCode/@UserId/reports">Salg</a>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
<form class="mt-5">
|
||||
<EditForm EditContext="_passwdContext" class="mt-5" >
|
||||
<DataAnnotationsValidator />
|
||||
<h3>NULSTIL ADGANGSKODE</h3>
|
||||
<div class="row mb-3">
|
||||
<label for="newPasswd" class="col-md-2 col-form-label">Ny</label>
|
||||
<div class="col-md-4">
|
||||
<input id="newPasswd" type="password" class="form-control"/>
|
||||
<div class="col-md-10">
|
||||
<InputText id="newPasswd" type="password" class="form-control" @bind-Value="@_passwords.NewPassword"/>
|
||||
<ValidationMessage For="@(() => _passwords.NewPassword)"></ValidationMessage>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="verifyPasswd" class="col-md-2 col-form-label">Bekræft</label>
|
||||
<div class="col-md-4">
|
||||
<input id="verifyPasswd" type="password" class="form-control"/>
|
||||
<div class="col-md-10">
|
||||
<InputText id="verifyPasswd" type="password" class="form-control" @bind-Value="@_passwords.ConfirmPassword"/>
|
||||
<ValidationMessage For="@(() => _passwords.ConfirmPassword)"></ValidationMessage>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col align-content-end">
|
||||
<button class="btn btn-warning" @onclick="SetPassword" disabled="@_pwInvalid">NULSTIL</button>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -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<AdminAdviserView> _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;
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
|
@ -27,6 +27,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<AdminReportTableComponent ReportList="_reports"></AdminReportTableComponent>
|
||||
<AdminReportTableComponent CountryCode="@CountryCode" UserId="@UserId" ReportList="_reports"></AdminReportTableComponent>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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")]
|
||||
|
||||
<div class="card">
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -23,7 +23,16 @@
|
|||
|
||||
@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")]
|
||||
|
||||
<Home></Home>
|
||||
<AuthorizeView Roles="Adviser">
|
||||
<Home></Home>
|
||||
</AuthorizeView>
|
||||
<AuthorizeView Roles="Admin">
|
||||
<div class="list-group">
|
||||
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/dk">Danmark</a>
|
||||
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/no">Norge</a>
|
||||
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/se">Sverige</a>
|
||||
</div>
|
||||
</AuthorizeView>
|
||||
|
||||
@code{
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
</AuthorizeView>
|
||||
<AuthorizeView Roles="Admin">
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link ps-2" href="/admin/users">
|
||||
<NavLink class="nav-link ps-2" href="/">
|
||||
<span class="oi oi-people" aria-hidden="true"></span> Sælgere
|
||||
</NavLink>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"appInfo": {
|
||||
"name": "Wonky Client",
|
||||
"version": "0.8.42",
|
||||
"version": "0.8.44",
|
||||
"isBeta": true,
|
||||
"image": "grumpy-coder.png"
|
||||
},
|
||||
|
|
12
Wonky.Entity/DTO/AdminResetPasswordDto.cs
Normal file
12
Wonky.Entity/DTO/AdminResetPasswordDto.cs
Normal file
|
@ -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; } = "";
|
||||
}
|
Loading…
Reference in a new issue