165 lines
No EOL
5.5 KiB
C#
165 lines
No EOL
5.5 KiB
C#
// 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 Blazored.LocalStorage;
|
|
using Microsoft.AspNetCore.Components;
|
|
using Wonky.Client.HttpInterceptors;
|
|
using Wonky.Client.HttpRepository;
|
|
using Wonky.Client.Local.Services;
|
|
using Wonky.Entity.DTO;
|
|
using Wonky.Entity.Requests;
|
|
using Wonky.Entity.Views;
|
|
|
|
#pragma warning disable CS8618
|
|
|
|
namespace Wonky.Client.Pages;
|
|
|
|
public partial class AdvisorCustomerPagedListPage : IDisposable
|
|
{
|
|
// ######################################################################3
|
|
[Inject] public ILocalStorageService Storage { get; set; }
|
|
[Inject] public UserPreferenceService PreferenceService { get; set; }
|
|
[Inject] public IAdvisorCustomerRepository CompanyRepo { get; set; }
|
|
[Inject] public HttpInterceptorService Interceptor { get; set; }
|
|
[Inject] public NavigationManager Navigator { get; set; }
|
|
[Inject] public IUserInfoService UserInfoService { get; set; }
|
|
|
|
// ######################################################################3
|
|
private List<CompanyDto> CompanyList { get; set; } = new();
|
|
private UserPreference Preference { get; set; } = new();
|
|
private UserManagerEditView XUserInfo { get; set; } = new();
|
|
private string SavedSearch { get; set; } = "";
|
|
private bool Working { get; set; } = true;
|
|
private MetaData PageData { get; set; } = new();
|
|
private CustomerPaging Paging { get; set; } = new();
|
|
private string ToggleFoldedText { get; set; } = "Lukkede";
|
|
private bool ShowFolded { get; set; }
|
|
private string ToggleHiddenText { get; set; } = "Inaktive";
|
|
private bool ShowHidden { get; set; }
|
|
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
Interceptor.RegisterEvent();
|
|
Interceptor.RegisterBeforeSendEvent();
|
|
|
|
XUserInfo = await UserInfoService.GetUserInfo();
|
|
|
|
// set preferences
|
|
Preference = await PreferenceService.GetPreference();
|
|
|
|
Paging.OrderBy = Preference.CompanySort;
|
|
Paging.SearchColumn = Preference.CompanySearch;
|
|
Paging.PageSize = Convert.ToInt32(Preference.PageSize);
|
|
Paging.HasFolded = ShowFolded ? 1 : 0;
|
|
// load saved search
|
|
SavedSearch = string.IsNullOrWhiteSpace(Preference.CompanyFilterPhrase) ? "" : Preference.CompanyFilterPhrase;
|
|
await SetSearchPhrase(SavedSearch);
|
|
Working = false;
|
|
}
|
|
|
|
|
|
private async Task ToggleFolded()
|
|
{
|
|
Working = true;
|
|
ShowFolded = !ShowFolded;
|
|
ToggleFoldedText = ShowFolded ? "Normale" : "Lukkede";
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.PageNumber = 1;
|
|
Paging.HasFolded = ShowFolded ? 1 : 0;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task ToggleHidden()
|
|
{
|
|
Working = true;
|
|
ShowHidden = !ShowHidden;
|
|
ToggleHiddenText = ShowHidden ? "Aktive" : "Inaktive";
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.PageNumber = 1;
|
|
Paging.IsHidden = ShowHidden ? 1 : 0;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task SetSelectedPage(int page)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.PageNumber = page;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task SetSearchCol(string searchColumn)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.SearchColumn = searchColumn;
|
|
Paging.PageNumber = 1;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task SetPageSize(string pageSize)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.PageSize = Convert.ToInt32(pageSize);
|
|
Paging.PageNumber = 1;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task SetSearchPhrase(string searchTerm)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.PageNumber = 1;
|
|
Paging.SearchTerm = searchTerm;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task SetSortCol(string orderBy)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
Paging.OrderBy = orderBy;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a company from CRM
|
|
/// </summary>
|
|
/// <param name="companyId"></param>
|
|
private async Task DeleteCompany(string companyId)
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
await CompanyRepo.DeleteCompany(companyId);
|
|
if (Paging.PageNumber > 1 && CompanyList.Count == 1)
|
|
Paging.PageNumber--;
|
|
await FetchCustomers();
|
|
}
|
|
|
|
private async Task FetchCustomers()
|
|
{
|
|
Working = true;
|
|
var pageRes = await CompanyRepo.GetCompanies(Paging);
|
|
Working = false;
|
|
if (pageRes.Items.Any())
|
|
{
|
|
CompanyList = pageRes.Items;
|
|
PageData = pageRes.MetaData;
|
|
}
|
|
else
|
|
{
|
|
CompanyList = new List<CompanyDto>();
|
|
PageData = new MetaData();
|
|
}
|
|
}
|
|
|
|
public void Dispose() => Interceptor.DisposeEvent();
|
|
} |