This commit is contained in:
Frede Hundewadt 2022-07-17 11:56:28 +02:00
parent e63b04ec22
commit 2d58f0c14f
60 changed files with 550 additions and 96 deletions

View file

@ -24,7 +24,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Components namespace Wonky.Client.Components
{ {
public partial class AdminAdviserCompanyTableComponent public partial class AdminAdvisorCompanyTableComponent
{ {
[Parameter] public List<CompanyDto> Companies { get; set; } = new(); [Parameter] public List<CompanyDto> Companies { get; set; } = new();
[Parameter] public EventCallback<string> OnDelete { get; set; } [Parameter] public EventCallback<string> OnDelete { get; set; }

View file

@ -44,9 +44,9 @@
<td>@user.FullName</td> <td>@user.FullName</td>
<td>@user.PhoneNumber</td> <td>@user.PhoneNumber</td>
<td>@user.Email</td> <td>@user.Email</td>
<td><a class="btn btn-outline-dark" href="/admin/users/advisers/@user.CountryCode.ToLower()/@user.UserId/reports">Rapporter</a></td> <td><a class="btn btn-outline-dark" href="/admin/users/Advisors/@user.CountryCode.ToLower()/@user.UserId/reports">Rapporter</a></td>
<td><a class="btn btn-outline-dark" href="/admin/users/advisers/@user.CountryCode.ToLower()/@user.UserId/companies">Kunder</a></td> <td><a class="btn btn-outline-dark" href="/admin/users/Advisors/@user.CountryCode.ToLower()/@user.UserId/companies">Kunder</a></td>
<td><a class="btn btn-outline-dark" href="/admin/users/advisers/@user.CountryCode.ToLower()/@user.UserId/view">Rediger</a></td> <td><a class="btn btn-outline-dark" href="/admin/users/Advisors/@user.CountryCode.ToLower()/@user.UserId/view">Rediger</a></td>
</tr> </tr>
} }
</tbody> </tbody>

View file

@ -19,7 +19,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Components; namespace Wonky.Client.Components;
public partial class AdminAdviserTableComponent public partial class AdminAdvisorTableComponent
{ {
[Parameter] public List<UserListAdminView> UserList { get; set; } [Parameter] public List<UserListAdminView> UserList { get; set; }
} }

View file

@ -41,7 +41,7 @@
</div> </div>
@foreach (var report in ReportList) @foreach (var report in ReportList)
{ {
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/@CountryCode/@UserId/reports/@report.ReportDate"> <a class="list-group-item list-group-item-action" href="/admin/users/Advisors/@CountryCode/@UserId/reports/@report.ReportDate">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@report.ReportDate @report.ReportDate

View file

@ -19,7 +19,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
<PageTitle>Inno Web CRM</PageTitle> <PageTitle>Inno Web CRM</PageTitle>
<AuthorizeView Roles="Adviser"> <AuthorizeView Roles="Advisor">
<div class="alert bg-light border-dark"> <div class="alert bg-light border-dark">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -32,11 +32,16 @@
</div> </div>
<TaskItemTableComponent TaskItemList="_taskItems" OnCompleteTask="OnCompleteTask" <TaskItemTableComponent TaskItemList="_taskItems" OnCompleteTask="OnCompleteTask"
OnDeleteTask="OnDeleteConfirmed" OnTaskCompleted="OnTaskCompleted" /> OnDeleteTask="OnDeleteConfirmed" OnTaskCompleted="OnTaskCompleted" />
</AuthorizeView> </AuthorizeView>
<AuthorizeView Roles="Admin"> <AuthorizeView Roles="Admin">
<h2>Administrator</h2> <h2>Administrator</h2>
</AuthorizeView> </AuthorizeView>
<AuthorizeView Roles="Warehouse">
<h2>Lager</h2>
</AuthorizeView>
<AuthorizeView Roles="Supervisor"> <AuthorizeView Roles="Supervisor">
<h2>Supervisor</h2> <h2>Supervisor</h2>
</AuthorizeView> </AuthorizeView>

View file

@ -19,7 +19,7 @@
<AuthorizeView> <AuthorizeView>
<Authorized> <Authorized>
<div class="d-print-none"> <div class="d-print-none">
<a class="btn btn-outline-light" href="logout">LOG AF</a> <a class="btn btn-outline-light" href="logout"><i class="oi oi-lock-unlocked"></i> LOG AF</a>
<a class="btn btn-outline-light" href="info">HJÆLP</a> <a class="btn btn-outline-light" href="info">HJÆLP</a>
</div> </div>
</Authorized> </Authorized>

View file

@ -47,12 +47,12 @@ public class AdminReportHttpRepository : IAdminReportHttpRepository
public async Task<List<NgSalesReportListView>> GetReports(string userId) public async Task<List<NgSalesReportListView>> GetReports(string userId)
{ {
return await _client.GetFromJsonAsync<List<NgSalesReportListView>>($"{_apiConfig.AdminAdviserUri}/{userId}/reports"); return await _client.GetFromJsonAsync<List<NgSalesReportListView>>($"{_apiConfig.AdminAdvisorUri}/{userId}/reports");
} }
public async Task<ReportView> GetReport(string userId, string workDate) public async Task<ReportView> GetReport(string userId, string workDate)
{ {
return await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.AdminAdviserUri}/{userId}/reports/{workDate}"); return await _client.GetFromJsonAsync<ReportView>($"{_apiConfig.AdminAdvisorUri}/{userId}/reports/{workDate}");
} }
} }

View file

@ -80,7 +80,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository
return pagingResponse; return pagingResponse;
} }
public async Task<PagingResponse<CompanyDto>> GetAdminAdviserCompaniesPaged(string userId, CompanyPagingParams pagingParameters) public async Task<PagingResponse<CompanyDto>> GetAdminAdvisorCompaniesPaged(string userId, CompanyPagingParams pagingParameters)
{ {
var queryString = new Dictionary<string, string> var queryString = new Dictionary<string, string>
{ {
@ -93,7 +93,7 @@ public class CompanyHttpRepository : ICompanyHttpRepository
["hasFolded"] = pagingParameters.HasFolded.ToString() ["hasFolded"] = pagingParameters.HasFolded.ToString()
}; };
var response = await _client var response = await _client
.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.AdminAdviserUri}/{userId}/companies", queryString)); .GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.AdminAdvisorUri}/{userId}/companies", queryString));
var content = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync();

View file

@ -24,7 +24,7 @@ namespace Wonky.Client.HttpRepository;
public interface ICompanyHttpRepository public interface ICompanyHttpRepository
{ {
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters); Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters);
Task<PagingResponse<CompanyDto>> GetAdminAdviserCompaniesPaged(string userId, CompanyPagingParams pagingParameters); Task<PagingResponse<CompanyDto>> GetAdminAdvisorCompaniesPaged(string userId, CompanyPagingParams pagingParameters);
Task<CompanyDto> GetCompanyByAccount(string accountNumber); Task<CompanyDto> GetCompanyByAccount(string accountNumber);
Task<CompanyDto> GetCompanyById(string companyId); Task<CompanyDto> GetCompanyById(string companyId);
Task<string> CreateCompany(CompanyDto model); Task<string> CreateCompany(CompanyDto model);

View file

@ -20,9 +20,9 @@ namespace Wonky.Client.HttpRepository;
public interface IUserHttpRepository public interface IUserHttpRepository
{ {
Task<List<UserListAdminView>> GetAdvisers(); Task<List<UserListAdminView>> GetAdvisors();
Task<AdminUserInfoDto> GetAdviserInfo(string userId); Task<AdminUserInfoDto> GetAdvisorInfo(string userId);
Task UpdateAdviser(string userId, UserUpdateDto model); Task UpdateAdvisor(string userId, UserUpdateDto model);
Task<List<UserListAdminView>> GetAdminUsers(); Task<List<UserListAdminView>> GetAdminUsers();
Task<AdminUserInfoDto> GetAdminUserInfo(string userId); Task<AdminUserInfoDto> GetAdminUserInfo(string userId);
Task UpdateAdminUser(string userId, UserUpdateDto model); Task UpdateAdminUser(string userId, UserUpdateDto model);

View file

@ -0,0 +1,10 @@
using Wonky.Entity.Views;
namespace Wonky.Client.HttpRepository;
public interface IWarehouseHttpRepository
{
Task<List<WarehouseOrderView>> GetWarehouseOrderListByStatus(string status);
Task<WarehouseOrderView> GetWarehouseOrder(string orderId);
Task UpdateWarehouseOrderStatus(WarehouseProcess process);
}

View file

@ -47,19 +47,19 @@ public class UserHttpRepository : IUserHttpRepository
_api = configuration.Value; _api = configuration.Value;
} }
public async Task<List<UserListAdminView>> GetAdvisers() public async Task<List<UserListAdminView>> GetAdvisors()
{ {
return await _client.GetFromJsonAsync<List<UserListAdminView>>(_api.AdminAdviserUri); return await _client.GetFromJsonAsync<List<UserListAdminView>>(_api.AdminAdvisorUri);
} }
public async Task<AdminUserInfoDto> GetAdviserInfo(string userId) public async Task<AdminUserInfoDto> GetAdvisorInfo(string userId)
{ {
return await _client.GetFromJsonAsync<AdminUserInfoDto>($"{_api.AdminAdviserUri}/{userId}"); return await _client.GetFromJsonAsync<AdminUserInfoDto>($"{_api.AdminAdvisorUri}/{userId}");
} }
public async Task UpdateAdviser(string userId, UserUpdateDto model) public async Task UpdateAdvisor(string userId, UserUpdateDto model)
{ {
await _client.PutAsJsonAsync($"{_api.AdminAdviserUri}/{userId}", model, _options); await _client.PutAsJsonAsync($"{_api.AdminAdvisorUri}/{userId}", model, _options);
} }
public async Task<List<UserListAdminView>> GetAdminUsers() public async Task<List<UserListAdminView>> GetAdminUsers()

View file

@ -0,0 +1,52 @@
using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Entity.Configuration;
using Wonky.Entity.Views;
namespace Wonky.Client.HttpRepository;
public class WarehouseHttpRepository : IWarehouseHttpRepository
{
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
private readonly NavigationManager _navigation;
private ILogger<WarehouseHttpRepository> _logger;
private readonly HttpClient _client;
private readonly ApiConfig _api;
public WarehouseHttpRepository(HttpClient client,
ILogger<WarehouseHttpRepository> logger,
NavigationManager navigation,
IOptions<ApiConfig> configuration)
{
_client = client;
_logger = logger;
_navigation = navigation;
_api = configuration.Value;
}
public async Task<List<WarehouseOrderView>> GetWarehouseOrderListByDate(string date)
{
return await _client.GetFromJsonAsync<List<WarehouseOrderView>>($"{_api.WarehouseUri}?date={date}", _options);
}
public async Task<List<WarehouseOrderView>> GetWarehouseOrderListByStatus(string status)
{
return await _client.GetFromJsonAsync<List<WarehouseOrderView>>($"{_api.WarehouseUri}?status={status}", _options);
}
public async Task<WarehouseOrderView> GetWarehouseOrder(string orderId)
{
return await _client.GetFromJsonAsync<WarehouseOrderView>($"{_api.WarehouseUri}/{orderId}", _options);
}
public async Task UpdateWarehouseOrderStatus(WarehouseProcess process)
{
_logger.LogDebug("process => {}", JsonSerializer.Serialize(process));
await _client.PutAsJsonAsync($"{_api.WarehouseUri}/{process.OrderId}", process, _options);
}
}

View file

@ -17,7 +17,7 @@
@page "/companies/{companyId}/activities/new" @page "/companies/{companyId}/activities/new"
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@using Wonky.Client.Components @using Wonky.Client.Components
<div class="card"> <div class="card">

View file

@ -126,7 +126,7 @@ public partial class ActivityNewVisitPage : IDisposable
_draft.VisitTypeEnum = _company.Account is "" or "NY" ? "new" : "recall"; _draft.VisitTypeEnum = _company.Account is "" or "NY" ? "new" : "recall";
// permanent identifications // permanent identifications
_draft.SalesRep = _ux.Adviser; _draft.SalesRep = _ux.Advisor;
_draft.Account = _company.Account; _draft.Account = _company.Account;
_draft.VatNumber = _company.VatNumber; _draft.VatNumber = _company.VatNumber;
_draft.Email = _company.Email; _draft.Email = _company.Email;

View file

@ -17,7 +17,7 @@
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Wonky.Client.Components @using Wonky.Client.Components
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/activity-today" @page "/activity-today"
<div class="card"> <div class="card">

View file

@ -16,7 +16,7 @@
*@ *@
@using Wonky.Client.Components @using Wonky.Client.Components
@page "/admin/users/advisers/{CountryCode}/{UserId}/companies" @page "/admin/users/Advisors/{CountryCode}/{UserId}/companies"
<div class="card"> <div class="card">
<div class="card-header bg-dark text-white"> <div class="card-header bg-dark text-white">

View file

@ -23,7 +23,7 @@ using Wonky.Entity.Requests;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdminAdviserCompanyListPage : IDisposable public partial class AdminAdvisorCompanyListPage : IDisposable
{ {
[Parameter] public string UserId { get; set; } = ""; [Parameter] public string UserId { get; set; } = "";
[Parameter] public string CountryCode { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = "";
@ -55,14 +55,14 @@ public partial class AdminAdviserCompanyListPage : IDisposable
_interceptor.RegisterEvent(); _interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
AdminUserInfo = await _userRepo.GetAdviserInfo(UserId); AdminUserInfo = await _userRepo.GetAdvisorInfo(UserId);
// get companies // get companies
await GetCompanies(); await GetCompanies();
} }
private async Task GetCompanies() private async Task GetCompanies()
{ {
var pagingResponse = await _companyRepo.GetAdminAdviserCompaniesPaged(UserId, _paging); var pagingResponse = await _companyRepo.GetAdminAdvisorCompaniesPaged(UserId, _paging);
_companyList = pagingResponse.Items; _companyList = pagingResponse.Items;
_metaData = pagingResponse.MetaData; _metaData = pagingResponse.MetaData;
} }

View file

@ -18,13 +18,13 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin")] @attribute [Authorize(Roles = "Admin")]
@page "/admin/users/advisers/{CountryCode}" @page "/admin/users/Advisors/{CountryCode}"
<div class="card"> <div class="card">
<div class="card-header bg-dark text-white"> <div class="card-header bg-dark text-white">
<h3>Sælgere</h3> <h3>Sælgere</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<AdminAdviserTableComponent UserList="_salesReps"></AdminAdviserTableComponent> <AdminAdvisorTableComponent UserList="_salesReps"></AdminAdvisorTableComponent>
</div> </div>
</div> </div>

View file

@ -21,7 +21,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdminAdviserUserListPage : IDisposable public partial class AdminAdvisorUserListPage : IDisposable
{ {
[Parameter] public string CountryCode { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
@ -33,8 +33,8 @@ public partial class AdminAdviserUserListPage : IDisposable
{ {
_interceptor.RegisterEvent(); _interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
var adviserList = await _userRepo.GetAdvisers(); var AdvisorList = await _userRepo.GetAdvisors();
_salesReps = adviserList _salesReps = AdvisorList
.Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100) .Where(x => x.CountryCode.ToLower() == CountryCode && Convert.ToInt32(x.SalesRep) < 100)
.ToList(); .ToList();
} }

View file

@ -15,7 +15,7 @@
// //
*@ *@
@page "/admin/users/advisers/{CountryCode}/{UserId}/view" @page "/admin/users/Advisors/{CountryCode}/{UserId}/view"
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin")] @attribute [Authorize(Roles = "Admin")]
@ -26,7 +26,7 @@
<div class="card-body"> <div class="card-body">
@if (AdminUserInfo != null) @if (AdminUserInfo != null)
{ {
<EditForm EditContext="_editContext" OnValidSubmit="UpdateAdviser"> <EditForm EditContext="_editContext" OnValidSubmit="UpdateAdvisor">
<DataAnnotationsValidator/> <DataAnnotationsValidator/>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@ -69,7 +69,7 @@
Sælgernr. Sælgernr.
</th> </th>
<td> <td>
@AdminUserInfo.Adviser @AdminUserInfo.Advisor
</td> </td>
<th scope="col"> <th scope="col">
Landekode Landekode
@ -96,10 +96,10 @@
<button type="submit" class="btn btn-primary">Gem</button> <button type="submit" class="btn btn-primary">Gem</button>
</div> </div>
<div class="col"> <div class="col">
<a class="btn btn-primary" href="/admin/users/advisers/@CountryCode">Tilbage</a> <a class="btn btn-primary" href="/admin/users/Advisors/@CountryCode">Tilbage</a>
</div> </div>
<div class="col"> <div class="col">
<a class="btn btn-primary" href="/admin/users/advisers/@CountryCode/@UserId/reports">Salg</a> <a class="btn btn-primary" href="/admin/users/Advisors/@CountryCode/@UserId/reports">Salg</a>
</div> </div>
</div> </div>
</EditForm> </EditForm>

View file

@ -24,13 +24,13 @@ using Wonky.Entity.DTO;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdminAdviserViewPage : IDisposable public partial class AdminAdvisorViewPage : IDisposable
{ {
[Parameter] public string UserId { get; set; } = ""; [Parameter] public string UserId { get; set; } = "";
[Parameter] public string CountryCode { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IUserHttpRepository _userRepo { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; }
[Inject] private ILogger<AdminAdviserViewPage> _logger { get; set; } [Inject] private ILogger<AdminAdvisorViewPage> _logger { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] private IToastService _toast { get; set; }
private AdminUserInfoDto AdminUserInfo { get; set; } = new(); private AdminUserInfoDto AdminUserInfo { get; set; } = new();
@ -53,7 +53,7 @@ public partial class AdminAdviserViewPage : IDisposable
_interceptor.RegisterEvent(); _interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
AdminUserInfo = await _userRepo.GetAdviserInfo(UserId); AdminUserInfo = await _userRepo.GetAdvisorInfo(UserId);
_updateInfo.Email = AdminUserInfo.Email; _updateInfo.Email = AdminUserInfo.Email;
_updateInfo.CountryCode = AdminUserInfo.CountryCode; _updateInfo.CountryCode = AdminUserInfo.CountryCode;
@ -67,10 +67,10 @@ public partial class AdminAdviserViewPage : IDisposable
} }
private async Task UpdateAdviser() private async Task UpdateAdvisor()
{ {
_toast.ShowInfo("Sender data til server ..."); _toast.ShowInfo("Sender data til server ...");
await _userRepo.UpdateAdviser(UserId, _updateInfo); await _userRepo.UpdateAdvisor(UserId, _updateInfo);
} }
private void PwHandleFieldChanged(object sender, FieldChangedEventArgs e) private void PwHandleFieldChanged(object sender, FieldChangedEventArgs e)

View file

@ -33,8 +33,8 @@ public partial class AdminOfficeUserListPage : IDisposable
{ {
_interceptor.RegisterEvent(); _interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
var adviserList = await _userRepo.GetAdminUsers(); var AdvisorList = await _userRepo.GetAdminUsers();
_adminUsers = adviserList _adminUsers = AdvisorList
.Where(x => x.CountryCode.ToLower() == CountryCode) .Where(x => x.CountryCode.ToLower() == CountryCode)
.ToList(); .ToList();
} }

View file

@ -30,7 +30,7 @@ public partial class AdminOfficeUserViewPage : IDisposable
[Parameter] public string CountryCode { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IUserHttpRepository _userRepo { get; set; } [Inject] private IUserHttpRepository _userRepo { get; set; }
[Inject] private ILogger<AdminAdviserViewPage> _logger { get; set; } [Inject] private ILogger<AdminAdvisorViewPage> _logger { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] private IToastService _toast { get; set; }
private AdminUserInfoDto AdminUserInfo { get; set; } = new(); private AdminUserInfoDto AdminUserInfo { get; set; } = new();

View file

@ -18,7 +18,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin")] @attribute [Authorize(Roles = "Admin")]
@page "/admin/users/advisers/{CountryCode}/{UserId}/reports" @page "/admin/users/Advisors/{CountryCode}/{UserId}/reports"
<div class="card"> <div class="card">
<div class="card-header bg-dark text-white"> <div class="card-header bg-dark text-white">

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@page "/admin/users/advisers/{CountryCode}/{UserId}/reports/{ReportDate}" @page "/admin/users/Advisors/{CountryCode}/{UserId}/reports/{ReportDate}"
@attribute [Authorize(Roles = "Admin")] @attribute [Authorize(Roles = "Admin")]
<div class="report-page"> <div class="report-page">

View file

@ -72,7 +72,7 @@ public partial class AdminReportViewPage : IDisposable
{ {
if (workDate != ReportDate) if (workDate != ReportDate)
{ {
_navigator.NavigateTo($"/admin/users/advisers/{CountryCode}/{UserId}/reports/{workDate}"); _navigator.NavigateTo($"/admin/users/Advisors/{CountryCode}/{UserId}/reports/{workDate}");
return; return;
} }

View file

@ -21,7 +21,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdviserReportListPage : IDisposable public partial class AdvisorReportListPage : IDisposable
{ {
[Inject] private IReportHttpRepository _reportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }

View file

@ -17,7 +17,7 @@
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Wonky.Client.Components @using Wonky.Client.Components
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/sales-reports/new" @page "/sales-reports/new"
<EditForm EditContext="_editContext"> <EditForm EditContext="_editContext">

View file

@ -29,14 +29,14 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdviserReportNewPage : IDisposable public partial class AdvisorReportNewPage : IDisposable
{ {
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _userPrefs { get; set; } [Inject] private UserPreferenceService _userPrefs { get; set; }
[Inject] private IActivityHttpRepository _activityRepo { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; }
[Inject] private IReportHttpRepository _reportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] private ILogger<AdviserReportNewPage> _logger { get; set; } [Inject] private ILogger<AdvisorReportNewPage> _logger { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] private IToastService _toast { get; set; }
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private ReportDto _report { get; set; } = new(); private ReportDto _report { get; set; } = new();

View file

@ -18,7 +18,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@page "/sales-reports/view/{ReportDate}" @page "/sales-reports/view/{ReportDate}"
@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")] @attribute [Authorize(Roles = "Advisor,Admin,Supervisor")]
<div class="report-page d-print-block"> <div class="report-page d-print-block">
<div class="row mb-3 d-print-none"> <div class="row mb-3 d-print-none">

View file

@ -20,7 +20,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class AdviserReportViewPage public partial class AdvisorReportViewPage
{ {
[Parameter] public string ReportDate { get; set; } [Parameter] public string ReportDate { get; set; }
[Inject] private IReportHttpRepository _reportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }

View file

@ -19,7 +19,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
<div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3"> <div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3">
<div class="container-fluid pt-3"> <div class="container-fluid pt-3">

View file

@ -19,7 +19,7 @@
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Wonky.Client.Components @using Wonky.Client.Components
@using System.Xml @using System.Xml
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
<h2>Opret kunde</h2> <h2>Opret kunde</h2>

View file

@ -19,7 +19,7 @@
@using Microsoft.AspNetCore.Components @using Microsoft.AspNetCore.Components
@using Wonky.Client.Components @using Wonky.Client.Components
@using Wonky.Client.Helpers @using Wonky.Client.Helpers
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/companies/{CompanyId}" @page "/companies/{CompanyId}"
@if (!string.IsNullOrWhiteSpace(_company.Name)) @if (!string.IsNullOrWhiteSpace(_company.Name))

View file

@ -21,7 +21,7 @@
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@page "/info" @page "/info"
@attribute [Authorize(Roles = "Adviser,Admin,Office,Warehouse")] @attribute [Authorize(Roles = "Advisor,Admin,Office,Warehouse")]
<div class="row mb-2"> <div class="row mb-2">
<div class="col col-md-2"> <div class="col col-md-2">
<img class="grumpy-coder" src="@_app?.Image" alt="Wonky Logo"/> <img class="grumpy-coder" src="@_app?.Image" alt="Wonky Logo"/>

View file

@ -21,7 +21,7 @@
@using Wonky.Client.Components; @using Wonky.Client.Components;
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser,Admin,Supervisor")] @attribute [Authorize(Roles = "Advisor,Admin,Supervisor,Office,Warehouse")]
<Home></Home> <Home></Home>

View file

@ -19,7 +19,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser,Admin")] @attribute [Authorize(Roles = "Advisor,Admin")]
<div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3"> <div class="sticky-top bg-success bg-opacity-50 rounded-2 px-3">
<div class="container-fluid pt-3"> <div class="container-fluid pt-3">

View file

@ -17,7 +17,7 @@
@page "/sales-item/{salesItemId}" @page "/sales-item/{salesItemId}"
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser,Admin")] @attribute [Authorize(Roles = "Advisor,Admin")]
<div class="card"> <div class="card">

View file

@ -17,7 +17,7 @@
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin")] @attribute [Authorize(Roles = "Admin")]
@page "/admin/users/advisers" @page "/admin/users/Advisors"
<div class="card"> <div class="card">
<div class="card-header bg-dark text-white"> <div class="card-header bg-dark text-white">
@ -27,9 +27,9 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="list-group list-group-flush"> <div class="list-group list-group-flush">
<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/Advisors/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/Advisors/no">Norge</a>
<a class="list-group-item list-group-item-action" href="/admin/users/advisers/se">Sverige</a> <a class="list-group-item list-group-item-action" href="/admin/users/Advisors/se">Sverige</a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/companies/{CompanyId}/h/p/{Sku}" @page "/companies/{CompanyId}/h/p/{Sku}"
<div class="card"> <div class="card">

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/companies/{CompanyId}/h/p" @page "/companies/{CompanyId}/h/p"
<div class="card"> <div class="card">

View file

@ -18,7 +18,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@page "/companies/{CompanyId}/h/i" @page "/companies/{CompanyId}/h/i"
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">

View file

@ -17,7 +17,7 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Adviser")] @attribute [Authorize(Roles = "Advisor")]
@page "/task-items" @page "/task-items"
<div class="card"> <div class="card">

View file

@ -0,0 +1,78 @@
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin,Warehouse,Office")]
@page "/warehouse/orders"
<div class="row mb-3">
<div class="col-md-8">
<div class="btn-group-lg" role="group" aria-label="Ordre status">
<input type="radio" class="btn-check" name="btnorder" id="btnorder1" autocomplete="off" checked @onchange="@GetOrderStatusNone" />
<label class="btn btn-danger" for="btnorder1">Ubehandlet</label>
<input type="radio" class="btn-check" name="btnorder" id="btnorder2" autocomplete="off" @onchange="@GetOrderStatusPicked"/>
<label class="btn btn-warning" for="btnorder2">Plukket</label>
<input type="radio" class="btn-check" name="btnorder" id="btnorder3" autocomplete="off" @onchange="@GetOrderStatusPacked" />
<label class="btn btn-success" for="btnorder3">Pakket</label>
</div>
</div>
<div class="col-md-4">
@if (_readyToShip && _orders.Any())
{
<button type="button" class="btn btn-lg btn-primary text-nowrap" @onclick="SetProcessStatusShipped">Sæt alle afsendt</button>
}
</div>
</div>
@if (_orders.Any())
{
<div class="list-group list-group-flush">
<div class="list-group-item">
<div class="row mb-1">
<div class="col-md-2">
<h4>Ordredato</h4>
</div>
<div class="col-md-4">
<h4>Kundenavn</h4>
</div>
<div class="col-md-4">
<h4>Postnr. Bynavn</h4>
</div>
<div class="col-md-2">
<h4>Status</h4>
</div>
</div>
</div>
@foreach (var order in _orders)
{
<a class="list-group-item list-group-item-action" href="warehouse/orders/@order.OrderId">
<div class="row">
<div class="col-md-2">
@order.OrderDate
</div>
<div class="col-md-4">
@order.Company.Name
</div>
<div class="col-md-4">
@order.Company.ZipCode @order.Company.City
</div>
<div class="col-md-2">
@switch (order.ProcessStatusEnum.ToLower())
{
case "none":
<span>Ubehandlet</span>
break;
case "picked":
<span>Plukket</span>
break;
case "packed":
<span>Pakket</span>
break;
case "shipped":
<span>Afsendt</span>
break;
}
</div>
</div>
</a>
}
</div>
}

View file

@ -0,0 +1,66 @@
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class WarehouseOrderListPage : IDisposable
{
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; }
private string _items { get; set; }
private bool _readyToShip;
private List<WarehouseOrderView> _orders { get; set; }
protected override async Task OnInitializedAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
await GetOrderStatusNone();
_items = JsonSerializer.Serialize(_orders);
}
private async Task GetOrderStatusNone()
{
_orders = await _warehouseRepo.GetWarehouseOrderListByStatus("none");
_readyToShip = false;
}
private async Task GetOrderStatusPicked()
{
_orders = await _warehouseRepo.GetWarehouseOrderListByStatus("picked");
_readyToShip = false;
}
private async Task GetOrderStatusPacked()
{
_orders = await _warehouseRepo.GetWarehouseOrderListByStatus("packed");
_readyToShip = true;
}
private async Task SetProcessStatusShipped()
{
foreach (var order in _orders)
{
if (order.ProcessStatusEnum.ToLower() != "packed") continue;
var process = new WarehouseProcess
{
OrderId = order.OrderId,
ProcessStatusEnum = "shipped"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
order.ProcessStatusEnum = "shipped";
}
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
}

View file

@ -0,0 +1,103 @@
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin,Warehouse,Office")]
@page "/warehouse/orders/{OrderId}"
@if (!string.IsNullOrWhiteSpace(_order.OrderDate))
{
<table class="table">
<thead>
<tr>
<th colspan="4">
<h2 class="text-center">@_order.Company.Name</h2>
</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Konto</th>
<td>@_order.Company.Account</td>
<th scope="row">Telefon</th>
<td>@_order.Company.Phone</td>
</tr>
<tr>
<th scope="row">Kunde</th>
<td>@_order.Company.Name</td>
<th scope="row">Lev.Navn</th>
<td>@_order.DlvName</td>
</tr>
<tr>
<th scope="row">Adresse</th>
<td>@_order.Company.Address1</td>
<th scope="row">Lev.Adresse</th>
<td>@_order.DlvAddress1</td>
</tr>
<tr>
<th scope="row">Adresse</th>
<td>@_order.Company.Address2</td>
<th scope="row">Lev.Adresse</th>
<td>@_order.DlvAddress2</td>
</tr>
<tr>
<th scope="row">Postnr By</th>
<td>@_order.Company.ZipCode @_order.Company.City</td>
<th scope="row">Lev.Postnr By</th>
<td>@_order.DlvZipCity</td>
</tr>
</tbody>
</table>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Antal</th>
<th scope="col">Varenr</th>
<th scope="col">Beskrivelse</th>
</tr>
</thead>
<tbody>
@foreach (var line in _order.Lines)
{
<tr>
<td>@line.Quantity</td>
<td>@line.Sku</td>
<td>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="@line.LineNumber"/>
<label class="form-check-label" for="@line.LineNumber">@line.Description</label>
</div>
</td>
</tr>
}
</tbody>
</table>
@if (!string.IsNullOrWhiteSpace(_order.OfficeNote))
{
<div class="alert bg-light border-dark border-2">
<h3 class="text-center">@_order.OfficeNote</h3>
</div>
}
<div class="row">
<div class="col-md-3">
<a class="btn btn-lg btn-primary text-nowrap" href="/warehouse/orders">Oversigt</a>
</div>
<div class="col-md-3">
</div>
<div class="col-md-4">
@if (_order.ProcessStatusEnum.ToLower() == "none")
{
<button class="btn btn-lg btn-primary text-nowrap" type="button" @onclick="SetProcessStatusPicked">Sæt status plukket</button>
}
@if (_order.ProcessStatusEnum.ToLower() == "picked")
{
<button class="btn btn-lg btn-primary text-nowrap" type="button" @onclick="SetProcessStatusPacked">Sæt status pakket</button>
}
@if (_order.ProcessStatusEnum.ToLower() == "packed")
{
<button class="btn btn-lg btn-primary text-nowrap" type="button" @onclick="SetProcessStatusPacked">Sæt status afsendt</button>
}
</div>
</div>
}
else
{
<div>Ingen data</div>
}

View file

@ -0,0 +1,61 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class WarehouseOrderViewPage : IDisposable
{
[Parameter] public string OrderId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
private WarehouseOrderView _order { get; set; } = new();
protected override async Task OnParametersSetAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
if (!string.IsNullOrWhiteSpace(OrderId))
_order = await _warehouseRepo.GetWarehouseOrder(OrderId);
}
private async Task SetProcessStatusPicked()
{
var process = new WarehouseProcess
{
OrderId = _order.OrderId,
ProcessStatusEnum = "picked"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
_navigator.NavigateTo("/warehouse/orders");
}
private async Task SetProcessStatusPacked()
{
var process = new WarehouseProcess
{
OrderId = _order.OrderId,
ProcessStatusEnum = "packed"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
_navigator.NavigateTo("/warehouse/orders");
}
private async Task SetProcessStatusShipped()
{
var process = new WarehouseProcess
{
OrderId = _order.OrderId,
ProcessStatusEnum = "shipped"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
}

View file

@ -57,6 +57,7 @@ builder.Services.AddScoped<ITaskItemHttpRepository, TaskItemHttpRepository>();
builder.Services.AddScoped<IHistoryHttpRepository, HistoryHttpRepository>(); builder.Services.AddScoped<IHistoryHttpRepository, HistoryHttpRepository>();
builder.Services.AddScoped<IUserHttpRepository, UserHttpRepository>(); builder.Services.AddScoped<IUserHttpRepository, UserHttpRepository>();
builder.Services.AddScoped<IAdminReportHttpRepository, AdminReportHttpRepository>(); builder.Services.AddScoped<IAdminReportHttpRepository, AdminReportHttpRepository>();
builder.Services.AddScoped<IWarehouseHttpRepository, WarehouseHttpRepository>();
builder.Services.AddScoped<HttpInterceptorService>(); builder.Services.AddScoped<HttpInterceptorService>();
builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredLocalStorage();

View file

@ -102,14 +102,18 @@ namespace Wonky.Client.Shared
var roles = new List<string>(); var roles = new List<string>();
if (userInfoView.IsAdmin) if (userInfoView.IsAdmin)
roles.Add("Admin"); roles.Add("Admin");
if (userInfoView.IsAdviser) if (userInfoView.IsAdvisor)
roles.Add("Adviser"); roles.Add("Advisor");
if (userInfoView.IsSupervisor) if (userInfoView.IsSupervisor)
roles.Add("Supervisor"); roles.Add("Supervisor");
if(userInfoView.IsEDoc) if(userInfoView.IsEDoc)
roles.Add("EDoc"); roles.Add("EDoc");
if (userInfoView.IsEShop) if (userInfoView.IsEShop)
roles.Add("EShop"); roles.Add("EShop");
if (userInfoView.IsOffice)
roles.Add("Office");
if (userInfoView.IsWareHouse)
roles.Add("Warehouse");
return roles; return roles;
} }
} }

View file

@ -45,9 +45,18 @@
</div> </div>
</NotAuthorized> </NotAuthorized>
</AuthorizeView> </AuthorizeView>
<AuthorizeView Roles="Admin,Warehouse,Office">
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/warehouse/orders">
<span class="oi oi-people" aria-hidden="true"></span> Ordrer
</NavLink>
</div>
</AuthorizeView>
<AuthorizeView Roles="Admin"> <AuthorizeView Roles="Admin">
<div class="nav-item px-3"> <div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/admin/users/advisers"> <NavLink class="nav-link ps-2" href="/admin/users/Advisors">
<span class="oi oi-people" aria-hidden="true"></span> Sælgere <span class="oi oi-people" aria-hidden="true"></span> Sælgere
</NavLink> </NavLink>
</div> </div>
@ -62,7 +71,8 @@
</NavLink> </NavLink>
</div> </div>
</AuthorizeView> </AuthorizeView>
<AuthorizeView Roles="Adviser">
<AuthorizeView Roles="Advisor">
<Authorized> <Authorized>
<div class="nav-item px-3"> <div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/home"> <NavLink class="nav-link ps-2" href="/home">
@ -95,13 +105,6 @@
<span class="oi oi-question-mark" aria-hidden="true"></span> Hjælp <span class="oi oi-question-mark" aria-hidden="true"></span> Hjælp
</NavLink> </NavLink>
</div> </div>
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/logout">
<span class="oi oi-account-login"></span> Log af
</NavLink>
</div>
</Authorized> </Authorized>
</AuthorizeView> </AuthorizeView>
</nav> </nav>

View file

@ -1,13 +1,13 @@
{ {
"appInfo": { "appInfo": {
"name": "Wonky Client", "name": "Wonky Client",
"version": "0.9.15", "version": "0.9.17",
"rc": true, "rc": true,
"sandBox": false, "sandBox": false,
"image": "grumpy-coder.png" "image": "grumpy-coder.png"
}, },
"apiConfig": { "apiConfig": {
"innoBaseUrl": "https://dev.innotec.dk", "innoBaseUrl": "https://staging.innotec.dk",
"glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=", "glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=",
"glsId": "", "glsId": "",
"virkUrl": "api/v2/services/virk", "virkUrl": "api/v2/services/virk",
@ -16,14 +16,14 @@
"tokenUri": "token", "tokenUri": "token",
"userInfoUri": "api/auth/userinfo", "userInfoUri": "api/auth/userinfo",
"catalogUri": "api/v2/crm/catalog", "catalogUri": "api/v2/crm/catalog",
"activityUri": "api/v2/crm/advisers/sales", "activityUri": "api/v2/crm/Advisors/sales",
"reportUri": "api/v2/crm/advisers/reports", "reportUri": "api/v2/crm/Advisors/reports",
"taskUri": "api/v2/crm/advisers/tasks", "taskUri": "api/v2/crm/Advisors/tasks",
"companyUri": "api/v2/crm/companies", "companyUri": "api/v2/crm/companies",
"inventoryUri": "history/inventory", "inventoryUri": "history/inventory",
"productUri": "history/products", "productUri": "history/products",
"syncUri": "history/sync", "syncUri": "history/sync",
"adminAdviserUri": "api/v2/admin/users/advisers", "adminAdvisorUri": "api/v2/admin/users/Advisors",
"adminUserUri": "api/v2/admin/users/office", "adminUserUri": "api/v2/admin/users/office",
"adminPasswdUri": "api/v2/admin/users/passwd", "adminPasswdUri": "api/v2/admin/users/passwd",
"adminReportUri": "reports", "adminReportUri": "reports",

View file

@ -99,7 +99,7 @@ public class ApiConfig
/// <summary> /// <summary>
/// Application uri for administration of sales representatives /// Application uri for administration of sales representatives
/// </summary> /// </summary>
public string AdminAdviserUri { get; set; } = ""; public string AdminAdvisorUri { get; set; } = "";
/// <summary> /// <summary>
/// Application uri for administration of administrative users /// Application uri for administration of administrative users
@ -111,6 +111,7 @@ public class ApiConfig
/// </summary> /// </summary>
public string AdminPasswdUri { get; set; } = ""; public string AdminPasswdUri { get; set; } = "";
public string WarehouseUri { get; set; } = "";
// public string KrvVariantsUri { get; set; } = ""; // public string KrvVariantsUri { get; set; } = "";
// public string KrvProductsUri { get; set; } = ""; // public string KrvProductsUri { get; set; } = "";

View file

@ -58,7 +58,7 @@ public class AdminUserInfoDto
/// </summary> /// </summary>
[Required(ErrorMessage = "Sælger identifikation skal angives.")] [Required(ErrorMessage = "Sælger identifikation skal angives.")]
[MaxLength(50,ErrorMessage = "Der kan højst bruges 20 tegn.")] [MaxLength(50,ErrorMessage = "Der kan højst bruges 20 tegn.")]
public string Adviser { get; set; } = ""; public string Advisor { get; set; } = "";
/// <summary> /// <summary>
/// Country name /// Country name
@ -76,9 +76,9 @@ public class AdminUserInfoDto
public bool EmailConfirmed { get; set; } public bool EmailConfirmed { get; set; }
/// <summary> /// <summary>
/// Adviser flag /// Advisor flag
/// </summary> /// </summary>
public bool IsAdviser { get; set; } public bool IsAdvisor { get; set; }
/// <summary> /// <summary>
/// Admin flag /// Admin flag

View file

@ -38,7 +38,15 @@ public class ReportItemLine
/// </summary> /// </summary>
public decimal Price { get; set; } public decimal Price { get; set; }
/// <summary> /// <summary>
/// Line number
/// </summary>
public int LineNumber { get; set; }
/// <summary>
/// Line sum /// Line sum
/// </summary> /// </summary>
public decimal LineSum { get; set; } public decimal LineSum { get; set; }
/// <summary>
/// Flag line as picked
/// </summary>
public bool Checked { get; set; }
} }

View file

@ -20,7 +20,7 @@ namespace Wonky.Entity.Views;
public class UserInfoView public class UserInfoView
{ {
[JsonPropertyName("id")] public string Id { get; set; } = ""; [JsonPropertyName("id")] public string Id { get; set; } = "";
[JsonPropertyName("adviser")] public string Adviser { get; set; } = ""; [JsonPropertyName("Advisor")] public string Advisor { get; set; } = "";
[JsonPropertyName("companyId")] public string CrmCompanyKey { get; set; } = ""; [JsonPropertyName("companyId")] public string CrmCompanyKey { get; set; } = "";
[JsonPropertyName("countryCode")] public string CountryCode { get; set; } = ""; [JsonPropertyName("countryCode")] public string CountryCode { get; set; } = "";
[JsonPropertyName("countryName")] public string CountryName { get; set; } = ""; [JsonPropertyName("countryName")] public string CountryName { get; set; } = "";
@ -28,8 +28,10 @@ public class UserInfoView
[JsonPropertyName("fullName")] public string FullName { get; set; } = ""; [JsonPropertyName("fullName")] public string FullName { get; set; } = "";
[JsonPropertyName("phoneNumber")] public string PhoneNumber { get; set; } = ""; [JsonPropertyName("phoneNumber")] public string PhoneNumber { get; set; } = "";
[JsonPropertyName("isAdmin")] public bool IsAdmin { get; set; } [JsonPropertyName("isAdmin")] public bool IsAdmin { get; set; }
[JsonPropertyName("isAdviser")] public bool IsAdviser { get; set; } [JsonPropertyName("isAdvisor")] public bool IsAdvisor { get; set; }
[JsonPropertyName("isEDoc")] public bool IsEDoc { get; set; } [JsonPropertyName("isEDoc")] public bool IsEDoc { get; set; }
[JsonPropertyName("isEShop")] public bool IsEShop { get; set; } [JsonPropertyName("isEShop")] public bool IsEShop { get; set; }
[JsonPropertyName("isOffice")] public bool IsOffice { get; set; }
[JsonPropertyName("isWarehouse")] public bool IsWareHouse { get; set; }
[JsonPropertyName("isSupervisor")] public bool IsSupervisor { get; set; } [JsonPropertyName("isSupervisor")] public bool IsSupervisor { get; set; }
} }

View file

@ -0,0 +1,46 @@
namespace Wonky.Entity.Views;
public class WarehouseOrderView
{
/// <summary>
/// Customer company info
/// </summary>
public ReportItemCustomer Company { get; set; } = new();
/// <summary>
/// Lines
/// </summary>
public List<ReportItemLine> Lines { get; set; } = new();
/// <summary>
/// Entity id (reference to SalesHeadId)
/// </summary>
public string OrderId { get; set; } = "";
/// <summary>
/// Order date
/// </summary>
public string OrderDate { get; set; } = "";
/// <summary>
/// Office note
/// </summary>
public string OfficeNote { get; set; } = "";
/// <summary>
/// Customer deliver name
/// </summary>
public string DlvName { get; set; } = "";
/// <summary>
/// Customer delivery address line 1
/// </summary>
public string DlvAddress1 { get; set; } = "";
/// <summary>
/// Customer delivery address line 2
/// </summary>
public string DlvAddress2 { get; set; } = "";
/// <summary>
/// Customer delivery post code and city name
/// </summary>
public string DlvZipCity { get; set; } = "";
/// <summary>
/// Current process status
/// </summary>
public string ProcessStatusEnum { get; set; } = "";
}

View file

@ -0,0 +1,14 @@
namespace Wonky.Entity.Views;
public class WarehouseProcess
{
/// <summary>
/// Entity id
/// </summary>
public string OrderId { get; set; } = "";
/// <summary>
/// Process status enum as string
/// </summary>
public string ProcessStatusEnum { get; set; } = "";
}