changed injected services to public - refactor new office customer repo

This commit is contained in:
Frede Hundewadt 2022-09-16 11:50:30 +02:00
parent 2e8deb6bb6
commit dba5d2decb
58 changed files with 860 additions and 213 deletions

View file

@ -7,7 +7,7 @@
@code { @code {
[Inject] private UserPreferenceService PreferenceService { get; set; } [Inject] public UserPreferenceService PreferenceService { get; set; }
private int KmMorning { get; set; } private int KmMorning { get; set; }
private Preferences Preferences { get; set; } = new(); private Preferences Preferences { get; set; } = new();

View file

@ -21,7 +21,7 @@ namespace Wonky.Client.Components;
public partial class AdvisorActivityTableComponent public partial class AdvisorActivityTableComponent
{ {
[Parameter] public List<ReportItemView> Activities { get; set; } [Parameter] public List<ReportItemView> Activities { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private static string GetProcessStatus(string processStatus) private static string GetProcessStatus(string processStatus)
{ {

View file

@ -29,7 +29,7 @@ namespace Wonky.Client.Components
[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; }
[Parameter] public EventCallback<string> OnSelect { get; set; } [Parameter] public EventCallback<string> OnSelect { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private Confirmation _confirmation = new (); private Confirmation _confirmation = new ();
private string _companyId = ""; private string _companyId = "";

View file

@ -24,8 +24,8 @@ namespace Wonky.Client.Components;
public partial class CompanySearchColumnComponent : IDisposable public partial class CompanySearchColumnComponent : IDisposable
{ {
[Inject] private ILocalStorageService LocalStorage { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; } [Inject] public UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; } [Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new(); private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new(); private Preferences _preferences = new();

View file

@ -25,7 +25,7 @@ namespace Wonky.Client.Components
private Timer InputTimer { get; set; } = new(); private Timer InputTimer { get; set; } = new();
private string SearchTerm { get; set; } = ""; private string SearchTerm { get; set; } = "";
private Preferences Preferences { get; set; } = new (); private Preferences Preferences { get; set; } = new ();
[Inject] private UserPreferenceService PreferenceService { get; set; } [Inject] public UserPreferenceService PreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; } [Parameter] public EventCallback<string> OnChanged { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()

View file

@ -23,8 +23,8 @@ namespace Wonky.Client.Components
{ {
public partial class CompanySortComponent : IDisposable public partial class CompanySortComponent : IDisposable
{ {
[Inject] private ILocalStorageService LocalStorage { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; } [Inject] public UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; } [Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new(); private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new(); private Preferences _preferences = new();

View file

@ -22,8 +22,8 @@ namespace Wonky.Client.Components;
public partial class ItemGroupComponent public partial class ItemGroupComponent
{ {
[Inject] private ILocalStorageService LocalStorage { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; } [Inject] public UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; } [Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new(); private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new(); private Preferences _preferences = new();

View file

@ -24,7 +24,7 @@ public partial class ItemSearchComponent : IDisposable
/// <summary> /// <summary>
/// User preference service /// User preference service
/// </summary> /// </summary>
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
/// <summary> /// <summary>
/// OnChanged event callback /// OnChanged event callback

View file

@ -24,7 +24,7 @@ public partial class ItemSortComponent : IDisposable
/// <summary> /// <summary>
/// User preference service /// User preference service
/// </summary> /// </summary>
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
/// <summary> /// <summary>
/// OnChanged callback function /// OnChanged callback function

View file

@ -24,7 +24,7 @@ namespace Wonky.Client.Components;
public partial class ItemTableComponent public partial class ItemTableComponent
{ {
[Parameter] public List<SalesItemView> SalesItems { get; set; } = new(); [Parameter] public List<SalesItemView> SalesItems { get; set; } = new();
[Inject] private IToastService ToastService { get; set; } [Inject] public IToastService ToastService { get; set; }
private void AddToDraft() private void AddToDraft()
{ {
ToastService.ShowInfo("TODO: læg til ordre kladde"); ToastService.ShowInfo("TODO: læg til ordre kladde");

View file

@ -32,12 +32,12 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Components; namespace Wonky.Client.Components;
public partial class LandingComponentAdmin : IDisposable public partial class LandingComponentAdmin : IDisposable
{ {
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
[Inject] private ILogger<LandingComponentAdmin> _logger { get; set; } [Inject] public ILogger<LandingComponentAdmin> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; } [Inject] public ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private readonly JsonSerializerOptions _options = new JsonSerializerOptions private readonly JsonSerializerOptions _options = new JsonSerializerOptions
{ {

View file

@ -32,12 +32,12 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Components; namespace Wonky.Client.Components;
public partial class LandingComponentAdvisor : IDisposable public partial class LandingComponentAdvisor : IDisposable
{ {
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
[Inject] private ILogger<LandingComponentAdvisor> _logger { get; set; } [Inject] public ILogger<LandingComponentAdvisor> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; } [Inject] public ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private readonly JsonSerializerOptions _options = new JsonSerializerOptions private readonly JsonSerializerOptions _options = new JsonSerializerOptions
{ {

View file

@ -21,7 +21,7 @@ namespace Wonky.Client.Components;
public partial class OfficeActivityTableComponent public partial class OfficeActivityTableComponent
{ {
[Parameter] public List<ReportItemView> Activities { get; set; } [Parameter] public List<ReportItemView> Activities { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private static string GetProcessStatus(string processStatus) private static string GetProcessStatus(string processStatus)
{ {

View file

@ -58,10 +58,10 @@
</div> </div>
<div class="col justify-content-end"> <div class="col justify-content-end">
<ActivityButton CompanyId="@company.CompanyId" <ActivityButton CompanyId="@company.CompanyId"
ActionLink="/companies/$ID$/activities/new" ActionLink="/office/customers/$ID$/orders/new"
ButtonText="Besøg" ButtonText="Telefon Ordre"
ButtonType="primary" ButtonType="primary"
Enabled="@company.ValidVat"> Enabled="true">
</ActivityButton> </ActivityButton>
</div> </div>
</div> </div>

View file

@ -38,17 +38,5 @@ namespace Wonky.Client.Components
{ {
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
private void CallConfirmationModal(string companyId)
{
_companyId = companyId;
_confirmation.Show();
}
private async Task DeleteCompany()
{
_confirmation.Hide();
await OnDelete.InvokeAsync(_companyId);
}
} }
} }

View file

@ -23,8 +23,8 @@ namespace Wonky.Client.Components
{ {
public partial class PageSizeComponent : IDisposable public partial class PageSizeComponent : IDisposable
{ {
[Inject] private ILocalStorageService LocalStorage { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; } [Inject] public UserPreferenceService UserPreferenceService { get; set; }
[Parameter] public EventCallback<string> OnChanged { get; set; } [Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new(); private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new(); private Preferences _preferences = new();

View file

@ -27,9 +27,9 @@ namespace Wonky.Client.Components;
public partial class WarehouseListComponent public partial class WarehouseListComponent
{ {
[Parameter] public string Status { get; set; } = "none"; [Parameter] public string Status { get; set; } = "none";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; } [Inject] public IWarehouseHttpRepository _warehouseRepo { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private string _items { get; set; } private string _items { get; set; }
private bool _readyToShip; private bool _readyToShip;

View file

@ -26,7 +26,7 @@ public partial class WorkDateComponent : IDisposable
/// <summary> /// <summary>
/// User preference service /// User preference service
/// </summary> /// </summary>
[Inject] private UserPreferenceService UserPrefs { get; set; } [Inject] public UserPreferenceService UserPrefs { get; set; }
/// <summary> /// <summary>
/// OnChanged callback function /// OnChanged callback function

View file

@ -21,6 +21,8 @@ namespace Wonky.Client.HttpInterfaces;
public interface IOfficeCustomerHttpRepository public interface IOfficeCustomerHttpRepository
{ {
Task<PagingResponse<CompanyDto>> GetCompaniesPaged(string userId, CompanyPagingParams pagingParameters); Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters);
Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CompanyPagingParams pagingParameters);
Task<PagingResponse<CompanyDto>> GetCompaniesPagedCountry(string countryCode, CompanyPagingParams pagingParameters);
Task<CompanyDto> GetCompanyById(string companyId); Task<CompanyDto> GetCompanyById(string companyId);
} }

View file

@ -56,12 +56,13 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
_navigation = navigation; _navigation = navigation;
_apiConfig = apiConfig.Value; _apiConfig = apiConfig.Value;
} }
/// <summary> /// <summary>
/// Get from crm endpoint /// get a paged list of all customer entities
/// </summary> /// </summary>
/// <param name="pagingParameters"></param> /// <param name="pagingParameters"></param>
/// <returns>Paged response</returns> /// <returns></returns>
public async Task<PagingResponse<CompanyDto>> GetCompanies(CompanyPagingParams pagingParameters) public async Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters)
{ {
var queryString = new Dictionary<string, string> var queryString = new Dictionary<string, string>
{ {
@ -73,7 +74,69 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
["isHidden"] = pagingParameters.IsHidden.ToString(), ["isHidden"] = pagingParameters.IsHidden.ToString(),
["hasFolded"] = pagingParameters.HasFolded.ToString() ["hasFolded"] = pagingParameters.HasFolded.ToString()
}; };
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.CrmCustomers}/page", queryString)); var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.OfficeCustomers}", queryString));
var content = await response.Content.ReadAsStringAsync();
var pagingResponse = new PagingResponse<CompanyDto>
{
Items = JsonSerializer.Deserialize<List<CompanyDto>>(content, _options),
MetaData = JsonSerializer.Deserialize<MetaData>(response.Headers.GetValues("X-Pagination").First(), _options)
};
return pagingResponse;
}
/// <summary>
/// Get paged list of customer entities by sales rep id
/// </summary>
/// <param name="salesRepId"></param>
/// <param name="pagingParameters"></param>
/// <returns></returns>
public async Task<PagingResponse<CompanyDto>> GetCompaniesPagedSalesRep(string salesRepId, CompanyPagingParams pagingParameters)
{
var queryString = new Dictionary<string, string>
{
["pageNumber"] = pagingParameters.PageNumber.ToString(),
["pageSize"] = pagingParameters.PageSize.ToString(),
["searchTerm"] = pagingParameters.SearchTerm,
["searchColumn"] = pagingParameters.SearchColumn,
["orderBy"] = pagingParameters.OrderBy,
["isHidden"] = pagingParameters.IsHidden.ToString(),
["hasFolded"] = pagingParameters.HasFolded.ToString()
};
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.OfficeCustomers}/salesRep/{salesRepId}", queryString));
var content = await response.Content.ReadAsStringAsync();
var pagingResponse = new PagingResponse<CompanyDto>
{
Items = JsonSerializer.Deserialize<List<CompanyDto>>(content, _options),
MetaData = JsonSerializer.Deserialize<MetaData>(response.Headers.GetValues("X-Pagination").First(), _options)
};
return pagingResponse;
}
/// <summary>
/// Get paged list of customer companies by country code
/// </summary>
/// <param name="countryCode"></param>
/// <param name="pagingParameters"></param>
/// <returns></returns>
public async Task<PagingResponse<CompanyDto>> GetCompaniesPagedCountry(string countryCode, CompanyPagingParams pagingParameters)
{
var queryString = new Dictionary<string, string>
{
["pageNumber"] = pagingParameters.PageNumber.ToString(),
["pageSize"] = pagingParameters.PageSize.ToString(),
["searchTerm"] = pagingParameters.SearchTerm,
["searchColumn"] = pagingParameters.SearchColumn,
["orderBy"] = pagingParameters.OrderBy,
["isHidden"] = pagingParameters.IsHidden.ToString(),
["hasFolded"] = pagingParameters.HasFolded.ToString()
};
var response = await _client.GetAsync(QueryHelpers.AddQueryString($"{_apiConfig.OfficeCustomers}/country/{countryCode}", queryString));
var content = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync();
@ -84,36 +147,15 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
}; };
return pagingResponse; return pagingResponse;
} }
/// <summary> /// <summary>
/// Get customer by account /// Get customer entity by id
/// </summary> /// </summary>
/// <param name="accountNumber"></param> /// <param name="companyId"></param>
/// <returns></returns> /// <returns></returns>
public async Task<CompanyDto> GetCompanyAccount(string accountNumber)
{
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CrmCustomers}/account/{accountNumber}");
return company ?? new CompanyDto();
}
public Task<PagingResponse<CompanyDto>> GetCompaniesPaged(CompanyPagingParams pagingParameters)
{
throw new NotImplementedException();
}
public Task<PagingResponse<CompanyDto>> GetCompaniesPaged(string userId, CompanyPagingParams pagingParameters)
{
throw new NotImplementedException();
}
public Task<CompanyDto> GetCompanyByAccount(string accountNumber)
{
throw new NotImplementedException();
}
public async Task<CompanyDto> GetCompanyById(string companyId) public async Task<CompanyDto> GetCompanyById(string companyId)
{ {
var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.CrmCustomers}/{companyId}"); var company = await _client.GetFromJsonAsync<CompanyDto>($"{_apiConfig.OfficeCustomers}/id/{companyId}");
return company ?? new CompanyDto(); return company ?? new CompanyDto();
} }
@ -124,7 +166,7 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
/// <returns>company id</returns> /// <returns>company id</returns>
public async Task<string> CreateCompany(CompanyDto model) public async Task<string> CreateCompany(CompanyDto model)
{ {
var response = await _client.PostAsJsonAsync($"{_apiConfig.CrmCustomers}", model); var response = await _client.PostAsJsonAsync($"{_apiConfig.OfficeCustomers}", model);
var content = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<CompanyDto>(content, _options); var result = JsonSerializer.Deserialize<CompanyDto>(content, _options);
return result.CompanyId; return result.CompanyId;
@ -138,7 +180,7 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
/// <returns></returns> /// <returns></returns>
public async Task<bool> UpdateCompany(string companyId, CompanyDto model) public async Task<bool> UpdateCompany(string companyId, CompanyDto model)
{ {
var response = await _client.PutAsJsonAsync($"{_apiConfig.CrmCustomers}/{companyId}", model); var response = await _client.PutAsJsonAsync($"{_apiConfig.OfficeCustomers}/{companyId}", model);
var content = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content); Console.WriteLine(content);
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
@ -151,7 +193,7 @@ public class OfficeCustomerHttpRepository : IOfficeCustomerHttpRepository
/// <returns></returns> /// <returns></returns>
public async Task<bool> DeleteCompany(string companyId) public async Task<bool> DeleteCompany(string companyId)
{ {
var response = await _client.DeleteAsync($"{_apiConfig.CrmCustomers}/{companyId}"); var response = await _client.DeleteAsync($"{_apiConfig.OfficeCustomers}/{companyId}");
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
} }

View file

@ -28,8 +28,8 @@ public partial class AdminKrvItemViewPage : IDisposable
{ {
[Parameter] public string SalesItemId { get; set; } = ""; [Parameter] public string SalesItemId { get; set; } = "";
private SalesItemView _item { get; set; } = new (); private SalesItemView _item { get; set; } = new ();
[Inject] private ICatalogHttpRepository _itemRepo { get; set; } [Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()

View file

@ -26,9 +26,9 @@ public partial class CrmHistoryItemPage : IDisposable
{ {
[Parameter] public string Sku { get; set; } = ""; [Parameter] public string Sku { get; set; } = "";
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmHistoryHttpRepository CrmHistoryRepo { get; set; } [Inject] public ICrmHistoryHttpRepository CrmHistoryRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
private List<ProductHistoryView> _lines { get; set; } = new(); private List<ProductHistoryView> _lines { get; set; } = new();
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();

View file

@ -26,9 +26,9 @@ namespace Wonky.Client.Pages;
public partial class CrmHistoryListPage : IDisposable public partial class CrmHistoryListPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmHistoryHttpRepository CrmHistoryRepo { get; set; } [Inject] public ICrmHistoryHttpRepository CrmHistoryRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
private List<ProductHistoryView> _lines { get; set; } = new(); private List<ProductHistoryView> _lines { get; set; } = new();
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();

View file

@ -27,10 +27,10 @@ namespace Wonky.Client.Pages;
public partial class CrmInventoryPage : IDisposable public partial class CrmInventoryPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private ICrmHistoryHttpRepository CrmHistoryRepo { get; set; } [Inject] public ICrmHistoryHttpRepository CrmHistoryRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();
private List<ProductInventoryView> _inventory { get; set; } = new(); private List<ProductInventoryView> _inventory { get; set; } = new();
private string _btnUpdateText { get; set; } = "check"; private string _btnUpdateText { get; set; } = "check";

View file

@ -12,9 +12,9 @@ public partial class CrmListActivityCompanyPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
private List<ReportItemView> _activities { get; set; } private List<ReportItemView> _activities { get; set; }
private CompanyDto _company { get; set; } private CompanyDto _company { get; set; }

View file

@ -27,13 +27,13 @@ namespace Wonky.Client.Pages;
public partial class CrmListActivityTodayPage : IDisposable public partial class CrmListActivityTodayPage : IDisposable
{ {
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
[Inject] private ILogger<CrmListActivityTodayPage> _logger { get; set; } [Inject] public ILogger<CrmListActivityTodayPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ICrmReportHttpRepository CrmReportRepo { get; set; } [Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private ReportStatusView? ReportStatusView { get; set; } = new(); private ReportStatusView? ReportStatusView { get; set; } = new();
private Preferences _prefs { get; set; } = new(); private Preferences _prefs { get; set; } = new();
private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}"; private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";

View file

@ -29,11 +29,11 @@ namespace Wonky.Client.Pages
{ {
public partial class CrmListCompanyPage : IDisposable public partial class CrmListCompanyPage : IDisposable
{ {
[Inject] private ILocalStorageService _storage { get; set; } [Inject] public ILocalStorageService _storage { get; set; }
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private List<CompanyDto> _companyList { get; set; } = new(); private List<CompanyDto> _companyList { get; set; } = new();
private MetaData _metaData { get; set; } = new(); private MetaData _metaData { get; set; } = new();
private CompanyPagingParams _paging = new(); private CompanyPagingParams _paging = new();
@ -113,6 +113,10 @@ namespace Wonky.Client.Pages
await GetCompanies(); await GetCompanies();
} }
/// <summary>
/// Removes a company from CRM
/// </summary>
/// <param name="companyId"></param>
private async Task DeleteCompany(string companyId) private async Task DeleteCompany(string companyId)
{ {
_companyList = new List<CompanyDto>(); _companyList = new List<CompanyDto>();

View file

@ -24,8 +24,8 @@ namespace Wonky.Client.Pages;
public partial class CrmListReportPage : IDisposable public partial class CrmListReportPage : IDisposable
{ {
[Inject] private ICrmReportHttpRepository CrmReportRepo { get; set; } [Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
private List<NgSalesReportListView> _reports { get; set; } private List<NgSalesReportListView> _reports { get; set; }

View file

@ -36,16 +36,16 @@ public partial class CrmNewActivityPage : IDisposable
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
[Parameter] public string CompanyId { get; set; } [Parameter] public string CompanyId { get; set; }
// Services // Services
[Inject] private ILogger<CrmNewActivityPage> _logger { get; set; } [Inject] public ILogger<CrmNewActivityPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _userPrefs { get; set; } [Inject] public UserPreferenceService _userPrefs { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ILocalStorageService _storage { get; set; } [Inject] public ILocalStorageService _storage { get; set; }
[Inject] private ICatalogHttpRepository _itemRepo { get; set; } [Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ICrmReportHttpRepository CrmReportRepo { get; set; } [Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
// variables // variables
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions{PropertyNameCaseInsensitive = true}; private readonly JsonSerializerOptions? _options = new JsonSerializerOptions{PropertyNameCaseInsensitive = true};
private PriceListModal _priceListModal { get; set; } private PriceListModal _priceListModal { get; set; }

View file

@ -38,13 +38,13 @@ namespace Wonky.Client.Pages
{ {
public partial class CrmNewCustomerPage : IDisposable public partial class CrmNewCustomerPage : IDisposable
{ {
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private ILogger<CrmNewCustomerPage> _logger { get; set; } [Inject] public ILogger<CrmNewCustomerPage> _logger { get; set; }
[Inject] private ILocalStorageService _storage { get; set; } [Inject] public ILocalStorageService _storage { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private VatInfoLookupService _vatService { get; set; } [Inject] public VatInfoLookupService _vatService { get; set; }
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();
private VirkRegInfo _virkRegInfo { get; set; } = new(); private VirkRegInfo _virkRegInfo { get; set; } = new();

View file

@ -32,13 +32,13 @@ namespace Wonky.Client.Pages;
public partial class CrmNewReportPage : IDisposable public partial class CrmNewReportPage : IDisposable
{ {
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _userPrefs { get; set; } [Inject] public UserPreferenceService _userPrefs { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ICrmReportHttpRepository CrmReportRepo { get; set; } [Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ILogger<CrmNewReportPage> _logger { get; set; } [Inject] public ILogger<CrmNewReportPage> _logger { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public 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();
private List<ReportItemView> _activities { get; set; } = new(); private List<ReportItemView> _activities { get; set; } = new();

View file

@ -29,10 +29,10 @@ public partial class CrmTaskItemListPage : IDisposable
{ {
[Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] public UserPreferenceService UserPrefs { get; set; }
[Inject] public ILogger<CrmTaskItemListPage> Logger { get; set; } [Inject] public ILogger<CrmTaskItemListPage> Logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; } [Inject] public ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private Preferences _prefs { get; set; } = new(); private Preferences _prefs { get; set; } = new();
private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}"; private string _workDate { get; set; } = $"{DateTime.Now:yyyy-MM-dd}";
private bool _reportExist = false; private bool _reportExist = false;

View file

@ -27,8 +27,8 @@ namespace Wonky.Client.Pages;
public partial class CrmTaskItemViewPage : IDisposable public partial class CrmTaskItemViewPage : IDisposable
{ {
[Parameter] public string TaskItemId { get; set; } [Parameter] public string TaskItemId { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; } [Inject] public ICrmTaskItemHttpRepository CrmTaskItemRepo { get; set; }
private TaskItemDto _taskItem = new (); private TaskItemDto _taskItem = new ();
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }

View file

@ -15,10 +15,10 @@ public partial class CrmViewActivityPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string OrderId { get; set; } = ""; [Parameter] public string OrderId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ILogger<CrmViewActivityPage> _logger { get; set; } [Inject] public ILogger<CrmViewActivityPage> _logger { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private ReportItemView ReportItem { get; set; } = new(); private ReportItemView ReportItem { get; set; } = new();
private ActivityOfficeNote _note { get; set; } = new(); private ActivityOfficeNote _note { get; set; } = new();
private EditContext OfficeNote { get; set; } private EditContext OfficeNote { get; set; }

View file

@ -38,14 +38,14 @@ namespace Wonky.Client.Pages;
public partial class CrmViewCompanyPage : IDisposable public partial class CrmViewCompanyPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private ILogger<CrmViewCompanyPage> _logger { get; set; } [Inject] public ILogger<CrmViewCompanyPage> _logger { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private ICrmHistoryHttpRepository CrmHistoryRepo { get; set; } [Inject] public ICrmHistoryHttpRepository CrmHistoryRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private VatInfoLookupService _vatService { get; set; } [Inject] public VatInfoLookupService _vatService { get; set; }
[Inject] private ILocalStorageService _storage { get; set; } [Inject] public ILocalStorageService _storage { get; set; }
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private List<VirkRegInfo> _vInfos { get; set; } = new(); private List<VirkRegInfo> _vInfos { get; set; } = new();

View file

@ -24,8 +24,8 @@ namespace Wonky.Client.Pages;
public partial class CrmViewReportPage public partial class CrmViewReportPage
{ {
[Parameter] public string ReportDate { get; set; } [Parameter] public string ReportDate { get; set; }
[Inject] private ICrmReportHttpRepository CrmReportRepo { get; set; } [Inject] public ICrmReportHttpRepository CrmReportRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private ReportView _report { get; set; } = new(); private ReportView _report { get; set; } = new();
private List<ReportItemView> _items { get; set; } = new (); private List<ReportItemView> _items { get; set; } = new ();

View file

@ -10,8 +10,8 @@ public partial class CrmWorkplaceDocumentListPage
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string WorkplaceId { get; set; } = ""; [Parameter] public string WorkplaceId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; } [Inject] public ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; }
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {

View file

@ -27,9 +27,9 @@ namespace Wonky.Client.Pages;
public partial class CrmWorkplaceListPage : IDisposable public partial class CrmWorkplaceListPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; } [Inject] public ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
private List<WorkplaceListView> _workplaces { get; set; } = new(); private List<WorkplaceListView> _workplaces { get; set; } = new();
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();

View file

@ -29,10 +29,10 @@ public partial class CrmWorkplaceViewPage : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string WorkplaceId { get; set; } = ""; [Parameter] public string WorkplaceId { get; set; } = "";
[Inject] private ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; } [Inject] public ICrmWorkplaceHttpRepository CrmWorkplaceRepo { get; set; }
[Inject] private ICrmCompanyHttpRepository _companyRepo { get; set; } [Inject] public ICrmCompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
private WorkplaceDto _workplace { get; set; } = new(); private WorkplaceDto _workplace { get; set; } = new();
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }

View file

@ -25,8 +25,8 @@ namespace Wonky.Client.Pages;
public partial class OfficeListCrmUserPage : IDisposable public partial class OfficeListCrmUserPage : IDisposable
{ {
[Parameter] public string CountryCode { get; set; } = ""; [Parameter] public string CountryCode { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IOfficeUserHttpRepository OfficeUserRepo { get; set; } [Inject] public IOfficeUserHttpRepository OfficeUserRepo { get; set; }
private List<UserListAdminView> _salesReps { get; set; } = new(); private List<UserListAdminView> _salesReps { get; set; } = new();

View file

@ -17,13 +17,38 @@
@using Wonky.Client.Components @using Wonky.Client.Components
@page "/admin/companies" @page "/admin/companies"
<div class="card">
<div class="card-header bg-dark text-white"> <div class="sticky-top bg-dark text-light rounded-2 px-3">
<div class="card-title"> <div class="container-fluid pt-3">
Kundeliste <div class="row mb-2">
<div class="col-md-3">
<CompanySearchColumnComponent OnChanged="SetSearchCol" />
</div>
<div class="col-md-3">
<CompanySearchPhraseComponent OnChanged="SetSearchPhrase" />
</div>
<div class="col-md-3">
<CompanySortComponent 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="_metaData" Spread="2" SelectedPage="SelectedPage"/>
</div>
<div class="col-3 justify-content-end">
<a class="btn btn-success text-nowrap" href="/companies/new">Opret kunde</a>
</div>
</div> </div>
</div> </div>
<div class="card-body"> </div>
<OfficeCustomerTableComponent Companies="_companyList" />
</div> <AdvisorCompanyTableComponent Companies="_companyList" />
</div>

View file

@ -15,22 +15,109 @@
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services; using Wonky.Client.Services;
using Wonky.Entity.DTO; using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class OfficeListCustomerPage public partial class OfficeListCustomerPage : 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 ILogger<OfficeListCustomerPage> _logger { get; set; } [Inject] public ILogger<OfficeListCustomerPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _userPrefs { get; set; } [Inject] public IOfficeCustomerHttpRepository _companyRepo { get; set; }
[Inject] public UserPreferenceService PreferenceService { get; set; }
private readonly List<CompanyDto> _companyList = new(); private List<CompanyDto> _companyList { get; set; } = new();
private MetaData _metaData { get; set; } = new();
private CompanyPagingParams _paging = new();
private Preferences _preferences { get; set; } = new();
private string _savedSearch { get; set; } = "";
private bool _includeFolded { get; set; }
protected override async Task OnParametersSetAsync()
{
_interceptor.DisposeEvent();
_interceptor.RegisterBeforeSendEvent();
// set preferences
_preferences = await PreferenceService.GetPreferences();
_paging.OrderBy = _preferences.CompanySort;
_paging.SearchColumn = _preferences.CompanySearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
_paging.HasFolded = _includeFolded ? 1 : 0;
// load saved search
_savedSearch = _preferences.CompanyFilterPhrase;
_paging.SearchTerm = _savedSearch;
await GetCompanies();
}
private async Task OnFoldedClick()
{
_includeFolded = !_includeFolded;
_companyList = new List<CompanyDto>();
_paging.PageNumber = 1;
_paging.HasFolded = _includeFolded ? 1 : 0;
await GetCompanies();
}
private async Task SelectedPage(int page)
{
_companyList = new List<CompanyDto>();
_paging.PageNumber = page;
await GetCompanies();
}
private async Task SetSearchCol(string searchColumn)
{
_companyList = new List<CompanyDto>();
_paging.SearchColumn = searchColumn;
_paging.PageNumber = 1;
await GetCompanies();
}
private async Task SetPageSize(string pageSize)
{
_companyList = new List<CompanyDto>();
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetCompanies();
}
private async Task SetSearchPhrase(string searchTerm)
{
// if (!string.IsNullOrWhiteSpace(searchTerm) && searchTerm.Length < 3) return;
_companyList = new List<CompanyDto>();
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetCompanies();
if (!string.IsNullOrWhiteSpace(searchTerm) && searchTerm.TrimEnd().Length > 2)
{
_savedSearch = searchTerm;
await PreferenceService.SetCompanyFilterPhrase(searchTerm.Trim());
}
}
private async Task SetSortCol(string orderBy)
{
_companyList = new List<CompanyDto>();
_paging.OrderBy = orderBy;
await GetCompanies();
}
private async Task GetCompanies()
{
var pagingResponse = await _companyRepo.GetCompaniesPagedSalesRep(UserId, _paging);
_companyList = pagingResponse.Items;
_metaData = pagingResponse.MetaData;
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
} }

View file

@ -0,0 +1,54 @@
@*
// 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
@page "/admin/companies"
<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">
<CompanySearchColumnComponent OnChanged="SetSearchCol" />
</div>
<div class="col-md-3">
<CompanySearchPhraseComponent OnChanged="SetSearchPhrase" />
</div>
<div class="col-md-3">
<CompanySortComponent 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="_metaData" Spread="2" SelectedPage="SelectedPage"/>
</div>
<div class="col-3 justify-content-end">
<a class="btn btn-success text-nowrap" href="/companies/new">Opret kunde</a>
</div>
</div>
</div>
</div>
<AdvisorCompanyTableComponent Companies="_companyList" />

View file

@ -0,0 +1,123 @@
// 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.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
namespace Wonky.Client.Pages;
public partial class OfficeListCustomerSalesRepPage : IDisposable
{
[Parameter] public string UserId { get; set; } = "";
[Parameter] public string CountryCode { get; set; } = "";
[Inject] public ILogger<OfficeListCustomerSalesRepPage> _logger { get; set; }
[Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] public IOfficeCustomerHttpRepository _companyRepo { get; set; }
[Inject] public UserPreferenceService PreferenceService { get; set; }
private List<CompanyDto> _companyList { get; set; } = new();
private MetaData _metaData { get; set; } = new();
private CompanyPagingParams _paging = new();
private Preferences _preferences { get; set; } = new();
private string _savedSearch { get; set; } = "";
private bool _includeFolded { get; set; }
protected override async Task OnParametersSetAsync()
{
_interceptor.DisposeEvent();
_interceptor.RegisterBeforeSendEvent();
// set preferences
_preferences = await PreferenceService.GetPreferences();
_paging.OrderBy = _preferences.CompanySort;
_paging.SearchColumn = _preferences.CompanySearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
_paging.HasFolded = _includeFolded ? 1 : 0;
// load saved search
_savedSearch = _preferences.CompanyFilterPhrase;
_paging.SearchTerm = _savedSearch;
await GetCompanies();
}
private async Task OnFoldedClick()
{
_includeFolded = !_includeFolded;
_companyList = new List<CompanyDto>();
_paging.PageNumber = 1;
_paging.HasFolded = _includeFolded ? 1 : 0;
await GetCompanies();
}
private async Task SelectedPage(int page)
{
_companyList = new List<CompanyDto>();
_paging.PageNumber = page;
await GetCompanies();
}
private async Task SetSearchCol(string searchColumn)
{
_companyList = new List<CompanyDto>();
_paging.SearchColumn = searchColumn;
_paging.PageNumber = 1;
await GetCompanies();
}
private async Task SetPageSize(string pageSize)
{
_companyList = new List<CompanyDto>();
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetCompanies();
}
private async Task SetSearchPhrase(string searchTerm)
{
// if (!string.IsNullOrWhiteSpace(searchTerm) && searchTerm.Length < 3) return;
_companyList = new List<CompanyDto>();
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetCompanies();
if (!string.IsNullOrWhiteSpace(searchTerm) && searchTerm.TrimEnd().Length > 2)
{
_savedSearch = searchTerm;
await PreferenceService.SetCompanyFilterPhrase(searchTerm.Trim());
}
}
private async Task SetSortCol(string orderBy)
{
_companyList = new List<CompanyDto>();
_paging.OrderBy = orderBy;
await GetCompanies();
}
private async Task GetCompanies()
{
var pagingResponse = await _companyRepo.GetCompaniesPagedSalesRep(UserId, _paging);
_companyList = pagingResponse.Items;
_metaData = pagingResponse.MetaData;
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
}

View file

@ -26,8 +26,8 @@ public partial class OfficeListReportPage : 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 IOfficeReportHttpRepository _reportRepo { get; set; } [Inject] public IOfficeReportHttpRepository _reportRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
private List<NgSalesReportListView> _reports { get; set; } private List<NgSalesReportListView> _reports { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()

View file

@ -16,12 +16,12 @@ public partial class OfficeNewOrderPage : IDisposable
{ {
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
[Parameter] public string CompanyId { get; set; } [Parameter] public string CompanyId { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IOfficeCustomerHttpRepository _companyRepo { get; set; } [Inject] public IOfficeCustomerHttpRepository _companyRepo { get; set; }
[Inject] private IOfficeUserHttpRepository OfficeUserRepo { get; set; } [Inject] public IOfficeUserHttpRepository OfficeUserRepo { get; set; }
[Inject] private ICatalogHttpRepository _itemRepo { get; set; } [Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
[Inject] private ILogger<OfficeNewOrderPage> _logger { get; set; } [Inject] public ILogger<OfficeNewOrderPage> _logger { get; set; }
private PriceListModal _priceList { get; set; } = new(); private PriceListModal _priceList { get; set; } = new();
private CompanyDto _company { get; set; } = new(); private CompanyDto _company { get; set; } = new();
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }

View file

@ -29,11 +29,11 @@ public partial class OfficeViewCrmUserPage : 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] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IOfficeUserHttpRepository OfficeUserRepo { get; set; } [Inject] public IOfficeUserHttpRepository OfficeUserRepo { get; set; }
[Inject] private ILogger<OfficeViewCrmUserPage> _logger { get; set; } [Inject] public ILogger<OfficeViewCrmUserPage> _logger { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private UserInfoDto UserInfoDto { get; set; } = new(); private UserInfoDto UserInfoDto { get; set; } = new();
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private UserUpdateDto _updateInfo { get; set; } = new(); private UserUpdateDto _updateInfo { get; set; } = new();

View file

@ -39,15 +39,15 @@ public partial class OfficeViewReportPage : IDisposable
/// <summary> /// <summary>
/// Injected interceptor service /// Injected interceptor service
/// </summary> /// </summary>
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
/// <summary> /// <summary>
/// Injected administrative report http repo /// Injected administrative report http repo
/// </summary> /// </summary>
[Inject] private IOfficeReportHttpRepository _reportRepo { get; set; } [Inject] public IOfficeReportHttpRepository _reportRepo { get; set; }
/// <summary> /// <summary>
/// Navigation Manager /// Navigation Manager
/// </summary> /// </summary>
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
/// <summary> /// <summary>
/// Report to render /// Report to render

View file

@ -12,8 +12,8 @@ public partial class OfficeViewSalesActivityPage
{ {
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Parameter] public string OrderId { get; set; } = ""; [Parameter] public string OrderId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private ICrmActivityHttpRepository CrmActivityRepo { get; set; } [Inject] public ICrmActivityHttpRepository CrmActivityRepo { get; set; }
private ReportItemView _item { get; set; } = new(); private ReportItemView _item { get; set; } = new();
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()

View file

@ -29,12 +29,12 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class SalesCatalogPage : IDisposable public partial class SalesCatalogDkPage : IDisposable
{ {
[Inject] private ILocalStorageService _storage { get; set; } [Inject] public ILocalStorageService _storage { get; set; }
[Inject] private ICatalogHttpRepository _itemRepo { get; set; } [Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
private List<SalesItemView> _items { get; set; } = new(); private List<SalesItemView> _items { get; set; } = new();
private MetaData _metaData { get; set; } = new(); private MetaData _metaData { get; set; } = new();
private CatalogPagingParams _paging = new(); private CatalogPagingParams _paging = new();

View file

@ -0,0 +1,51 @@
@*
// 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]
//
*@
@page "/price-catalog"
@using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Advisor,Admin")]
<div class="sticky-top bg-dark rounded-2 px-3">
<div class="container-fluid pt-3">
<div class="row mb-3">
<div class="col">
<ItemGroupComponent OnChanged="SetItemGroup"/>
</div>
<div class="col">
<ItemSearchComponent OnChanged="SetSearchCol"/>
</div>
<div class="col">
<ItemSearchPhraseComponent OnChanged="SetSearchPhrase"/>
</div>
<div class="col">
<ItemSortComponent OnChanged="SetSortCol"/>
</div>
<div class="col-md-2">
<PageSizeComponent OnChanged="SetPageSize" />
</div>
</div>
<div class="row mb-3">
<div class="col-md-10">
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage" />
</div>
</div>
</div>
</div>
<ItemTableComponent SalesItems="_items" />

View file

@ -0,0 +1,110 @@
// 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 System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class SalesCatalogNoPage : IDisposable
{
[Inject] public ILocalStorageService _storage { get; set; }
[Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] public UserPreferenceService _preferenceService { get; set; }
private List<SalesItemView> _items { get; set; } = new();
private MetaData _metaData { get; set; } = new();
private CatalogPagingParams _paging = new();
private Preferences _preferences = new();
protected override async Task OnInitializedAsync()
{
_preferences = await _preferenceService.GetPreferences();
_paging.OrderBy = _preferences.ItemSort;
_paging.SearchColumn = _preferences.ItemSearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
await GetSalesItems();
}
private async Task GetSalesItems()
{
var pagingResponse = await _itemRepo.GetSalesItemsPaged(_paging);
_items = pagingResponse.Items!;
_metaData = pagingResponse.MetaData;
}
private async Task SetSearchPhrase(string searchTerm)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetSalesItems();
}
private async Task SetPageSize(string pageSize)
{
_items = new List<SalesItemView>();
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetSalesItems();
}
private async Task SetSearchCol(string columnName)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SearchColumn = columnName;
await GetSalesItems();
}
private async Task SetSortCol(string orderBy)
{
_items = new List<SalesItemView>();
_paging.OrderBy = orderBy;
await GetSalesItems();
}
private async Task SelectedPage(int page)
{
_items = new List<SalesItemView>();
_paging.PageNumber = page;
await GetSalesItems();
}
private async Task SetItemGroup(string groupFilter)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SelectGroup = groupFilter;
await GetSalesItems();
}
public void Dispose() => _interceptor.DisposeEvent();
}

View file

@ -0,0 +1,51 @@
@*
// 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]
//
*@
@page "/price-catalog"
@using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Advisor,Admin")]
<div class="sticky-top bg-dark rounded-2 px-3">
<div class="container-fluid pt-3">
<div class="row mb-3">
<div class="col">
<ItemGroupComponent OnChanged="SetItemGroup"/>
</div>
<div class="col">
<ItemSearchComponent OnChanged="SetSearchCol"/>
</div>
<div class="col">
<ItemSearchPhraseComponent OnChanged="SetSearchPhrase"/>
</div>
<div class="col">
<ItemSortComponent OnChanged="SetSortCol"/>
</div>
<div class="col-md-2">
<PageSizeComponent OnChanged="SetPageSize" />
</div>
</div>
<div class="row mb-3">
<div class="col-md-10">
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage" />
</div>
</div>
</div>
</div>
<ItemTableComponent SalesItems="_items" />

View file

@ -0,0 +1,110 @@
// 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 System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class SalesCatalogSePage : IDisposable
{
[Inject] public ILocalStorageService _storage { get; set; }
[Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] public UserPreferenceService _preferenceService { get; set; }
private List<SalesItemView> _items { get; set; } = new();
private MetaData _metaData { get; set; } = new();
private CatalogPagingParams _paging = new();
private Preferences _preferences = new();
protected override async Task OnInitializedAsync()
{
_preferences = await _preferenceService.GetPreferences();
_paging.OrderBy = _preferences.ItemSort;
_paging.SearchColumn = _preferences.ItemSearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize);
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
await GetSalesItems();
}
private async Task GetSalesItems()
{
var pagingResponse = await _itemRepo.GetSalesItemsPaged(_paging);
_items = pagingResponse.Items!;
_metaData = pagingResponse.MetaData;
}
private async Task SetSearchPhrase(string searchTerm)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SearchTerm = searchTerm;
await GetSalesItems();
}
private async Task SetPageSize(string pageSize)
{
_items = new List<SalesItemView>();
_paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1;
await GetSalesItems();
}
private async Task SetSearchCol(string columnName)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SearchColumn = columnName;
await GetSalesItems();
}
private async Task SetSortCol(string orderBy)
{
_items = new List<SalesItemView>();
_paging.OrderBy = orderBy;
await GetSalesItems();
}
private async Task SelectedPage(int page)
{
_items = new List<SalesItemView>();
_paging.PageNumber = page;
await GetSalesItems();
}
private async Task SetItemGroup(string groupFilter)
{
_items = new List<SalesItemView>();
_paging.PageNumber = 1;
_paging.SelectGroup = groupFilter;
await GetSalesItems();
}
public void Dispose() => _interceptor.DisposeEvent();
}

View file

@ -27,11 +27,11 @@ namespace Wonky.Client.Pages;
public partial class WarehouseOrderViewPage : IDisposable public partial class WarehouseOrderViewPage : IDisposable
{ {
[Parameter] public string OrderId { get; set; } = ""; [Parameter] public string OrderId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; } [Inject] public IWarehouseHttpRepository _warehouseRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] public NavigationManager _navigator { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
[Inject] private ILogger<WarehouseOrderViewPage> _logger { get; set; } [Inject] public ILogger<WarehouseOrderViewPage> _logger { get; set; }
private WarehouseOrderView _order { get; set; } = new(); private WarehouseOrderView _order { get; set; } = new();
private bool Loading { get; set; } private bool Loading { get; set; }

View file

@ -30,9 +30,9 @@ public partial class PriceListModal : IDisposable
private bool _showBackdrop; private bool _showBackdrop;
private List<SalesItemView> _items { get; set; } = new(); private List<SalesItemView> _items { get; set; } = new();
[Parameter] public EventCallback<SelectedSku> OnSelected { get; set; } [Parameter] public EventCallback<SelectedSku> OnSelected { get; set; }
[Inject] private ICatalogHttpRepository _itemRepo { get; set; } [Inject] public ICatalogHttpRepository _itemRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] public HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _preferenceService { get; set; } [Inject] public UserPreferenceService _preferenceService { get; set; }
private MetaData? _metaData { get; set; } = new(); private MetaData? _metaData { get; set; } = new();
private CatalogPagingParams _paging = new(); private CatalogPagingParams _paging = new();
private Preferences _preferences = new(); private Preferences _preferences = new();

View file

@ -32,8 +32,8 @@ public partial class VatLookupDkModal
private bool _showBackdrop; private bool _showBackdrop;
[Parameter] public VatAddress VatAddress { get; set; } = new(); [Parameter] public VatAddress VatAddress { get; set; } = new();
[Parameter] public EventCallback<VirkRegInfo> OnSelectedCompany { get; set; } [Parameter] public EventCallback<VirkRegInfo> OnSelectedCompany { get; set; }
[Inject] private VatInfoLookupService _vatService { get; set; } [Inject] public VatInfoLookupService _vatService { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] public IToastService _toast { get; set; }
private VirkRegInfo _virkRegInfo { get; set; } = new(); private VirkRegInfo _virkRegInfo { get; set; } = new();
private List<VirkRegInfo> _vInfos { get; set; } = new(); private List<VirkRegInfo> _vInfos { get; set; } = new();