build v0.8.22

This commit is contained in:
Frede Hundewadt 2022-06-24 12:36:32 +02:00
parent f1deb49d0d
commit 73c2b6da7e
39 changed files with 367 additions and 233 deletions

View file

@ -1,9 +0,0 @@
using Microsoft.AspNetCore.Components;
using Wonky.Entity.DTO;
namespace Wonky.Client.Components;
public partial class HistoryTableComponent
{
[Parameter] public List<ProductHistoryView> History { get; set; }
}

View file

@ -1,34 +0,0 @@
@if (Products.Any())
{
<table class="table">
<thead>
<tr>
<th scope="col">
Product
</th>
<th scope="col">
Varenummer
</th>
<th scope="col">
Antal
</th>
</tr>
</thead>
<tbody>
@foreach (var product in Products)
{
<tr class="align-content-center">
<td>
@product.Name
</td>
<td>
@product.Sku
</td>
<td>
@product.Quantity
</td>
</tr>
}
</tbody>
</table>
}

View file

@ -1,9 +0,0 @@
using Microsoft.AspNetCore.Components;
using Wonky.Entity.DTO;
namespace Wonky.Client.Components;
public partial class InventoryTableComponent
{
[Parameter] public List<ProductInventoryView> Products { get; set; }
}

View file

@ -0,0 +1,34 @@
@if (Inventory.Any())
{
<div class="list-group list-group-flush">
<div class="list-group-item">
<div class="row">
<div class="col">
<h4>Produkt</h4>
</div>
<div class="col">
<h4>Varenr.</h4>
</div>
<div class="col">
<h4>Antal</h4>
</div>
</div>
</div>
@foreach (var product in Inventory)
{
<a class="list-group-item list-group-item-action" href="/companies/@CompanyId/h/p/@product.Sku">
<div class="row">
<div class="col">
@product.Description
</div>
<div class="col">
@product.Sku
</div>
<div class="col">
@product.Quantity
</div>
</div>
</a>
}
</div>
}

View file

@ -0,0 +1,10 @@
using Microsoft.AspNetCore.Components;
using Wonky.Entity.DTO;
namespace Wonky.Client.Components;
public partial class ProductInventoryTableComponent
{
[Parameter] public List<ProductInventoryView> Inventory { get; set; } = new();
[Parameter] public string CompanyId { get; set; } = "";
}

View file

@ -1,4 +1,4 @@
@if (History.Any()) @if (ProductHistory.Any())
{ {
<table class="table"> <table class="table">
<thead> <thead>
@ -24,7 +24,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@foreach (var line in History) @foreach (var line in ProductHistory)
{ {
<tr class="align-content-center"> <tr class="align-content-center">
<td> <td>
@ -34,7 +34,7 @@
@line.Quantity @line.Quantity
</td> </td>
<td> <td>
@line.Name @line.Description
</td> </td>
<td> <td>
@line.Sku @line.Sku

View file

@ -0,0 +1,10 @@
using Microsoft.AspNetCore.Components;
using Wonky.Entity.DTO;
namespace Wonky.Client.Components;
public partial class ProductLineTableComponent
{
[Parameter] public List<ProductHistoryView> ProductHistory { get; set; } = new();
}

View file

@ -47,7 +47,8 @@ public class CompanyHttpRepository : ICompanyHttpRepository
public CompanyHttpRepository(HttpClient client, public CompanyHttpRepository(HttpClient client,
ILogger<CompanyHttpRepository> logger, ILogger<CompanyHttpRepository> logger,
NavigationManager navigation, IOptions<ApiConfig> apiConfig) NavigationManager navigation,
IOptions<ApiConfig> apiConfig)
{ {
_client = client; _client = client;
_logger = logger; _logger = logger;

View file

@ -19,54 +19,43 @@ public class HistoryHttpRepository : IHistoryHttpRepository
private readonly NavigationManager _navigation; private readonly NavigationManager _navigation;
private ILogger<HistoryHttpRepository> _logger; private ILogger<HistoryHttpRepository> _logger;
private readonly HttpClient _client; private readonly HttpClient _client;
private readonly ApiConfig _apiConfig; private readonly ApiConfig _api;
public HistoryHttpRepository(HttpClient client, public HistoryHttpRepository(HttpClient client,
ILogger<HistoryHttpRepository> logger, ILogger<HistoryHttpRepository> logger,
NavigationManager navigation, IOptions<ApiConfig> configuration) NavigationManager navigation,
IOptions<ApiConfig> configuration)
{ {
_client = client; _client = client;
_logger = logger; _logger = logger;
_navigation = navigation; _navigation = navigation;
_apiConfig = configuration.Value; _api = configuration.Value;
} }
public async Task<List<ProductInventoryView>> FetchInventory(string companyId)
// public async Task<List<TaskItemView>> GetTaskList()
// {
// return await _client.GetFromJsonAsync<List<TaskItemView>>($"{_apiConfig.TaskItemEndpoint}");
// }
//
// public async Task CreateTaskItem(TaskItemView taskItem)
// {
// await _client.PostAsJsonAsync($"{_apiConfig.TaskItemEndpoint}", taskItem);
// }
//
// public async Task<TaskItemView> GetTaskItem(string taskItemId)
// {
// return await _client.GetFromJsonAsync<TaskItemView>($"{_apiConfig.TaskItemEndpoint}/{taskItemId}");
// }
public async Task<List<ProductInventoryView>> GetProductInventory(string companyId)
{ {
return await _client.GetFromJsonAsync<List<ProductInventoryView>>( var response = await _client.GetAsync($"{_api.CompanyEndpoint}/{companyId}/{_api.InventoryUri}");
$"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); var content = await response.Content.ReadAsStringAsync();
return response.IsSuccessStatusCode
? JsonSerializer.Deserialize<List<ProductInventoryView>>(content, _options)
: new List<ProductInventoryView>();
} }
public async Task<List<ProductHistoryView>> GetProductHistory(string companyId) public async Task<List<ProductHistoryView>> FetchHistory(string companyId)
{ {
return await _client.GetFromJsonAsync<List<ProductHistoryView>>( return await _client.GetFromJsonAsync<List<ProductHistoryView>>(
$"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); $"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}");
} }
public async Task<List<ProductHistoryView>> GetProductHistory(string companyId, string sku) public async Task<List<ProductHistoryView>> FetchHistory(string companyId, string sku)
{ {
return await _client.GetFromJsonAsync<List<ProductHistoryView>>( return await _client.GetFromJsonAsync<List<ProductHistoryView>>(
$"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); $"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}/{sku}");
} }
public async Task<string> UpdateProductHistory(string companyId, string syncDate) public async Task<string> UpdateProductHistory(string companyId, string syncDate = "2010-01-01")
{ {
return await _client.GetStringAsync($"{_apiConfig.CompanyEndpoint}/{companyId}/{syncDate}"); return await _client.GetStringAsync($"{_api.CompanyEndpoint}/{companyId}/{_api.UpdateUri}/{syncDate}");
} }
} }

View file

@ -5,8 +5,8 @@ namespace Wonky.Client.HttpRepository;
public interface IHistoryHttpRepository public interface IHistoryHttpRepository
{ {
Task<List<ProductInventoryView>> GetProductInventory(string companyId); Task<List<ProductInventoryView>> FetchInventory(string companyId);
Task<List<ProductHistoryView>> GetProductHistory(string companyId); Task<List<ProductHistoryView>> FetchHistory(string companyId);
Task<List<ProductHistoryView>> GetProductHistory(string companyId, string sku); Task<List<ProductHistoryView>> FetchHistory(string companyId, string sku);
Task<string> UpdateProductHistory(string companyId, string syncDate); Task<string> UpdateProductHistory(string companyId, string syncDate);
} }

View file

@ -32,6 +32,8 @@ namespace Wonky.Client.Pages;
public partial class ActivityCompanyCreate : IDisposable public partial class ActivityCompanyCreate : IDisposable
{ {
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
[Parameter] public string CompanyId { get; set; }
// todo: prevent creating activity for workDate with closed report // todo: prevent creating activity for workDate with closed report
[Inject] private ILogger<ActivityCompanyCreate> _logger { get; set; } [Inject] private ILogger<ActivityCompanyCreate> _logger { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] private IToastService _toast { get; set; }
@ -43,8 +45,6 @@ public partial class ActivityCompanyCreate : IDisposable
[Inject] private UserPreferenceService _userPrefs { get; set; } [Inject] private UserPreferenceService _userPrefs { get; set; }
[Inject] private IActivityHttpRepository _activityRepo { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; }
[Inject] private IReportHttpRepository _reportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }
[CascadingParameter] DraftStateProvider DraftStateProvider { get; set; }
[Parameter] public string CompanyId { get; set; }
private readonly JsonSerializerOptions? _options = new JsonSerializerOptions private readonly JsonSerializerOptions? _options = new JsonSerializerOptions
{ {
PropertyNameCaseInsensitive = true PropertyNameCaseInsensitive = true

View file

@ -7,8 +7,8 @@ namespace Wonky.Client.Pages;
public partial class ActivityList public partial class ActivityList
{ {
[Inject] public IActivityHttpRepository ActivityRepo { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; }
[Inject] public IHttpClientInterceptor Interceptor { get; set; } [Inject] private IHttpClientInterceptor _interceptor { get; set; }
} }

View file

@ -10,8 +10,8 @@ namespace Wonky.Client.Pages;
public partial class ActivityToday public partial class ActivityToday
{ {
[Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] private UserPreferenceService _preferenceService { get; set; }
[Inject] public ILogger<Home> Logger { get; set; } [Inject] private ILogger<Home> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] private IActivityHttpRepository _activityRepo { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; }
@ -24,7 +24,7 @@ public partial class ActivityToday
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
_prefs = await UserPrefs.GetPreferences(); _prefs = await _preferenceService.GetPreferences();
if(!string.IsNullOrWhiteSpace(_prefs.WorkDate)) if(!string.IsNullOrWhiteSpace(_prefs.WorkDate))
_workDate = _prefs.WorkDate; _workDate = _prefs.WorkDate;

View file

@ -37,13 +37,13 @@ namespace Wonky.Client.Pages
{ {
public partial class CompanyCreate : IDisposable public partial class CompanyCreate : IDisposable
{ {
[Inject] public IToastService ToastService { get; set; } [Inject] private IToastService _toast { get; set; }
[Inject] public ILogger<CompanyCreate> Logger { get; set; } [Inject] private ILogger<CompanyCreate> _logger { get; set; }
[Inject] public ILocalStorageService StorageService { get; set; } [Inject] private ILocalStorageService _storage { get; set; }
[Inject] public NavigationManager Navigation { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; } [Inject] private ICompanyHttpRepository _companyRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] public VatInfoLookupService VatInfoLookupService { get; set; } [Inject] private VatInfoLookupService _vatService { get; set; }
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
private CompanyDto _companyObject { get; set; } = new(); private CompanyDto _companyObject { get; set; } = new();
private VirkRegInfo _virkRegInfo { get; set; } = new(); private VirkRegInfo _virkRegInfo { get; set; } = new();
@ -63,7 +63,7 @@ namespace Wonky.Client.Pages
_editContext.OnFieldChanged += HandleFieldChanged; _editContext.OnFieldChanged += HandleFieldChanged;
_editContext.OnValidationStateChanged += ValidationChanged; _editContext.OnValidationStateChanged += ValidationChanged;
var ux = await StorageService.GetItemAsync<UserInfoView>("_xu"); var ux = await _storage.GetItemAsync<UserInfoView>("_xu");
_dk = ux.CountryCode.ToLower() == "dk"; _dk = ux.CountryCode.ToLower() == "dk";
_companyObject.SalesRepId = ux.Id; _companyObject.SalesRepId = ux.Id;
@ -75,16 +75,16 @@ namespace Wonky.Client.Pages
_companyObject.LastVisit = $"{_lastVisit:yyyy-MM-dd}"; _companyObject.LastVisit = $"{_lastVisit:yyyy-MM-dd}";
_companyObject.LastVisit = $"{_nextVisit:yyyy-MM-dd}"; _companyObject.LastVisit = $"{_nextVisit:yyyy-MM-dd}";
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
} }
private async Task GetInfoFromAddress(VatAddress address) private async Task GetInfoFromAddress(VatAddress address)
{ {
_showInfos = true; _showInfos = true;
ToastService.ShowInfo("Vent for adresse info ..."); _toast.ShowInfo("Vent for adresse info ...");
_vInfos = await VatInfoLookupService.QueryVirkRegistry( _vInfos = await _vatService.QueryVirkRegistry(
new VirkParams new VirkParams
{ {
StreetName = address.StreetName, StreetName = address.StreetName,
@ -93,18 +93,18 @@ namespace Wonky.Client.Pages
}); });
if (!_vInfos.Any()) if (!_vInfos.Any())
{ {
ToastService.ShowWarning($"Ingen data fundet ..."); _toast.ShowWarning($"Ingen data fundet ...");
} }
} }
private async Task GetInfoFromVat(string vatNumber) private async Task GetInfoFromVat(string vatNumber)
{ {
_showInfos = true; _showInfos = true;
ToastService.ShowInfo("Vent for firma info ..."); _toast.ShowInfo("Vent for firma info ...");
_vInfos = await VatInfoLookupService _vInfos = await _vatService
.QueryVirkRegistry(new VirkParams {VatNumber = vatNumber}); .QueryVirkRegistry(new VirkParams {VatNumber = vatNumber});
if (!_vInfos.Any()) if (!_vInfos.Any())
{ {
ToastService.ShowError($"Firma med CVR '{vatNumber}' findes ikke."); _toast.ShowError($"Firma med CVR '{vatNumber}' findes ikke.");
} }
} }
private void SelectCompany(string vatNumber) private void SelectCompany(string vatNumber)
@ -123,16 +123,16 @@ namespace Wonky.Client.Pages
} }
private async Task SubmitCompanyForm() private async Task SubmitCompanyForm()
{ {
var newId = await CompanyRepo.CreateCompany(_companyObject); var newId = await _companyRepo.CreateCompany(_companyObject);
if (!string.IsNullOrWhiteSpace(newId)) if (!string.IsNullOrWhiteSpace(newId))
{ {
ToastService.ShowSuccess($"'{_companyObject.Name}' er oprettet i CRM."); _toast.ShowSuccess($"'{_companyObject.Name}' er oprettet i CRM.");
Navigation.NavigateTo($"/companies/{newId}"); _navigator.NavigateTo($"/companies/{newId}");
} }
else else
{ {
ToastService.ShowWarning($"'{_companyObject.Name}' IKKE oprettet."); _toast.ShowWarning($"'{_companyObject.Name}' IKKE oprettet.");
} }
} }
@ -168,7 +168,7 @@ namespace Wonky.Client.Pages
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); _interceptor.DisposeEvent();
_editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnFieldChanged -= HandleFieldChanged;
_editContext.OnValidationStateChanged -= ValidationChanged; _editContext.OnValidationStateChanged -= ValidationChanged;
} }

View file

@ -39,7 +39,7 @@
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<div class="col-md-6"> <div class="col-md-6">
<PaginationComponent MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent> <PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
</div> </div>
@ -48,4 +48,4 @@
</div> </div>
</div> </div>
<CompanyTableComponent Companies="Companies" OnDelete="DeleteCompany"></CompanyTableComponent> <CompanyTableComponent Companies="_companyList" OnDelete="DeleteCompany"></CompanyTableComponent>

View file

@ -28,12 +28,12 @@ namespace Wonky.Client.Pages
{ {
public partial class CompanyList : IDisposable public partial class CompanyList : IDisposable
{ {
[Inject] public ILocalStorageService LocalStorage { get; set; } [Inject] private ILocalStorageService _storage { get; set; }
[Inject] private UserPreferenceService UserPrefService { get; set; } [Inject] private UserPreferenceService _preferenceService { get; set; }
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; } [Inject] private ICompanyHttpRepository _companyRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
public List<CompanyDto>? Companies { get; set; } = new(); private List<CompanyDto> _companyList { get; set; } = new();
public MetaData? MetaData { get; set; } = new(); private MetaData _metaData { get; set; } = new();
private CompanyPagingParams _paging = new(); private CompanyPagingParams _paging = new();
private Preferences _preferences { get; set; } = new(); private Preferences _preferences { get; set; } = new();
private string _savedSearch { get; set; } = ""; private string _savedSearch { get; set; } = "";
@ -41,7 +41,7 @@ namespace Wonky.Client.Pages
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// set preferences // set preferences
_preferences = await UserPrefService.GetPreferences(); _preferences = await _preferenceService.GetPreferences();
_paging.OrderBy = _preferences.CompanySort; _paging.OrderBy = _preferences.CompanySort;
_paging.SearchColumn = _preferences.CompanySearch; _paging.SearchColumn = _preferences.CompanySearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize); _paging.PageSize = Convert.ToInt32(_preferences.PageSize);
@ -52,29 +52,29 @@ namespace Wonky.Client.Pages
if(!string.IsNullOrWhiteSpace(_savedSearch)) if(!string.IsNullOrWhiteSpace(_savedSearch))
_paging.SearchTerm = _savedSearch; _paging.SearchTerm = _savedSearch;
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
// get companies // get companies
await GetCompanies(); await GetCompanies();
} }
private async Task SelectedPage(int page) private async Task SelectedPage(int page)
{ {
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
_paging.PageNumber = page; _paging.PageNumber = page;
await GetCompanies(); await GetCompanies();
} }
private async Task SetSearchCol(string searchColumn) private async Task SetSearchCol(string searchColumn)
{ {
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
_paging.SearchColumn = searchColumn; _paging.SearchColumn = searchColumn;
_paging.PageNumber = 1; _paging.PageNumber = 1;
await GetCompanies(); await GetCompanies();
} }
private async Task SetPageSize(string pageSize) private async Task SetPageSize(string pageSize)
{ {
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
_paging.PageSize = Convert.ToInt32(pageSize); _paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1; _paging.PageNumber = 1;
await GetCompanies(); await GetCompanies();
@ -83,9 +83,9 @@ namespace Wonky.Client.Pages
private async Task SetSearchPhrase(string searchTerm) private async Task SetSearchPhrase(string searchTerm)
{ {
if(string.IsNullOrWhiteSpace(searchTerm)) if(string.IsNullOrWhiteSpace(searchTerm))
await UserPrefService.SetCompanyFilterPhrase(""); await _preferenceService.SetCompanyFilterPhrase("");
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
_paging.PageNumber = 1; _paging.PageNumber = 1;
_paging.SearchTerm = searchTerm; _paging.SearchTerm = searchTerm;
await GetCompanies(); await GetCompanies();
@ -93,28 +93,28 @@ namespace Wonky.Client.Pages
private async Task SetSortCol(string orderBy) private async Task SetSortCol(string orderBy)
{ {
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
_paging.OrderBy = orderBy; _paging.OrderBy = orderBy;
await GetCompanies(); await GetCompanies();
} }
private async Task DeleteCompany(string companyId) private async Task DeleteCompany(string companyId)
{ {
Companies = new List<CompanyDto>(); _companyList = new List<CompanyDto>();
await CompanyRepo.DeleteCompany(companyId); await _companyRepo.DeleteCompany(companyId);
if (_paging.PageNumber > 1 && Companies.Count == 1) if (_paging.PageNumber > 1 && _companyList.Count == 1)
_paging.PageNumber--; _paging.PageNumber--;
await GetCompanies(); await GetCompanies();
} }
private async Task GetCompanies() private async Task GetCompanies()
{ {
var pagingResponse = await CompanyRepo.GetCompaniesPaged(_paging); var pagingResponse = await _companyRepo.GetCompaniesPaged(_paging);
Companies = pagingResponse.Items; _companyList = pagingResponse.Items;
MetaData = pagingResponse.MetaData; _metaData = pagingResponse.MetaData;
} }
public void Dispose() => Interceptor.DisposeEvent(); public void Dispose() => _interceptor.DisposeEvent();
} }
} }

View file

@ -183,10 +183,10 @@
<ValidationMessage For="@(() => _company.Interval)"></ValidationMessage> <ValidationMessage For="@(() => _company.Interval)"></ValidationMessage>
</td> </td>
<th scope="row"> <th scope="row">
Historik
</th> </th>
<td> <td>
<button class="btn btn-warning" type="button" @onclick="@RefreshHistory">@_company.HistorySync</button>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -201,10 +201,10 @@
<a class="btn btn-primary" href="/companies">Til Oversigt</a> <a class="btn btn-primary" href="/companies">Til Oversigt</a>
</div> </div>
<div class="col"> <div class="col">
<a class="btn btn-success" href="/companies/@_company.CompanyId/products">Produktkøb</a> <a class="btn btn-success" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
</div> </div>
<div class="col"> <div class="col">
<a class="btn btn-success" href="/companies/@_company.CompanyId/history">Varelinjer</a> <a class="btn btn-success" href="/companies/@_company.CompanyId/h/p">Varelinjer</a>
</div> </div>
<div class="col"> <div class="col">
<ActivityButton CompanyId="@_company.CompanyId" Enabled="@_company.ValidVat"></ActivityButton> <ActivityButton CompanyId="@_company.CompanyId" Enabled="@_company.ValidVat"></ActivityButton>

View file

@ -22,6 +22,7 @@ using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository; using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.DataProtection.Repositories;
using Wonky.Client.Helpers; using Wonky.Client.Helpers;
using Wonky.Client.Models; using Wonky.Client.Models;
using Wonky.Client.Services; using Wonky.Client.Services;
@ -34,14 +35,15 @@ namespace Wonky.Client.Pages;
public partial class CompanyView : IDisposable public partial class CompanyView : IDisposable
{ {
[Inject] public IToastService ToastService { get; set; }
[Inject] public ILogger<CompanyView> Logger { get; set; }
[Inject] public NavigationManager Navigation { get; set; }
[Inject] public ICompanyHttpRepository CompanyRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; }
[Inject] public VatInfoLookupService VatInfoLookupService { get; set; }
[Inject] public ILocalStorageService StorageService { get; set; }
[Parameter] public string CompanyId { get; set; } = ""; [Parameter] public string CompanyId { get; set; } = "";
[Inject] private IToastService _toast { get; set; }
[Inject] private ILogger<CompanyView> _loger { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private VatInfoLookupService _vatService { get; set; }
[Inject] private 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();
@ -62,14 +64,20 @@ public partial class CompanyView : IDisposable
PropertyNameCaseInsensitive = true PropertyNameCaseInsensitive = true
}; };
private async Task RefreshHistory()
{
_toast.ShowInfo("Vent mens data opdateres ...");
var ts = await _historyRepo.UpdateProductHistory(_company.CompanyId, $"{DateTime.Parse(_company.HistorySync):yyyy-MM-dd}");;
_company.HistorySync = ts.Replace("\"", "");
}
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
var ux = await StorageService.GetItemAsync<UserInfoView>("_xu"); var ux = await _storage.GetItemAsync<UserInfoView>("_xu");
countryCode = ux.CountryCode; countryCode = ux.CountryCode;
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
_company = await CompanyRepo.GetCompanyById(CompanyId); _company = await _companyRepo.GetCompanyById(CompanyId);
_orgVat = _company.VatNumber; _orgVat = _company.VatNumber;
_company.CountryCode = ux.CountryCode.ToLower(); _company.CountryCode = ux.CountryCode.ToLower();
@ -137,7 +145,7 @@ public partial class CompanyView : IDisposable
{ {
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber)) if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber))
{ {
ToastService.ShowError($"CVR/VAT/ORG nummer er ugyldig."); _toast.ShowError($"CVR/VAT/ORG nummer er ugyldig.");
StateHasChanged(); StateHasChanged();
return; return;
} }
@ -148,18 +156,18 @@ public partial class CompanyView : IDisposable
_company.UpdateErpVat = 1; _company.UpdateErpVat = 1;
var x = JsonSerializer.Serialize(_company, _options); var x = JsonSerializer.Serialize(_company, _options);
Logger.LogInformation(x); _loger.LogInformation(x);
var success = await CompanyRepo.UpdateCompany(CompanyId, _company ); var success = await _companyRepo.UpdateCompany(CompanyId, _company );
if (success) if (success)
{ {
ToastService.ShowSuccess("Check"); _toast.ShowSuccess("Check");
Navigation.NavigateTo($"/companies/{CompanyId}"); _navigator.NavigateTo($"/companies/{CompanyId}");
} }
} }
private async Task GetInfoFromAddress(VatAddress address) private async Task GetInfoFromAddress(VatAddress address)
{ {
_vInfos = await VatInfoLookupService.QueryVirkRegistry( _vInfos = await _vatService.QueryVirkRegistry(
new VirkParams new VirkParams
{ {
StreetName = address.StreetName, StreetName = address.StreetName,
@ -168,7 +176,7 @@ public partial class CompanyView : IDisposable
}); });
if (!_vInfos.Any()) if (!_vInfos.Any())
{ {
ToastService.ShowError($"Ingen virksomheder fundet."); _toast.ShowError($"Ingen virksomheder fundet.");
} }
} }
private void SelectCompany(string vatNumber, bool syncAll) private void SelectCompany(string vatNumber, bool syncAll)
@ -194,7 +202,7 @@ public partial class CompanyView : IDisposable
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); _interceptor.DisposeEvent();
_editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnFieldChanged -= HandleFieldChanged;
_editContext.OnValidationStateChanged -= ValidationChanged; _editContext.OnValidationStateChanged -= ValidationChanged;
} }

View file

@ -40,11 +40,11 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<PaginationComponent MetaData="MetaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent> <PaginationComponent MetaData="_metaDate" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<ItemTableComponent SalesItems="SalesItems"></ItemTableComponent> <ItemTableComponent SalesItems="_items"></ItemTableComponent>
</div> </div>
</div> </div>

View file

@ -30,44 +30,44 @@ namespace Wonky.Client.Pages;
public partial class ItemCatalog : IDisposable public partial class ItemCatalog : IDisposable
{ {
[Inject] public ILocalStorageService LocalStorage { get; set; } [Inject] private ILocalStorageService _storage { get; set; }
[Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } [Inject] private ISalesItemHttpRepository _itemRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService UserPreferenceService { get; set; } [Inject] private UserPreferenceService _preferenceService { get; set; }
private List<NgSalesItemView> SalesItems { get; set; } = new(); private List<NgSalesItemView> _items { get; set; } = new();
private MetaData? MetaData { get; set; } = new(); private MetaData? _metaDate { get; set; } = new();
private CatalogPagingParams _paging = new(); private CatalogPagingParams _paging = new();
private Preferences _preferences = new(); private Preferences _preferences = new();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
_preferences = await UserPreferenceService.GetPreferences(); _preferences = await _preferenceService.GetPreferences();
_paging.OrderBy = _preferences.ItemSort; _paging.OrderBy = _preferences.ItemSort;
_paging.SearchColumn = _preferences.ItemSearch; _paging.SearchColumn = _preferences.ItemSearch;
_paging.PageSize = Convert.ToInt32(_preferences.PageSize); _paging.PageSize = Convert.ToInt32(_preferences.PageSize);
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
await GetSalesItems(); await GetSalesItems();
} }
private async Task SelectedPage(int page) private async Task SelectedPage(int page)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.PageNumber = page; _paging.PageNumber = page;
await GetSalesItems(); await GetSalesItems();
} }
private async Task GetSalesItems() private async Task GetSalesItems()
{ {
var pagingResponse = await SalesItemRepo.GetSalesItemsPaged(_paging); var pagingResponse = await _itemRepo.GetSalesItemsPaged(_paging);
SalesItems = pagingResponse.Items!; _items = pagingResponse.Items!;
MetaData = pagingResponse.MetaData; _metaDate = pagingResponse.MetaData;
} }
private async Task SetPageSize(string pageSize) private async Task SetPageSize(string pageSize)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.PageSize = Convert.ToInt32(pageSize); _paging.PageSize = Convert.ToInt32(pageSize);
_paging.PageNumber = 1; _paging.PageNumber = 1;
await GetSalesItems(); await GetSalesItems();
@ -75,21 +75,21 @@ public partial class ItemCatalog : IDisposable
private async Task SetItemGroup(string groupFilter) private async Task SetItemGroup(string groupFilter)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.PageNumber = 1; _paging.PageNumber = 1;
_paging.SelectGroup = groupFilter; _paging.SelectGroup = groupFilter;
await GetSalesItems(); await GetSalesItems();
} }
private async Task SetSearchCol(string columnName) private async Task SetSearchCol(string columnName)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.PageNumber = 1; _paging.PageNumber = 1;
_paging.SearchColumn = columnName; _paging.SearchColumn = columnName;
await GetSalesItems(); await GetSalesItems();
} }
private async Task SetSearchPhrase(string searchTerm) private async Task SetSearchPhrase(string searchTerm)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.PageNumber = 1; _paging.PageNumber = 1;
_paging.SearchTerm = searchTerm; _paging.SearchTerm = searchTerm;
await GetSalesItems(); await GetSalesItems();
@ -97,11 +97,11 @@ public partial class ItemCatalog : IDisposable
private async Task SetSortCol(string orderBy) private async Task SetSortCol(string orderBy)
{ {
SalesItems = new List<NgSalesItemView>(); _items = new List<NgSalesItemView>();
_paging.OrderBy = orderBy; _paging.OrderBy = orderBy;
await GetSalesItems(); await GetSalesItems();
} }
public void Dispose() => Interceptor.DisposeEvent(); public void Dispose() => _interceptor.DisposeEvent();
} }

View file

@ -22,26 +22,26 @@
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h1>@Item.Name</h1> <h1>@_item.Name</h1>
</div> </div>
<div class="card-body"> <div class="card-body">
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tbody> <tbody>
<tr> <tr>
<th scope="row">Navn</th> <th scope="row">Navn</th>
<td>@Item.Name</td> <td>@_item.Name</td>
</tr> </tr>
<tr> <tr>
<th scope="row">Varenr</th> <th scope="row">Varenr</th>
<td>@Item.Sku</td> <td>@_item.Sku</td>
</tr> </tr>
<tr> <tr>
<th scope="row"></th> <th scope="row"></th>
<td>@Item.ProductGroup</td> <td>@_item.ProductGroup</td>
</tr> </tr>
<tr> <tr>
<th scope="row">Kort Navn</th> <th scope="row">Kort Navn</th>
<td>@Item.ShortName</td> <td>@_item.ShortName</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -52,7 +52,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@foreach (var rate in Item.Rates) @foreach (var rate in _item.Rates)
{ {
<tr> <tr>
<th scope="row">@rate.Quantity</th> <th scope="row">@rate.Quantity</th>

View file

@ -25,22 +25,17 @@ namespace Wonky.Client.Pages;
public partial class ItemView : IDisposable public partial class ItemView : IDisposable
{ {
private NgSalesItemView Item { get; set; } = new (); [Parameter] public string SalesItemId { get; set; } = "";
private NgSalesItemView _item { get; set; } = new ();
[Inject] private ISalesItemHttpRepository _itemRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject]
public ISalesItemHttpRepository SalesItemRepo { get; set; }
[Inject]
public HttpInterceptorService Interceptor { get; set; }
[Parameter]
public string SalesItemId { get; set; } = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
Item = await SalesItemRepo.GetSalesItem(SalesItemId); _item = await _itemRepo.GetSalesItem(SalesItemId);
} }
/// <summary> /// <summary>
@ -48,6 +43,6 @@ public partial class ItemView : IDisposable
/// </summary> /// </summary>
public void Dispose() public void Dispose()
{ {
Interceptor!.DisposeEvent(); _interceptor!.DisposeEvent();
} }
} }

View file

@ -0,0 +1,11 @@
@using Wonky.Client.Components
@page "/companies/{CompanyId}/h/p/{Sku}"
<div class="card">
<div class="card-header">
<h3>@_company.Name</h3>
</div>
<div class="card-body">
<ProductLineTableComponent ProductHistory="_lines"></ProductLineTableComponent>
</div>
</div>

View file

@ -0,0 +1,30 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
namespace Wonky.Client.Pages;
public partial class ProductHistoryItem : IDisposable
{
[Parameter] public string Sku { get; set; } = "";
[Parameter] public string CompanyId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
private List<ProductHistoryView> _lines { get; set; } = new();
private CompanyDto _company { get; set; } = new();
protected override async Task OnInitializedAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_company = await _companyRepo.GetCompanyById(CompanyId);
_lines = await _historyRepo.FetchHistory(CompanyId, Sku);
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
}

View file

@ -0,0 +1,11 @@
@using Wonky.Client.Components
@page "/companies/{CompanyId}/h/p"
<div class="card">
<div class="card-header">
<h3>@_company.Name</h3>
</div>
<div class="card-body">
<ProductLineTableComponent ProductHistory="_lines"></ProductLineTableComponent>
</div>
</div>

View file

@ -0,0 +1,29 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
namespace Wonky.Client.Pages;
public partial class ProductHistoryList : IDisposable
{
[Parameter] public string CompanyId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
private List<ProductHistoryView> _lines { get; set; } = new();
private CompanyDto _company { get; set; } = new();
protected override async Task OnInitializedAsync()
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_company = await _companyRepo.GetCompanyById(CompanyId);
_lines = await _historyRepo.FetchHistory(CompanyId);
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
}

View file

@ -1 +1,13 @@
@page "/companies/{CompanyId}/products" @using Wonky.Client.Components
@using Microsoft.AspNetCore.Authorization
@page "/companies/{CompanyId}/h/i"
@attribute [Authorize(Roles = "Adviser")]
<div class="card">
<div class="card-header">
<h3>@_company.Name</h3>
</div>
<div class="card-body">
<ProductInventoryTableComponent CompanyId="@CompanyId" Inventory="_inventory"></ProductInventoryTableComponent>
</div>
</div>

View file

@ -1,6 +1,32 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class ProductInventory public partial class ProductInventory : IDisposable
{ {
[Parameter] public string CompanyId { get; set; } = "";
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
private CompanyDto _company { get; set; } = new();
private List<ProductInventoryView> _inventory { get; set; } = new();
protected override async Task OnInitializedAsync()
{
Console.WriteLine($"CompanyId => {CompanyId}");
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_company = await _companyRepo.GetCompanyById(CompanyId);
_inventory = await _historyRepo.FetchInventory(CompanyId);
}
public void Dispose()
{
_interceptor.DisposeEvent();
}
} }

View file

@ -30,11 +30,11 @@ namespace Wonky.Client.Pages;
public partial class ReportCreate : IDisposable public partial class ReportCreate : IDisposable
{ {
[Inject] private HttpInterceptorService Interceptor { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService UserPrefs { get; set; } [Inject] private UserPreferenceService _userPrefs { get; set; }
[Inject] private IActivityHttpRepository ActivityRepo { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; }
[Inject] private IReportHttpRepository ReportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }
[Inject] private NavigationManager Navigator { get; set; } [Inject] private NavigationManager _navigator { get; set; }
[Inject] private ILogger<ReportCreate> _logger { get; set; } [Inject] private ILogger<ReportCreate> _logger { get; set; }
[Inject] private IToastService _toast { get; set; } [Inject] private IToastService _toast { get; set; }
private EditContext _editContext { get; set; } private EditContext _editContext { get; set; }
@ -53,13 +53,13 @@ public partial class ReportCreate : IDisposable
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
_editContext = new EditContext(_report); _editContext = new EditContext(_report);
_editContext.OnFieldChanged += HandleFieldChanged; _editContext.OnFieldChanged += HandleFieldChanged;
_editContext.OnValidationStateChanged += ValidationChanged; _editContext.OnValidationStateChanged += ValidationChanged;
_prefs = await UserPrefs.GetPreferences(); _prefs = await _userPrefs.GetPreferences();
if (!string.IsNullOrWhiteSpace(_prefs.WorkDate)) if (!string.IsNullOrWhiteSpace(_prefs.WorkDate))
_workDate = DateTime.Parse(_prefs.WorkDate); _workDate = DateTime.Parse(_prefs.WorkDate);
_leaveBegin = _workDate; _leaveBegin = _workDate;
@ -116,10 +116,10 @@ public partial class ReportCreate : IDisposable
_working = true; _working = true;
var result = await ReportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report); var result = await _reportRepo.PostReport($"{_workDate:yyyy-MM-dd}", _report);
_toast.ShowInfo($"Rapport oprettet {_workDate}"); _toast.ShowInfo($"Rapport oprettet {_workDate}");
Navigator.NavigateTo("/home"); _navigator.NavigateTo("/home");
} }
private void OnTimeChanged() private void OnTimeChanged()
@ -150,9 +150,9 @@ public partial class ReportCreate : IDisposable
private async Task GetKeyFigures() private async Task GetKeyFigures()
{ {
_working = true; _working = true;
var data = await ReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}"); var data = await _reportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}");
if(data.Closed) if(data.Closed)
Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}"); _navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}");
_noFigures = false; _noFigures = false;
_report.Figures = data.Figures; _report.Figures = data.Figures;
_init = data.Figures; _init = data.Figures;
@ -162,7 +162,7 @@ public partial class ReportCreate : IDisposable
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); _interceptor.DisposeEvent();
_editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnFieldChanged -= HandleFieldChanged;
_editContext.OnValidationStateChanged -= ValidationChanged; _editContext.OnValidationStateChanged -= ValidationChanged;
} }

View file

@ -7,8 +7,8 @@ namespace Wonky.Client.Pages;
public partial class ReportView public partial class ReportView
{ {
[Inject] private IReportHttpRepository ReportRepo { get; set; }
[Parameter] public string ReportDate { get; set; } [Parameter] public string ReportDate { get; set; }
[Inject] private IReportHttpRepository _reportRepo { get; set; }
private NgSalesReportView _report { get; set; } = new(); private NgSalesReportView _report { get; set; } = new();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
@ -22,6 +22,6 @@ public partial class ReportView
private async Task GetReport(string workDate) private async Task GetReport(string workDate)
{ {
_report = new NgSalesReportView(); _report = new NgSalesReportView();
_report = await ReportRepo.GetReport(workDate); _report = await _reportRepo.GetReport(workDate);
} }
} }

View file

@ -8,21 +8,21 @@ namespace Wonky.Client.Pages;
public partial class SalesReportList : IDisposable public partial class SalesReportList : IDisposable
{ {
[Inject] public IReportHttpRepository ReportRepo { get; set; } [Inject] private IReportHttpRepository _reportRepo { get; set; }
[Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] private 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()
{ {
Interceptor.RegisterEvent(); _interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); _interceptor.RegisterBeforeSendEvent();
_reports = await ReportRepo.GetReports(); _reports = await _reportRepo.GetReports();
} }
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); _interceptor.DisposeEvent();
} }
} }

View file

@ -8,7 +8,7 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class TaskItemList public partial class TaskItemList : IDisposable
{ {
[Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] public UserPreferenceService UserPrefs { get; set; }
[Inject] public ILogger<Home> Logger { get; set; } [Inject] public ILogger<Home> Logger { get; set; }
@ -36,5 +36,9 @@ public partial class TaskItemList
_toast.ShowInfo("Vent nogle sekunder for data"); _toast.ShowInfo("Vent nogle sekunder for data");
_workDate = workDate; _workDate = workDate;
} }
public void Dispose()
{
_interceptor.DisposeEvent();
}
} }

View file

@ -1,9 +1,11 @@
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
namespace Wonky.Client.Pages; namespace Wonky.Client.Pages;
public partial class TaskItemView public partial class TaskItemView : IDisposable
{ {
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Parameter] public string TaskItemId { get; set; } [Parameter] public string TaskItemId { get; set; }
@ -11,4 +13,10 @@ public partial class TaskItemView
{ {
return base.OnParametersSetAsync(); return base.OnParametersSetAsync();
} }
public void Dispose()
{
_interceptor.DisposeEvent();
}
} }

View file

@ -53,6 +53,7 @@ builder.Services.AddScoped<ISalesItemHttpRepository, SalesItemHttpRepository>();
builder.Services.AddScoped<IActivityHttpRepository, ActivityHttpRepository>(); builder.Services.AddScoped<IActivityHttpRepository, ActivityHttpRepository>();
builder.Services.AddScoped<IReportHttpRepository, ReportHttpRepository>(); builder.Services.AddScoped<IReportHttpRepository, ReportHttpRepository>();
builder.Services.AddScoped<ITaskItemHttpRepository, TaskItemHttpRepository>(); builder.Services.AddScoped<ITaskItemHttpRepository, TaskItemHttpRepository>();
builder.Services.AddScoped<IHistoryHttpRepository, HistoryHttpRepository>();
builder.Services.AddScoped<HttpInterceptorService>(); builder.Services.AddScoped<HttpInterceptorService>();
builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredLocalStorage();

View file

@ -18,7 +18,7 @@
}, },
"appInfo": { "appInfo": {
"name": "Wonky Client", "name": "Wonky Client",
"version": "0.8.21", "version": "0.8.22",
"isBeta": true, "isBeta": true,
"image": "grumpy-coder.png" "image": "grumpy-coder.png"
}, },
@ -36,6 +36,8 @@
"activityEndpoint": "api/v2/crm/salesReps/sales", "activityEndpoint": "api/v2/crm/salesReps/sales",
"reportEndpoint": "api/v2/crm/salesReps/reports", "reportEndpoint": "api/v2/crm/salesReps/reports",
"taskItemEndpoint": "api/v2/crm/salesRps/tasks", "taskItemEndpoint": "api/v2/crm/salesRps/tasks",
"historyEndpoint": "products" "inventoryUri": "h/i",
"productUri": "h/p",
"updateUri": "h/u"
} }
} }

View file

@ -33,5 +33,7 @@ public class ApiConfig
public string ActivityEndpoint { get; set; } = ""; public string ActivityEndpoint { get; set; } = "";
public string ReportEndpoint { get; set; } = ""; public string ReportEndpoint { get; set; } = "";
public string TaskItemEndpoint { get; set; } = ""; public string TaskItemEndpoint { get; set; } = "";
public string HistoryEndpoint { get; set; } = ""; public string InventoryUri { get; set; } = "";
public string ProductUri { get; set; } = "";
public string UpdateUri { get; set; } = "";
} }

View file

@ -78,6 +78,7 @@ public class CompanyDto
public int ValidVat { get; set; } public int ValidVat { get; set; }
public int UpdateErpVat { get; set; } public int UpdateErpVat { get; set; }
public string HistorySync { get; set; }
public virtual bool ValidDateSpan() public virtual bool ValidDateSpan()
{ {

View file

@ -3,7 +3,7 @@ namespace Wonky.Entity.DTO;
public class ProductHistoryView public class ProductHistoryView
{ {
public string DeliverDate { get; set; } = ""; public string DeliverDate { get; set; } = "";
public string Name { get; set; } = ""; public string Description { get; set; } = "";
public string Sku { get; set; } = ""; public string Sku { get; set; } = "";
public int Quantity { get; set; } public int Quantity { get; set; }
public decimal Price { get; set; } public decimal Price { get; set; }

View file

@ -1,8 +1,10 @@
using System.Text.Json.Serialization;
namespace Wonky.Entity.DTO; namespace Wonky.Entity.DTO;
public class ProductInventoryView public class ProductInventoryView
{ {
public string Name { get; set; } = ""; public string Description { get; set; } = "";
public string Sku { get; set; } = ""; public string Sku { get; set; } = "";
public int Quantity { get; set; } public int Quantity { get; set; }
} }