WIP: user maintenance
This commit is contained in:
parent
d526d6f35a
commit
02fb20ca8a
30 changed files with 320 additions and 139 deletions
|
@ -21,7 +21,7 @@ using Wonky.Entity.Requests;
|
|||
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class PaginationComponent
|
||||
public partial class PagerPagesComponent
|
||||
{
|
||||
[Parameter] public MetaData MetaData { get; set; } = new();
|
||||
[Parameter] public int Spread { get; set; }
|
28
Wonky.Client/Components/PagerSimpleComponent.razor
Normal file
28
Wonky.Client/Components/PagerSimpleComponent.razor
Normal file
|
@ -0,0 +1,28 @@
|
|||
@* 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]
|
||||
*@
|
||||
|
||||
|
||||
<div arial-label="Pager">
|
||||
<ul class="pagination justify-content-center">
|
||||
@foreach (var link in Links)
|
||||
{
|
||||
<li @onclick="() => OnSelectedPage(link)" style="cursor: pointer"
|
||||
class="page-item @(link.Enabled ? null : "disabled")
|
||||
@(link.Active ? "active" : null)">
|
||||
<span class="page-link" href="#">@link.Text</span>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
53
Wonky.Client/Components/PagerSimpleComponent.razor.cs
Normal file
53
Wonky.Client/Components/PagerSimpleComponent.razor.cs
Normal file
|
@ -0,0 +1,53 @@
|
|||
|
||||
// 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 Microsoft.AspNetCore.Components;
|
||||
using Wonky.Client.Features;
|
||||
using Wonky.Entity.Requests;
|
||||
|
||||
namespace Wonky.Client.Components;
|
||||
|
||||
public partial class PagerSimpleComponent
|
||||
{
|
||||
[Parameter] public MetaData MetaData { get; set; } = new();
|
||||
[Parameter] public int Spread { get; set; }
|
||||
[Parameter] public EventCallback<int> SelectedPage { get; set; }
|
||||
private List<PagingLink> Links { get; set; } = new();
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
CreatePaginationLinks();
|
||||
}
|
||||
|
||||
private void CreatePaginationLinks()
|
||||
{
|
||||
Links = new List<PagingLink>
|
||||
{
|
||||
new(MetaData.CurrentPage - 1, MetaData.HasPrevious, "Forrige"),
|
||||
new (MetaData.CurrentPage + 1, MetaData.HasNext, "Næste")
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
private async Task OnSelectedPage(PagingLink link)
|
||||
{
|
||||
if (link.Page == MetaData.CurrentPage || !link.Enabled)
|
||||
return;
|
||||
MetaData.CurrentPage = link.Page;
|
||||
await SelectedPage.InvokeAsync(link.Page);
|
||||
}
|
||||
}
|
|
@ -39,8 +39,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-12">
|
||||
<PaginationComponent MetaData="MetaInfo" Spread="2" SelectedPage="SelectedPage" />
|
||||
<div class="col-sm-12 text-center">
|
||||
<PagerPagesComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-white">
|
||||
|
@ -92,6 +92,14 @@
|
|||
</li>
|
||||
}
|
||||
</ul>
|
||||
@if (_pager.PageSize > 10)
|
||||
{
|
||||
<div class="row mt-5 pb-5">
|
||||
<div class="col-sm-12">
|
||||
<PagerSimpleComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage" />
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
|
@ -27,13 +27,13 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.OverlayOrderCreate;
|
||||
|
||||
public partial class PriceCatalogOverlay : IDisposable
|
||||
public partial class CatalogPagedOverlay : IDisposable
|
||||
{
|
||||
// injections
|
||||
[Inject] public ICountryCatalogRepository CatalogRepo { get; set; }
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
[Inject] public UserProfileService ProfileService { get; set; }
|
||||
[Inject] public ILogger<PriceCatalogOverlay> Logger { get; set; }
|
||||
[Inject] public ILogger<CatalogPagedOverlay> Logger { get; set; }
|
||||
|
||||
// parameters
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
|
@ -43,7 +43,7 @@ public partial class PriceCatalogOverlay : IDisposable
|
|||
private string _modalDisplay = "";
|
||||
private bool _showBackdrop;
|
||||
private List<SalesItemView> Items { get; set; } = new();
|
||||
private MetaData? MetaInfo { get; set; } = new();
|
||||
private MetaData? PageData { get; set; } = new();
|
||||
private CatalogPager _pager = new();
|
||||
private UserProfile _userProfile = new();
|
||||
|
||||
|
@ -68,7 +68,7 @@ public partial class PriceCatalogOverlay : IDisposable
|
|||
if (pagingResponse == null)
|
||||
Task.Delay(250);
|
||||
Items = pagingResponse.Items!;
|
||||
MetaInfo = pagingResponse.MetaData;
|
||||
PageData = pagingResponse.MetaData;
|
||||
Logger.LogDebug("PriceCatalogOverlay => Items <= {}", JsonSerializer.Serialize(Items));
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ public partial class PriceCatalogOverlay : IDisposable
|
|||
Hide();
|
||||
}
|
||||
|
||||
private async Task SelectedPage(int page)
|
||||
private async Task SetSelectedPage(int page)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
_pager.PageNumber = page;
|
|
@ -372,7 +372,7 @@ else
|
|||
|
||||
<ProductHistoryOverlay CompanyId="@CompanyId" ItemSku="@SelectedItem.Sku" @ref="ProductOverlay"/>
|
||||
|
||||
<PriceCatalogOverlay CountryCode="@Company.CountryCode.ToLower()" OnSelected="PriceListCallback" @ref="CatalogOverlay"/>
|
||||
<CatalogPagedOverlay CountryCode="@Company.CountryCode.ToLower()" OnSelected="PriceListCallback" @ref="CatalogOverlay"/>
|
||||
|
||||
<ProductPriceHistoryOverlay CompanyId="@CompanyId" Sku="@SelectedItem.Sku" OnSelected="PriceHistoryCallback" @ref="PriceOverlay"/>
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ public partial class AdvisorActivityCreatePage : IDisposable
|
|||
|
||||
// *************************************************************
|
||||
// Overlays
|
||||
private PriceCatalogOverlay CatalogOverlay { get; set; } = new();
|
||||
private CatalogPagedOverlay CatalogOverlay { get; set; } = new();
|
||||
private ProductHistoryOverlay ProductOverlay { get; set; } = new();
|
||||
private ProductPriceHistoryOverlay PriceOverlay { get; set; } = new();
|
||||
private ConfirmWorkDateModal ConfirmWorkDate { get; set; } = new();
|
||||
|
|
|
@ -39,14 +39,14 @@
|
|||
@ToggleFoldedText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<div class="col-sm-1 mx-auto">
|
||||
<button type button class="btn btn-warning @(@ShowHidden ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowHidden" @onclick="ToggleHidden">
|
||||
@ToggleHiddenText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<PaginationComponent MetaData="PageData" Spread="2" SelectedPage="SelectedPage"/>
|
||||
<PagerPagesComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
<div class="col-sm-1">@* placeholder *@</div>
|
||||
<div class="col-sm-2 mx-auto">
|
||||
|
@ -57,6 +57,14 @@
|
|||
|
||||
<AdvisorCustomerListComponent CompanyList="CompanyList" OnDelete="DeleteCompany"/>
|
||||
|
||||
@if (Paging.PageSize > 10)
|
||||
{
|
||||
<div class="row mt-5 pb-5">
|
||||
<div class="col-sm-12 text-center">
|
||||
<PagerSimpleComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Working)
|
||||
{
|
||||
<WorkingThreeDots/>
|
|
@ -26,7 +26,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class AdvisorCustomerListPage : IDisposable
|
||||
public partial class AdvisorCustomerPagedListPage : IDisposable
|
||||
{
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
[Inject] public UserProfileService ProfileService { get; set; }
|
||||
|
@ -42,9 +42,9 @@ public partial class AdvisorCustomerListPage : IDisposable
|
|||
private bool Working { get; set; } = true;
|
||||
private MetaData PageData { get; set; } = new();
|
||||
private CustomerPaging Paging { get; set; } = new();
|
||||
private string ToggleFoldedText { get; set; } = "Vis Lukkede";
|
||||
private string ToggleFoldedText { get; set; } = "Lukkede";
|
||||
private bool ShowFolded { get; set; }
|
||||
private string ToggleHiddenText { get; set; } = "Inkl. Skjulte";
|
||||
private string ToggleHiddenText { get; set; } = "Inaktive";
|
||||
private bool ShowHidden { get; set; }
|
||||
|
||||
protected override void OnParametersSet()
|
||||
|
@ -95,7 +95,7 @@ public partial class AdvisorCustomerListPage : IDisposable
|
|||
await FetchCustomers();
|
||||
}
|
||||
|
||||
private async Task SelectedPage(int page)
|
||||
private async Task SetSelectedPage(int page)
|
||||
{
|
||||
CompanyList = new List<CompanyDto>();
|
||||
Paging.PageNumber = page;
|
|
@ -145,7 +145,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="@Report.Figures.KmMorning"
|
||||
disabled="@(NoFigures)"/>
|
||||
disabled="@(NoFigures)" readonly/>
|
||||
</td>
|
||||
<td>
|
||||
<InputNumber class="form-control" @bind-Value="@Report.Figures.Distance"
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<PageSizeComponent OnChanged="SetPageSize"/>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<PaginationComponent MetaData="MetaInfo" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
<PagerPagesComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
<div class="col-sm-2 text-end">
|
||||
<a class="btn btn-secondary" href="/catalog/@CountryCode/print"><i class="bi-printer"></i> Udskriv</a>
|
||||
|
@ -51,6 +51,14 @@
|
|||
|
||||
<ProductPriceListComponent ItemList="Items"/>
|
||||
|
||||
@if (Paging.PageSize > 10)
|
||||
{
|
||||
<div class="row mt-5 pb-5">
|
||||
<div class="col-sm-12 text-center">
|
||||
<PagerSimpleComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Working)
|
||||
{
|
||||
<WorkingThreeDots />
|
|
@ -28,21 +28,21 @@ using Wonky.Entity.DTO;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class CatalogCountryPage : IDisposable
|
||||
public partial class CatalogCountryPagedListPage : IDisposable
|
||||
{
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
[Inject] public ICountryCatalogRepository Catalog { get; set; }
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
[Inject] public UserProfileService ProfileService { get; set; }
|
||||
[Inject] public ILogger<CatalogCountryPage> Logger { get; set; }
|
||||
[Inject] public ILogger<CatalogCountryPagedListPage> Logger { get; set; }
|
||||
[Inject] public NavigationManager Navigator { get; set; }
|
||||
[Inject] public IUserInfoService UserInfoService { get; set; }
|
||||
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
|
||||
private List<SalesItemView> Items { get; set; } = new();
|
||||
private MetaData MetaInfo { get; set; } = new();
|
||||
private CatalogPager Pager { get; set; } = new();
|
||||
private MetaData PageData { get; set; } = new();
|
||||
private CatalogPager Paging { get; set; } = new();
|
||||
private UserProfile Profiles { get; set; } = new();
|
||||
private UserManagerEditView XUserInfo { get; set; } = new();
|
||||
private bool Working { get; set; }
|
||||
|
@ -53,10 +53,10 @@ public partial class CatalogCountryPage : IDisposable
|
|||
Profiles = await ProfileService.GetProfile();
|
||||
XUserInfo = await UserInfoService.GetUserInfo();
|
||||
|
||||
Pager.OrderBy = Profiles.ItemSort;
|
||||
Paging.OrderBy = Profiles.ItemSort;
|
||||
|
||||
Pager.SearchColumn = Profiles.ItemSearch;
|
||||
Pager.PageSize = Convert.ToInt32(Profiles.PageSize);
|
||||
Paging.SearchColumn = Profiles.ItemSearch;
|
||||
Paging.PageSize = Convert.ToInt32(Profiles.PageSize);
|
||||
|
||||
Interceptor.RegisterEvent();
|
||||
Interceptor.RegisterBeforeSendEvent();
|
||||
|
@ -77,46 +77,46 @@ public partial class CatalogCountryPage : IDisposable
|
|||
private async Task SetSearchPhrase(string searchTerm)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.PageNumber = 1;
|
||||
Pager.SearchTerm = searchTerm;
|
||||
Paging.PageNumber = 1;
|
||||
Paging.SearchTerm = searchTerm;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
private async Task SetPageSize(string pageSize)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.PageSize = Convert.ToInt32(pageSize);
|
||||
Pager.PageNumber = 1;
|
||||
Paging.PageSize = Convert.ToInt32(pageSize);
|
||||
Paging.PageNumber = 1;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
private async Task SetSearchCol(string columnName)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.PageNumber = 1;
|
||||
Pager.SearchColumn = columnName;
|
||||
Paging.PageNumber = 1;
|
||||
Paging.SearchColumn = columnName;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
private async Task SetSortCol(string orderBy)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.OrderBy = orderBy;
|
||||
Paging.OrderBy = orderBy;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
private async Task SetSelectedPage(int page)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.PageNumber = page;
|
||||
Paging.PageNumber = page;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
private async Task SetGroupCol(string groupFilter)
|
||||
{
|
||||
Items = new List<SalesItemView>();
|
||||
Pager.PageNumber = 1;
|
||||
Pager.SelectGroup = groupFilter;
|
||||
Paging.PageNumber = 1;
|
||||
Paging.SelectGroup = groupFilter;
|
||||
await GetCatalogPaged();
|
||||
}
|
||||
|
||||
|
@ -127,9 +127,9 @@ public partial class CatalogCountryPage : IDisposable
|
|||
if (Working)
|
||||
return;
|
||||
Working = true;
|
||||
var page = await Catalog.GetSalesItemsPaged(CountryCode, Pager);
|
||||
var page = await Catalog.GetSalesItemsPaged(CountryCode, Paging);
|
||||
Items = page.Items!;
|
||||
MetaInfo = page.MetaData!;
|
||||
PageData = page.MetaData!;
|
||||
Working = false;
|
||||
}
|
||||
|
81
Wonky.Client/Pages/OfficeCustomerAdvisorPagedListPage.razor
Normal file
81
Wonky.Client/Pages/OfficeCustomerAdvisorPagedListPage.razor
Normal file
|
@ -0,0 +1,81 @@
|
|||
@* 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 Wonky.Client.Components
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize(Roles = "Admin,Office")]
|
||||
@page "/office/users/advisors/{CountryCode}/{UserId}/customers"
|
||||
|
||||
<PageTitle>Kundeliste for @SalesRep.FirstName @SalesRep.LastName</PageTitle>
|
||||
|
||||
<div class="sticky-top bg-dark text-light rounded-2 px-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-sm-3">
|
||||
<CustomerSearchColumnComponent OnChanged="SetSearchCol"/>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<CustomerSearchPhraseComponent OnChanged="SetSearchPhrase"/>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<CustomerSortComponent OnChanged="SetSortCol"/>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<PageSizeComponent OnChanged="SetPageSize"/>
|
||||
</div>
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<button type button class="btn btn-warning @(ShowFolded ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowFolded" @onclick="ToggleFolded">
|
||||
@ToggleFoldedText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-2">@*placeholder*@</div>
|
||||
<div class="col-sm-5">
|
||||
<PagerPagesComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
<div class="col-sm-1">@*placeholder*@</div>
|
||||
<div class="col-sm-2">
|
||||
<div class="busy-signal" style="display:@(Working ? "block" : "none")">
|
||||
<div class="spinner-grow text-info" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="h3 card-title text-center">
|
||||
Kundeliste for @SalesRep.FirstName @SalesRep.LastName
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-5">
|
||||
<div class="card-body">
|
||||
<OfficeCountryCustomerListComponent CompanyList="@CompanyList" CountryCode="@CountryCode"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Paging.PageSize > 10)
|
||||
{
|
||||
<div class="row mt-5 pb-5">
|
||||
<div class="col-sm-12 text-center">
|
||||
<PagerSimpleComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (Working)
|
||||
{
|
||||
<WorkingThreeDots/>
|
||||
}
|
|
@ -25,7 +25,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class OfficeUserAdvisorCustomerListPage : IDisposable
|
||||
public partial class OfficeCustomerAdvisorPagedListPage : IDisposable
|
||||
{
|
||||
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
||||
[Inject] public ICountryCustomerRepository CustomerRepo { get; set; }
|
||||
|
@ -36,11 +36,13 @@ public partial class OfficeUserAdvisorCustomerListPage : IDisposable
|
|||
[Parameter] public string CountryCode { get; set; } = "dk";
|
||||
|
||||
private List<CompanyDto> CompanyList { get; set; } = new();
|
||||
private MetaData ResponseMeta { get; set; } = new();
|
||||
private MetaData PageData { get; set; } = new();
|
||||
private CustomerPaging Paging { get; set; } = new();
|
||||
private UserProfile UserProfile { get; set; } = new();
|
||||
private string SavedSearch { get; set; } = "";
|
||||
private bool IncludeFolded { get; set; }
|
||||
private bool ShowFolded { get; set; }
|
||||
private string ToggleFoldedText { get; set; } = "Vis Lukkede";
|
||||
private bool Working { get; set; } = true;
|
||||
private UserManagerEditView SalesRep { get; set; } = new();
|
||||
|
||||
|
@ -66,16 +68,18 @@ public partial class OfficeUserAdvisorCustomerListPage : IDisposable
|
|||
Working = false;
|
||||
}
|
||||
|
||||
private async Task OnFoldedClick()
|
||||
private async Task ToggleFolded()
|
||||
{
|
||||
IncludeFolded = !IncludeFolded;
|
||||
Working = true;
|
||||
ShowFolded = !ShowFolded;
|
||||
ToggleFoldedText = ShowFolded ? "Normal Visning" : "Vis Lukkede";
|
||||
CompanyList = new List<CompanyDto>();
|
||||
Paging.PageNumber = 1;
|
||||
Paging.HasFolded = IncludeFolded ? 1 : 0;
|
||||
Paging.HasFolded = ShowFolded ? 1 : 0;
|
||||
await FetchCompanies();
|
||||
}
|
||||
|
||||
private async Task SelectedPage(int page)
|
||||
private async Task SetSelectedPage(int page)
|
||||
{
|
||||
CompanyList = new List<CompanyDto>();
|
||||
Paging.PageNumber = page;
|
||||
|
@ -125,7 +129,7 @@ public partial class OfficeUserAdvisorCustomerListPage : IDisposable
|
|||
Working = true;
|
||||
var pagingResponse = await CustomerRepo.GetCompaniesPaged(CountryCode, UserId, Paging);
|
||||
CompanyList = pagingResponse.Items;
|
||||
ResponseMeta = pagingResponse.MetaData;
|
||||
PageData = pagingResponse.MetaData;
|
||||
Working = false;
|
||||
}
|
||||
|
|
@ -34,15 +34,17 @@
|
|||
<div class="col-sm-2">
|
||||
<PageSizeComponent OnChanged="SetPageSize" />
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-2 mx-auto">
|
||||
<button type button class="btn btn-warning @(ShowFolded ? "active" : "")"
|
||||
data-bs-toggle="button" aria-pressed="@ShowFolded" @onclick="OnFoldedClick">
|
||||
@ButtonFoldedText
|
||||
data-bs-toggle="button" aria-pressed="@ShowFolded" @onclick="ToggleFolded">
|
||||
@ToggleFoldedText
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<PaginationComponent MetaData="PageData" Spread="2" SelectedPage="SelectedPage"/>
|
||||
<div class="col-sm-2">@*placeholder*@</div>
|
||||
<div class="col-sm-5">
|
||||
<PagerPagesComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
<div class="col-sm-1">@*placeholder*@</div>
|
||||
<div class="col-sm-2">
|
||||
<div class="busy-signal" style="display:@(Working ? "block" : "none")">
|
||||
<div class="spinner-grow text-info" role="status">
|
||||
|
@ -55,6 +57,15 @@
|
|||
|
||||
<OfficeCountryCustomerListComponent CompanyList="Companies" CountryCode="@CountryCode" />
|
||||
|
||||
@if (Paging.PageSize > 10)
|
||||
{
|
||||
<div class="row mt-5 pb-5">
|
||||
<div class="col-sm-12 text-center">
|
||||
<PagerSimpleComponent MetaData="PageData" Spread="2" SelectedPage="SetSelectedPage"/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (Working)
|
||||
{
|
||||
<WorkingThreeDots />
|
|
@ -26,7 +26,7 @@ using Wonky.Entity.Views;
|
|||
|
||||
namespace Wonky.Client.Pages;
|
||||
|
||||
public partial class OfficeCountryCustomerListPage : IDisposable
|
||||
public partial class OfficeCustomerCountryPagedListPage : IDisposable
|
||||
{
|
||||
[Parameter] public string CountryCode { get; set; } = "";
|
||||
[Inject] public ILocalStorageService Storage { get; set; }
|
||||
|
@ -44,7 +44,7 @@ public partial class OfficeCountryCustomerListPage : IDisposable
|
|||
private bool Working { get; set; } = true;
|
||||
private MetaData PageData { get; set; } = new();
|
||||
private CustomerPaging Paging { get; set; } = new();
|
||||
private string ButtonFoldedText { get; set; } = "Vis Ophørte";
|
||||
private string ToggleFoldedText { get; set; } = "Vis Lukkede";
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
|
@ -69,18 +69,18 @@ public partial class OfficeCountryCustomerListPage : IDisposable
|
|||
await FetchCustomers();
|
||||
}
|
||||
|
||||
private async Task OnFoldedClick()
|
||||
private async Task ToggleFolded()
|
||||
{
|
||||
Working = true;
|
||||
ShowFolded = !ShowFolded;
|
||||
ButtonFoldedText = ShowFolded ? "Vis Aktive" : "Vis Ophørte";
|
||||
ToggleFoldedText = ShowFolded ? "Normal Visning" : "Vis Lukkede";
|
||||
Companies = new List<CompanyDto>();
|
||||
Paging.PageNumber = 1;
|
||||
Paging.HasFolded = ShowFolded ? 1 : 0;
|
||||
await FetchCustomers();
|
||||
}
|
||||
|
||||
private async Task SelectedPage(int page)
|
||||
private async Task SetSelectedPage(int page)
|
||||
{
|
||||
Working = true;
|
||||
Companies = new List<CompanyDto>();
|
|
@ -241,7 +241,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<PriceCatalogOverlay @ref="CatalogOverlay" CountryCode="@CountryCode" OnSelected="PriceListCallback"/>
|
||||
<CatalogPagedOverlay @ref="CatalogOverlay" CountryCode="@CountryCode" OnSelected="PriceListCallback"/>
|
||||
<OfficeCustomerInvoiceListOverlay @ref="InvoiceListOverlay" Company="Company" InvoiceList="CompanyInvoices"/>
|
||||
<OfficeCustomerActivityListOverlay @ref="ActivityListOverlay" Company="Company" ActivityList="CompanyActivities"/>
|
||||
<OfficeOrderInventoryListOverlay @ref="InventoryListOverlay" Company="Company" Inventory="CompanyInventory" OnSelected="InventoryCallback"/>
|
|
@ -77,7 +77,7 @@ public partial class OfficeOrderCreatePage : IDisposable
|
|||
|
||||
// --------------------------------------------------------------------
|
||||
// overlays
|
||||
private PriceCatalogOverlay CatalogOverlay { get; set; } = new();
|
||||
private CatalogPagedOverlay CatalogOverlay { get; set; } = new();
|
||||
private OfficeCustomerInvoiceListOverlay InvoiceListOverlay { get; set; } = new();
|
||||
private OfficeCustomerActivityListOverlay ActivityListOverlay { get; set; } = new();
|
||||
private OfficeOrderInventoryListOverlay InventoryListOverlay { get; set; } = new();
|
||||
|
|
|
@ -1,62 +0,0 @@
|
|||
@* 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 Wonky.Client.Components
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize(Roles = "Admin,Office")]
|
||||
@page "/office/users/advisors/{CountryCode}/{UserId}/customers"
|
||||
|
||||
<PageTitle>Kundeliste for @SalesRep.FirstName @SalesRep.LastName</PageTitle>
|
||||
|
||||
<div class="sticky-top bg-dark text-light rounded-2 px-3">
|
||||
<div class="container-fluid pt-3">
|
||||
<div class="row mb-2">
|
||||
<div class="col-md-3">
|
||||
<CustomerSearchColumnComponent OnChanged="SetSearchCol" />
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<CustomerSearchPhraseComponent OnChanged="SetSearchPhrase" />
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<CustomerSortComponent OnChanged="SetSortCol" />
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<PageSizeComponent OnChanged="SetPageSize" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-3">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" id="folded" class="form-check-input" checked="@IncludeFolded" @onclick="OnFoldedClick" >
|
||||
<label for="folded" class="form-check-label">Ophørte</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<PaginationComponent MetaData="ResponseMeta" Spread="2" SelectedPage="SelectedPage"/>
|
||||
</div>
|
||||
<div class="col-3 justify-content-end">
|
||||
@* <a class="btn btn-success text-nowrap" href="/advisor/customers/new">Opret kunde</a> *@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<OfficeCountryCustomerListComponent CompanyList="@CompanyList" CountryCode="@CountryCode" />
|
||||
|
||||
@if (Working)
|
||||
{
|
||||
<WorkingThreeDots/>
|
||||
}
|
|
@ -16,14 +16,16 @@
|
|||
|
||||
@using Wonky.Client.Components
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize(Roles = "Admin,Office")]
|
||||
@attribute [Authorize(Roles = "Admin,Office,Management")]
|
||||
@page "/office/users/advisors/{CountryCode}"
|
||||
|
||||
<PageTitle>Sælger Oversigt @CountryName</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<h3>Sælgere</h3>
|
||||
<div class="mt-3 h3 card-title">
|
||||
Sælger Oversigt @CountryName
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<OfficeCountryAdvisorListComponent UserList="SalesReps" />
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
<PageTitle>Rapport Arkiv @UserInfo.FirstName @UserInfo.LastName</PageTitle>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Rapport Arkiv - @UserInfo.FirstName @UserInfo.LastName</h3>
|
||||
<div class="mt-3 h3 card-title">
|
||||
Rapport Arkiv - @UserInfo.FirstName @UserInfo.LastName
|
||||
</div>
|
||||
</div>
|
||||
<OfficeReportListComponent OnShowReport="ShowThisReport" CountryCode="@CountryCode" UserId="@UserId" ReportList="@ActivityReports" />
|
||||
</div>
|
||||
|
|
|
@ -21,7 +21,9 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<h3>Bruger info</h3>
|
||||
<div class="mt-3 h3 card-title">
|
||||
Sælger Vedligeholdelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (!string.IsNullOrWhiteSpace(UserInfo.UserId))
|
||||
|
|
|
@ -15,7 +15,16 @@
|
|||
|
||||
|
||||
@page "/system/krv/products"
|
||||
<h3>SystemKrvProductsAdminPage</h3>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<div class="mt-3 h3 card-title">
|
||||
KRV Produkt Vedligeholdelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
|
|
|
@ -15,7 +15,15 @@
|
|||
|
||||
|
||||
@page "/system/krv/protections"
|
||||
<h3>SystemKrvProtectionsAdminPage</h3>
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<div class="mt-3 h3 card-title">
|
||||
KRV Værnemiddel Vedligeholdelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
|
|
|
@ -15,7 +15,15 @@
|
|||
|
||||
|
||||
@page "/system/krv/texts"
|
||||
<h3>SystemKrvTextsAdminPage</h3>
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<div class="mt-3 h3 card-title">
|
||||
KRV Risiko Tekst Vedligeholdelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
|
|
|
@ -18,9 +18,17 @@
|
|||
@attribute [Authorize(Roles = "Admin")]
|
||||
@page "/system/supervisors"
|
||||
|
||||
<PageTitle>SupervisorUserListPage</PageTitle>
|
||||
<PageTitle>Supervisor Oversigt</PageTitle>
|
||||
|
||||
<h3>Supervisor User List Page</h3>
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<div class="mt-3 h3 card-title">
|
||||
Supervisor Oversigt
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<div class="card-title">
|
||||
<h3>Bruger oprettelse</h3>
|
||||
<div class="mt-3 h3 card-title">
|
||||
System Bruger Oprettelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
@attribute [Authorize(Roles = "Admin")]
|
||||
@page "/system/users"
|
||||
|
||||
<PageTitle>Administrativ - Bruger liste</PageTitle>
|
||||
<PageTitle>System Bruger Oversigt</PageTitle>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3>Administrativ - Bruger liste</h3>
|
||||
<h3>System Bruger Oversigt</h3>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="text-end">
|
||||
|
|
|
@ -19,9 +19,12 @@
|
|||
@attribute [Authorize(Roles = "Admin")]
|
||||
@page "/system/users/{UserId}"
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark text-white">
|
||||
<h3>Bruger info</h3>
|
||||
<div class="mt-3 h3 card-title">
|
||||
System Bruger Vedligeholdelse
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (!string.IsNullOrWhiteSpace(UserInfo.UserId))
|
||||
|
|
Loading…
Reference in a new issue