diff --git a/Wonky.Client/Components/HistoryTableComponent.razor.cs b/Wonky.Client/Components/HistoryTableComponent.razor.cs deleted file mode 100644 index cdcc8dc0..00000000 --- a/Wonky.Client/Components/HistoryTableComponent.razor.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Wonky.Entity.DTO; - -namespace Wonky.Client.Components; - -public partial class HistoryTableComponent -{ - [Parameter] public List History { get; set; } -} \ No newline at end of file diff --git a/Wonky.Client/Components/InventoryTableComponent.razor b/Wonky.Client/Components/InventoryTableComponent.razor deleted file mode 100644 index 84efb096..00000000 --- a/Wonky.Client/Components/InventoryTableComponent.razor +++ /dev/null @@ -1,34 +0,0 @@ -@if (Products.Any()) -{ - - - - - - - - - - @foreach (var product in Products) - { - - - - - - } - -
- Product - - Varenummer - - Antal -
- @product.Name - - @product.Sku - - @product.Quantity -
-} \ No newline at end of file diff --git a/Wonky.Client/Components/InventoryTableComponent.razor.cs b/Wonky.Client/Components/InventoryTableComponent.razor.cs deleted file mode 100644 index 44358aec..00000000 --- a/Wonky.Client/Components/InventoryTableComponent.razor.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Wonky.Entity.DTO; - -namespace Wonky.Client.Components; - -public partial class InventoryTableComponent -{ - [Parameter] public List Products { get; set; } -} \ No newline at end of file diff --git a/Wonky.Client/Components/ProductInventoryTableComponent.razor b/Wonky.Client/Components/ProductInventoryTableComponent.razor new file mode 100644 index 00000000..9d15620e --- /dev/null +++ b/Wonky.Client/Components/ProductInventoryTableComponent.razor @@ -0,0 +1,34 @@ +@if (Inventory.Any()) +{ +
+
+
+
+

Produkt

+
+
+

Varenr.

+
+
+

Antal

+
+
+
+ @foreach (var product in Inventory) + { + +
+
+ @product.Description +
+
+ @product.Sku +
+
+ @product.Quantity +
+
+
+ } +
+} \ No newline at end of file diff --git a/Wonky.Client/Components/ProductInventoryTableComponent.razor.cs b/Wonky.Client/Components/ProductInventoryTableComponent.razor.cs new file mode 100644 index 00000000..513eece8 --- /dev/null +++ b/Wonky.Client/Components/ProductInventoryTableComponent.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using Wonky.Entity.DTO; + +namespace Wonky.Client.Components; + +public partial class ProductInventoryTableComponent +{ + [Parameter] public List Inventory { get; set; } = new(); + [Parameter] public string CompanyId { get; set; } = ""; +} \ No newline at end of file diff --git a/Wonky.Client/Components/HistoryTableComponent.razor b/Wonky.Client/Components/ProductLineTableComponent.razor similarity index 91% rename from Wonky.Client/Components/HistoryTableComponent.razor rename to Wonky.Client/Components/ProductLineTableComponent.razor index c6d0d53b..3d5e370d 100644 --- a/Wonky.Client/Components/HistoryTableComponent.razor +++ b/Wonky.Client/Components/ProductLineTableComponent.razor @@ -1,4 +1,4 @@ -@if (History.Any()) +@if (ProductHistory.Any()) { @@ -24,7 +24,7 @@ - @foreach (var line in History) + @foreach (var line in ProductHistory) { @@ -201,10 +201,10 @@ Til Oversigt
diff --git a/Wonky.Client/Pages/CompanyView.razor.cs b/Wonky.Client/Pages/CompanyView.razor.cs index a7783ba5..9c23b6e7 100644 --- a/Wonky.Client/Pages/CompanyView.razor.cs +++ b/Wonky.Client/Pages/CompanyView.razor.cs @@ -22,6 +22,7 @@ using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpRepository; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; +using Microsoft.AspNetCore.DataProtection.Repositories; using Wonky.Client.Helpers; using Wonky.Client.Models; using Wonky.Client.Services; @@ -34,14 +35,15 @@ namespace Wonky.Client.Pages; public partial class CompanyView : IDisposable { - [Inject] public IToastService ToastService { get; set; } - [Inject] public ILogger 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; } = ""; + [Inject] private IToastService _toast { get; set; } + [Inject] private ILogger _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 EditContext _editContext { get; set; } private List _vInfos { get; set; } = new(); @@ -62,14 +64,20 @@ public partial class CompanyView : IDisposable 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() { - var ux = await StorageService.GetItemAsync("_xu"); + var ux = await _storage.GetItemAsync("_xu"); countryCode = ux.CountryCode; - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); - _company = await CompanyRepo.GetCompanyById(CompanyId); + _company = await _companyRepo.GetCompanyById(CompanyId); _orgVat = _company.VatNumber; _company.CountryCode = ux.CountryCode.ToLower(); @@ -137,7 +145,7 @@ public partial class CompanyView : IDisposable { if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber)) { - ToastService.ShowError($"CVR/VAT/ORG nummer er ugyldig."); + _toast.ShowError($"CVR/VAT/ORG nummer er ugyldig."); StateHasChanged(); return; } @@ -148,18 +156,18 @@ public partial class CompanyView : IDisposable _company.UpdateErpVat = 1; var x = JsonSerializer.Serialize(_company, _options); - Logger.LogInformation(x); - var success = await CompanyRepo.UpdateCompany(CompanyId, _company ); + _loger.LogInformation(x); + var success = await _companyRepo.UpdateCompany(CompanyId, _company ); if (success) { - ToastService.ShowSuccess("Check"); - Navigation.NavigateTo($"/companies/{CompanyId}"); + _toast.ShowSuccess("Check"); + _navigator.NavigateTo($"/companies/{CompanyId}"); } } private async Task GetInfoFromAddress(VatAddress address) { - _vInfos = await VatInfoLookupService.QueryVirkRegistry( + _vInfos = await _vatService.QueryVirkRegistry( new VirkParams { StreetName = address.StreetName, @@ -168,7 +176,7 @@ public partial class CompanyView : IDisposable }); if (!_vInfos.Any()) { - ToastService.ShowError($"Ingen virksomheder fundet."); + _toast.ShowError($"Ingen virksomheder fundet."); } } private void SelectCompany(string vatNumber, bool syncAll) @@ -194,7 +202,7 @@ public partial class CompanyView : IDisposable public void Dispose() { - Interceptor.DisposeEvent(); + _interceptor.DisposeEvent(); _editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnValidationStateChanged -= ValidationChanged; } diff --git a/Wonky.Client/Pages/ItemCatalog.razor b/Wonky.Client/Pages/ItemCatalog.razor index 898fe3a0..2098e7cd 100644 --- a/Wonky.Client/Pages/ItemCatalog.razor +++ b/Wonky.Client/Pages/ItemCatalog.razor @@ -40,11 +40,11 @@
- +
- +
\ No newline at end of file diff --git a/Wonky.Client/Pages/ItemCatalog.razor.cs b/Wonky.Client/Pages/ItemCatalog.razor.cs index acd19906..9d60cfc2 100644 --- a/Wonky.Client/Pages/ItemCatalog.razor.cs +++ b/Wonky.Client/Pages/ItemCatalog.razor.cs @@ -30,44 +30,44 @@ namespace Wonky.Client.Pages; public partial class ItemCatalog : IDisposable { - [Inject] public ILocalStorageService LocalStorage { get; set; } - [Inject] public ISalesItemHttpRepository SalesItemRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } - [Inject] private UserPreferenceService UserPreferenceService { get; set; } - private List SalesItems { get; set; } = new(); - private MetaData? MetaData { get; set; } = new(); + [Inject] private ILocalStorageService _storage { get; set; } + [Inject] private ISalesItemHttpRepository _itemRepo { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + [Inject] private UserPreferenceService _preferenceService { get; set; } + private List _items { get; set; } = new(); + private MetaData? _metaDate { get; set; } = new(); private CatalogPagingParams _paging = new(); private Preferences _preferences = new(); protected override async Task OnInitializedAsync() { - _preferences = await UserPreferenceService.GetPreferences(); + _preferences = await _preferenceService.GetPreferences(); _paging.OrderBy = _preferences.ItemSort; _paging.SearchColumn = _preferences.ItemSearch; _paging.PageSize = Convert.ToInt32(_preferences.PageSize); - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); await GetSalesItems(); } private async Task SelectedPage(int page) { - SalesItems = new List(); + _items = new List(); _paging.PageNumber = page; await GetSalesItems(); } private async Task GetSalesItems() { - var pagingResponse = await SalesItemRepo.GetSalesItemsPaged(_paging); - SalesItems = pagingResponse.Items!; - MetaData = pagingResponse.MetaData; + var pagingResponse = await _itemRepo.GetSalesItemsPaged(_paging); + _items = pagingResponse.Items!; + _metaDate = pagingResponse.MetaData; } private async Task SetPageSize(string pageSize) { - SalesItems = new List(); + _items = new List(); _paging.PageSize = Convert.ToInt32(pageSize); _paging.PageNumber = 1; await GetSalesItems(); @@ -75,21 +75,21 @@ public partial class ItemCatalog : IDisposable private async Task SetItemGroup(string groupFilter) { - SalesItems = new List(); + _items = new List(); _paging.PageNumber = 1; _paging.SelectGroup = groupFilter; await GetSalesItems(); } private async Task SetSearchCol(string columnName) { - SalesItems = new List(); + _items = new List(); _paging.PageNumber = 1; _paging.SearchColumn = columnName; await GetSalesItems(); } private async Task SetSearchPhrase(string searchTerm) { - SalesItems = new List(); + _items = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetSalesItems(); @@ -97,11 +97,11 @@ public partial class ItemCatalog : IDisposable private async Task SetSortCol(string orderBy) { - SalesItems = new List(); + _items = new List(); _paging.OrderBy = orderBy; await GetSalesItems(); } - public void Dispose() => Interceptor.DisposeEvent(); + public void Dispose() => _interceptor.DisposeEvent(); } \ No newline at end of file diff --git a/Wonky.Client/Pages/ItemView.razor b/Wonky.Client/Pages/ItemView.razor index bc2b1086..0d3d0e2d 100644 --- a/Wonky.Client/Pages/ItemView.razor +++ b/Wonky.Client/Pages/ItemView.razor @@ -22,26 +22,26 @@
-

@Item.Name

+

@_item.Name

@@ -34,7 +34,7 @@ @line.Quantity - @line.Name + @line.Description @line.Sku diff --git a/Wonky.Client/Components/ProductLineTableComponent.razor.cs b/Wonky.Client/Components/ProductLineTableComponent.razor.cs new file mode 100644 index 00000000..982446ff --- /dev/null +++ b/Wonky.Client/Components/ProductLineTableComponent.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using Wonky.Entity.DTO; + +namespace Wonky.Client.Components; + +public partial class ProductLineTableComponent +{ + [Parameter] public List ProductHistory { get; set; } = new(); + +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/CompanyHttpRepository.cs b/Wonky.Client/HttpRepository/CompanyHttpRepository.cs index 9a9fad6b..d42e408a 100644 --- a/Wonky.Client/HttpRepository/CompanyHttpRepository.cs +++ b/Wonky.Client/HttpRepository/CompanyHttpRepository.cs @@ -47,7 +47,8 @@ public class CompanyHttpRepository : ICompanyHttpRepository public CompanyHttpRepository(HttpClient client, ILogger logger, - NavigationManager navigation, IOptions apiConfig) + NavigationManager navigation, + IOptions apiConfig) { _client = client; _logger = logger; diff --git a/Wonky.Client/HttpRepository/HistoryHttpRepository.cs b/Wonky.Client/HttpRepository/HistoryHttpRepository.cs index f5de2e80..88886ba9 100644 --- a/Wonky.Client/HttpRepository/HistoryHttpRepository.cs +++ b/Wonky.Client/HttpRepository/HistoryHttpRepository.cs @@ -19,54 +19,43 @@ public class HistoryHttpRepository : IHistoryHttpRepository private readonly NavigationManager _navigation; private ILogger _logger; private readonly HttpClient _client; - private readonly ApiConfig _apiConfig; + private readonly ApiConfig _api; public HistoryHttpRepository(HttpClient client, ILogger logger, - NavigationManager navigation, IOptions configuration) + NavigationManager navigation, + IOptions configuration) { _client = client; _logger = logger; _navigation = navigation; - _apiConfig = configuration.Value; + _api = configuration.Value; } - - - // public async Task> GetTaskList() - // { - // return await _client.GetFromJsonAsync>($"{_apiConfig.TaskItemEndpoint}"); - // } - // - // public async Task CreateTaskItem(TaskItemView taskItem) - // { - // await _client.PostAsJsonAsync($"{_apiConfig.TaskItemEndpoint}", taskItem); - // } - // - // public async Task GetTaskItem(string taskItemId) - // { - // return await _client.GetFromJsonAsync($"{_apiConfig.TaskItemEndpoint}/{taskItemId}"); - // } - public async Task> GetProductInventory(string companyId) + public async Task> FetchInventory(string companyId) { - return await _client.GetFromJsonAsync>( - $"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); + var response = await _client.GetAsync($"{_api.CompanyEndpoint}/{companyId}/{_api.InventoryUri}"); + var content = await response.Content.ReadAsStringAsync(); + return response.IsSuccessStatusCode + ? JsonSerializer.Deserialize>(content, _options) + : new List(); + } - public async Task> GetProductHistory(string companyId) + public async Task> FetchHistory(string companyId) { return await _client.GetFromJsonAsync>( - $"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); + $"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}"); } - public async Task> GetProductHistory(string companyId, string sku) + public async Task> FetchHistory(string companyId, string sku) { return await _client.GetFromJsonAsync>( - $"{_apiConfig.CompanyEndpoint}/{companyId}/{_apiConfig.HistoryEndpoint}/products"); + $"{_api.CompanyEndpoint}/{companyId}/{_api.ProductUri}/{sku}"); } - public async Task UpdateProductHistory(string companyId, string syncDate) + public async Task 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}"); } } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/IHistoryHttpRepository.cs b/Wonky.Client/HttpRepository/IHistoryHttpRepository.cs index 2fc95118..3eb49857 100644 --- a/Wonky.Client/HttpRepository/IHistoryHttpRepository.cs +++ b/Wonky.Client/HttpRepository/IHistoryHttpRepository.cs @@ -5,8 +5,8 @@ namespace Wonky.Client.HttpRepository; public interface IHistoryHttpRepository { - Task> GetProductInventory(string companyId); - Task> GetProductHistory(string companyId); - Task> GetProductHistory(string companyId, string sku); + Task> FetchInventory(string companyId); + Task> FetchHistory(string companyId); + Task> FetchHistory(string companyId, string sku); Task UpdateProductHistory(string companyId, string syncDate); } \ No newline at end of file diff --git a/Wonky.Client/Pages/ActivityCompanyCreate.razor.cs b/Wonky.Client/Pages/ActivityCompanyCreate.razor.cs index 6a3f1caa..8057377a 100644 --- a/Wonky.Client/Pages/ActivityCompanyCreate.razor.cs +++ b/Wonky.Client/Pages/ActivityCompanyCreate.razor.cs @@ -32,6 +32,8 @@ namespace Wonky.Client.Pages; 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 [Inject] private ILogger _logger { 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 IActivityHttpRepository _activityRepo { 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 { PropertyNameCaseInsensitive = true diff --git a/Wonky.Client/Pages/ActivityList.razor.cs b/Wonky.Client/Pages/ActivityList.razor.cs index 9f9596c7..7d6bc7a9 100644 --- a/Wonky.Client/Pages/ActivityList.razor.cs +++ b/Wonky.Client/Pages/ActivityList.razor.cs @@ -7,8 +7,8 @@ namespace Wonky.Client.Pages; public partial class ActivityList { - [Inject] public IActivityHttpRepository ActivityRepo { get; set; } - [Inject] public IHttpClientInterceptor Interceptor { get; set; } + [Inject] private IActivityHttpRepository _activityRepo { get; set; } + [Inject] private IHttpClientInterceptor _interceptor { get; set; } } \ No newline at end of file diff --git a/Wonky.Client/Pages/ActivityToday.razor.cs b/Wonky.Client/Pages/ActivityToday.razor.cs index 69326591..015d91d9 100644 --- a/Wonky.Client/Pages/ActivityToday.razor.cs +++ b/Wonky.Client/Pages/ActivityToday.razor.cs @@ -10,8 +10,8 @@ namespace Wonky.Client.Pages; public partial class ActivityToday { - [Inject] public UserPreferenceService UserPrefs { get; set; } - [Inject] public ILogger Logger { get; set; } + [Inject] private UserPreferenceService _preferenceService { get; set; } + [Inject] private ILogger _logger { get; set; } [Inject] private HttpInterceptorService _interceptor { get; set; } [Inject] private NavigationManager _navigator { get; set; } [Inject] private IActivityHttpRepository _activityRepo { get; set; } @@ -24,7 +24,7 @@ public partial class ActivityToday protected override async Task OnInitializedAsync() { - _prefs = await UserPrefs.GetPreferences(); + _prefs = await _preferenceService.GetPreferences(); if(!string.IsNullOrWhiteSpace(_prefs.WorkDate)) _workDate = _prefs.WorkDate; diff --git a/Wonky.Client/Pages/CompanyCreate.razor.cs b/Wonky.Client/Pages/CompanyCreate.razor.cs index d232b438..08826cec 100644 --- a/Wonky.Client/Pages/CompanyCreate.razor.cs +++ b/Wonky.Client/Pages/CompanyCreate.razor.cs @@ -37,13 +37,13 @@ namespace Wonky.Client.Pages { public partial class CompanyCreate : IDisposable { - [Inject] public IToastService ToastService { get; set; } - [Inject] public ILogger Logger { get; set; } - [Inject] public ILocalStorageService StorageService { 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] private IToastService _toast { get; set; } + [Inject] private ILogger _logger { get; set; } + [Inject] private ILocalStorageService _storage { get; set; } + [Inject] private NavigationManager _navigator { get; set; } + [Inject] private ICompanyHttpRepository _companyRepo { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + [Inject] private VatInfoLookupService _vatService { get; set; } private EditContext _editContext { get; set; } private CompanyDto _companyObject { get; set; } = new(); private VirkRegInfo _virkRegInfo { get; set; } = new(); @@ -63,7 +63,7 @@ namespace Wonky.Client.Pages _editContext.OnFieldChanged += HandleFieldChanged; _editContext.OnValidationStateChanged += ValidationChanged; - var ux = await StorageService.GetItemAsync("_xu"); + var ux = await _storage.GetItemAsync("_xu"); _dk = ux.CountryCode.ToLower() == "dk"; _companyObject.SalesRepId = ux.Id; @@ -75,16 +75,16 @@ namespace Wonky.Client.Pages _companyObject.LastVisit = $"{_lastVisit:yyyy-MM-dd}"; _companyObject.LastVisit = $"{_nextVisit:yyyy-MM-dd}"; - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); } private async Task GetInfoFromAddress(VatAddress address) { _showInfos = true; - ToastService.ShowInfo("Vent for adresse info ..."); - _vInfos = await VatInfoLookupService.QueryVirkRegistry( + _toast.ShowInfo("Vent for adresse info ..."); + _vInfos = await _vatService.QueryVirkRegistry( new VirkParams { StreetName = address.StreetName, @@ -93,18 +93,18 @@ namespace Wonky.Client.Pages }); if (!_vInfos.Any()) { - ToastService.ShowWarning($"Ingen data fundet ..."); + _toast.ShowWarning($"Ingen data fundet ..."); } } private async Task GetInfoFromVat(string vatNumber) { _showInfos = true; - ToastService.ShowInfo("Vent for firma info ..."); - _vInfos = await VatInfoLookupService + _toast.ShowInfo("Vent for firma info ..."); + _vInfos = await _vatService .QueryVirkRegistry(new VirkParams {VatNumber = vatNumber}); if (!_vInfos.Any()) { - ToastService.ShowError($"Firma med CVR '{vatNumber}' findes ikke."); + _toast.ShowError($"Firma med CVR '{vatNumber}' findes ikke."); } } private void SelectCompany(string vatNumber) @@ -123,16 +123,16 @@ namespace Wonky.Client.Pages } private async Task SubmitCompanyForm() { - var newId = await CompanyRepo.CreateCompany(_companyObject); + var newId = await _companyRepo.CreateCompany(_companyObject); if (!string.IsNullOrWhiteSpace(newId)) { - ToastService.ShowSuccess($"'{_companyObject.Name}' er oprettet i CRM."); - Navigation.NavigateTo($"/companies/{newId}"); + _toast.ShowSuccess($"'{_companyObject.Name}' er oprettet i CRM."); + _navigator.NavigateTo($"/companies/{newId}"); } else { - ToastService.ShowWarning($"'{_companyObject.Name}' IKKE oprettet."); + _toast.ShowWarning($"'{_companyObject.Name}' IKKE oprettet."); } } @@ -168,7 +168,7 @@ namespace Wonky.Client.Pages public void Dispose() { - Interceptor.DisposeEvent(); + _interceptor.DisposeEvent(); _editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnValidationStateChanged -= ValidationChanged; } diff --git a/Wonky.Client/Pages/CompanyList.razor b/Wonky.Client/Pages/CompanyList.razor index 46d2210b..50ddd9b3 100644 --- a/Wonky.Client/Pages/CompanyList.razor +++ b/Wonky.Client/Pages/CompanyList.razor @@ -39,7 +39,7 @@
- +
@@ -48,4 +48,4 @@
- \ No newline at end of file + \ No newline at end of file diff --git a/Wonky.Client/Pages/CompanyList.razor.cs b/Wonky.Client/Pages/CompanyList.razor.cs index 893f0770..6d3e1ab8 100644 --- a/Wonky.Client/Pages/CompanyList.razor.cs +++ b/Wonky.Client/Pages/CompanyList.razor.cs @@ -28,12 +28,12 @@ namespace Wonky.Client.Pages { public partial class CompanyList : IDisposable { - [Inject] public ILocalStorageService LocalStorage { get; set; } - [Inject] private UserPreferenceService UserPrefService { get; set; } - [Inject] public ICompanyHttpRepository CompanyRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } - public List? Companies { get; set; } = new(); - public MetaData? MetaData { get; set; } = new(); + [Inject] private ILocalStorageService _storage { get; set; } + [Inject] private UserPreferenceService _preferenceService { get; set; } + [Inject] private ICompanyHttpRepository _companyRepo { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + private List _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; } = ""; @@ -41,7 +41,7 @@ namespace Wonky.Client.Pages protected override async Task OnInitializedAsync() { // set preferences - _preferences = await UserPrefService.GetPreferences(); + _preferences = await _preferenceService.GetPreferences(); _paging.OrderBy = _preferences.CompanySort; _paging.SearchColumn = _preferences.CompanySearch; _paging.PageSize = Convert.ToInt32(_preferences.PageSize); @@ -52,29 +52,29 @@ namespace Wonky.Client.Pages if(!string.IsNullOrWhiteSpace(_savedSearch)) _paging.SearchTerm = _savedSearch; - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); // get companies await GetCompanies(); } private async Task SelectedPage(int page) { - Companies = new List(); + _companyList = new List(); _paging.PageNumber = page; await GetCompanies(); } private async Task SetSearchCol(string searchColumn) { - Companies = new List(); + _companyList = new List(); _paging.SearchColumn = searchColumn; _paging.PageNumber = 1; await GetCompanies(); } private async Task SetPageSize(string pageSize) { - Companies = new List(); + _companyList = new List(); _paging.PageSize = Convert.ToInt32(pageSize); _paging.PageNumber = 1; await GetCompanies(); @@ -83,9 +83,9 @@ namespace Wonky.Client.Pages private async Task SetSearchPhrase(string searchTerm) { if(string.IsNullOrWhiteSpace(searchTerm)) - await UserPrefService.SetCompanyFilterPhrase(""); + await _preferenceService.SetCompanyFilterPhrase(""); - Companies = new List(); + _companyList = new List(); _paging.PageNumber = 1; _paging.SearchTerm = searchTerm; await GetCompanies(); @@ -93,28 +93,28 @@ namespace Wonky.Client.Pages private async Task SetSortCol(string orderBy) { - Companies = new List(); + _companyList = new List(); _paging.OrderBy = orderBy; await GetCompanies(); } private async Task DeleteCompany(string companyId) { - Companies = new List(); - await CompanyRepo.DeleteCompany(companyId); - if (_paging.PageNumber > 1 && Companies.Count == 1) + _companyList = new List(); + await _companyRepo.DeleteCompany(companyId); + if (_paging.PageNumber > 1 && _companyList.Count == 1) _paging.PageNumber--; await GetCompanies(); } private async Task GetCompanies() { - var pagingResponse = await CompanyRepo.GetCompaniesPaged(_paging); - Companies = pagingResponse.Items; - MetaData = pagingResponse.MetaData; + var pagingResponse = await _companyRepo.GetCompaniesPaged(_paging); + _companyList = pagingResponse.Items; + _metaData = pagingResponse.MetaData; } - public void Dispose() => Interceptor.DisposeEvent(); + public void Dispose() => _interceptor.DisposeEvent(); } } diff --git a/Wonky.Client/Pages/CompanyView.razor b/Wonky.Client/Pages/CompanyView.razor index 389c7bca..3ddc1ec2 100644 --- a/Wonky.Client/Pages/CompanyView.razor +++ b/Wonky.Client/Pages/CompanyView.razor @@ -183,10 +183,10 @@
- + Historik - +
- + - + - + - +
Navn@Item.Name@_item.Name
Varenr@Item.Sku@_item.Sku
@Item.ProductGroup@_item.ProductGroup
Kort Navn@Item.ShortName@_item.ShortName
@@ -52,7 +52,7 @@ - @foreach (var rate in Item.Rates) + @foreach (var rate in _item.Rates) { @rate.Quantity diff --git a/Wonky.Client/Pages/ItemView.razor.cs b/Wonky.Client/Pages/ItemView.razor.cs index 377a60d0..a5693652 100644 --- a/Wonky.Client/Pages/ItemView.razor.cs +++ b/Wonky.Client/Pages/ItemView.razor.cs @@ -25,22 +25,17 @@ namespace Wonky.Client.Pages; 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() { - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); - Item = await SalesItemRepo.GetSalesItem(SalesItemId); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); + _item = await _itemRepo.GetSalesItem(SalesItemId); } /// @@ -48,6 +43,6 @@ public partial class ItemView : IDisposable /// public void Dispose() { - Interceptor!.DisposeEvent(); + _interceptor!.DisposeEvent(); } } \ No newline at end of file diff --git a/Wonky.Client/Pages/ProductHistoryItem.razor b/Wonky.Client/Pages/ProductHistoryItem.razor new file mode 100644 index 00000000..749045ca --- /dev/null +++ b/Wonky.Client/Pages/ProductHistoryItem.razor @@ -0,0 +1,11 @@ +@using Wonky.Client.Components +@page "/companies/{CompanyId}/h/p/{Sku}" + +
+
+

@_company.Name

+
+
+ +
+
diff --git a/Wonky.Client/Pages/ProductHistoryItem.razor.cs b/Wonky.Client/Pages/ProductHistoryItem.razor.cs new file mode 100644 index 00000000..333b0981 --- /dev/null +++ b/Wonky.Client/Pages/ProductHistoryItem.razor.cs @@ -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 _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(); + } +} \ No newline at end of file diff --git a/Wonky.Client/Pages/ProductHistoryList.razor b/Wonky.Client/Pages/ProductHistoryList.razor new file mode 100644 index 00000000..a7d30381 --- /dev/null +++ b/Wonky.Client/Pages/ProductHistoryList.razor @@ -0,0 +1,11 @@ +@using Wonky.Client.Components +@page "/companies/{CompanyId}/h/p" + +
+
+

@_company.Name

+
+
+ +
+
diff --git a/Wonky.Client/Pages/ProductHistoryList.razor.cs b/Wonky.Client/Pages/ProductHistoryList.razor.cs new file mode 100644 index 00000000..31efbd7a --- /dev/null +++ b/Wonky.Client/Pages/ProductHistoryList.razor.cs @@ -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 _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(); + } +} \ No newline at end of file diff --git a/Wonky.Client/Pages/ProductInventory.razor b/Wonky.Client/Pages/ProductInventory.razor index bf7f9d20..80efa0c5 100644 --- a/Wonky.Client/Pages/ProductInventory.razor +++ b/Wonky.Client/Pages/ProductInventory.razor @@ -1 +1,13 @@ -@page "/companies/{CompanyId}/products" +@using Wonky.Client.Components +@using Microsoft.AspNetCore.Authorization +@page "/companies/{CompanyId}/h/i" +@attribute [Authorize(Roles = "Adviser")] + +
+
+

@_company.Name

+
+
+ +
+
\ No newline at end of file diff --git a/Wonky.Client/Pages/ProductInventory.razor.cs b/Wonky.Client/Pages/ProductInventory.razor.cs index c41b3073..f138f801 100644 --- a/Wonky.Client/Pages/ProductInventory.razor.cs +++ b/Wonky.Client/Pages/ProductInventory.razor.cs @@ -1,6 +1,32 @@ +using Microsoft.AspNetCore.Components; +using Wonky.Client.HttpInterceptors; +using Wonky.Client.HttpRepository; +using Wonky.Entity.DTO; + 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 _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(); + } } \ No newline at end of file diff --git a/Wonky.Client/Pages/ReportCreate.razor.cs b/Wonky.Client/Pages/ReportCreate.razor.cs index 8f400350..ebb4e395 100644 --- a/Wonky.Client/Pages/ReportCreate.razor.cs +++ b/Wonky.Client/Pages/ReportCreate.razor.cs @@ -30,11 +30,11 @@ namespace Wonky.Client.Pages; public partial class ReportCreate : IDisposable { - [Inject] private HttpInterceptorService Interceptor { get; set; } - [Inject] private UserPreferenceService UserPrefs { get; set; } - [Inject] private IActivityHttpRepository ActivityRepo { get; set; } - [Inject] private IReportHttpRepository ReportRepo { get; set; } - [Inject] private NavigationManager Navigator { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } + [Inject] private UserPreferenceService _userPrefs { get; set; } + [Inject] private IActivityHttpRepository _activityRepo { get; set; } + [Inject] private IReportHttpRepository _reportRepo { get; set; } + [Inject] private NavigationManager _navigator { get; set; } [Inject] private ILogger _logger { get; set; } [Inject] private IToastService _toast { get; set; } private EditContext _editContext { get; set; } @@ -53,13 +53,13 @@ public partial class ReportCreate : IDisposable protected override async Task OnInitializedAsync() { - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); _editContext = new EditContext(_report); _editContext.OnFieldChanged += HandleFieldChanged; _editContext.OnValidationStateChanged += ValidationChanged; - _prefs = await UserPrefs.GetPreferences(); + _prefs = await _userPrefs.GetPreferences(); if (!string.IsNullOrWhiteSpace(_prefs.WorkDate)) _workDate = DateTime.Parse(_prefs.WorkDate); _leaveBegin = _workDate; @@ -116,10 +116,10 @@ public partial class ReportCreate : IDisposable _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}"); - Navigator.NavigateTo("/home"); + _navigator.NavigateTo("/home"); } private void OnTimeChanged() @@ -150,9 +150,9 @@ public partial class ReportCreate : IDisposable private async Task GetKeyFigures() { _working = true; - var data = await ReportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}"); + var data = await _reportRepo.InitializeReportData($"{_workDate:yyyy-MM-dd}"); if(data.Closed) - Navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}"); + _navigator.NavigateTo($"/sales-reports/view/{_workDate:yyyy-MM-dd}"); _noFigures = false; _report.Figures = data.Figures; _init = data.Figures; @@ -162,7 +162,7 @@ public partial class ReportCreate : IDisposable public void Dispose() { - Interceptor.DisposeEvent(); + _interceptor.DisposeEvent(); _editContext.OnFieldChanged -= HandleFieldChanged; _editContext.OnValidationStateChanged -= ValidationChanged; } diff --git a/Wonky.Client/Pages/ReportView.razor.cs b/Wonky.Client/Pages/ReportView.razor.cs index 75c3b730..a79ea3c1 100644 --- a/Wonky.Client/Pages/ReportView.razor.cs +++ b/Wonky.Client/Pages/ReportView.razor.cs @@ -7,8 +7,8 @@ namespace Wonky.Client.Pages; public partial class ReportView { - [Inject] private IReportHttpRepository ReportRepo { get; set; } [Parameter] public string ReportDate { get; set; } + [Inject] private IReportHttpRepository _reportRepo { get; set; } private NgSalesReportView _report { get; set; } = new(); protected override async Task OnInitializedAsync() @@ -22,6 +22,6 @@ public partial class ReportView private async Task GetReport(string workDate) { _report = new NgSalesReportView(); - _report = await ReportRepo.GetReport(workDate); + _report = await _reportRepo.GetReport(workDate); } } \ No newline at end of file diff --git a/Wonky.Client/Pages/SalesReportList.razor.cs b/Wonky.Client/Pages/SalesReportList.razor.cs index 39b63096..676859fb 100644 --- a/Wonky.Client/Pages/SalesReportList.razor.cs +++ b/Wonky.Client/Pages/SalesReportList.razor.cs @@ -8,21 +8,21 @@ namespace Wonky.Client.Pages; public partial class SalesReportList : IDisposable { - [Inject] public IReportHttpRepository ReportRepo { get; set; } - [Inject] public HttpInterceptorService Interceptor { get; set; } + [Inject] private IReportHttpRepository _reportRepo { get; set; } + [Inject] private HttpInterceptorService _interceptor { get; set; } private List _reports { get; set; } protected override async Task OnInitializedAsync() { - Interceptor.RegisterEvent(); - Interceptor.RegisterBeforeSendEvent(); + _interceptor.RegisterEvent(); + _interceptor.RegisterBeforeSendEvent(); - _reports = await ReportRepo.GetReports(); + _reports = await _reportRepo.GetReports(); } public void Dispose() { - Interceptor.DisposeEvent(); + _interceptor.DisposeEvent(); } } \ No newline at end of file diff --git a/Wonky.Client/Pages/TaskItemList.razor.cs b/Wonky.Client/Pages/TaskItemList.razor.cs index f275d88e..79871f21 100644 --- a/Wonky.Client/Pages/TaskItemList.razor.cs +++ b/Wonky.Client/Pages/TaskItemList.razor.cs @@ -8,7 +8,7 @@ using Wonky.Entity.Views; namespace Wonky.Client.Pages; -public partial class TaskItemList +public partial class TaskItemList : IDisposable { [Inject] public UserPreferenceService UserPrefs { get; set; } [Inject] public ILogger Logger { get; set; } @@ -36,5 +36,9 @@ public partial class TaskItemList _toast.ShowInfo("Vent nogle sekunder for data"); _workDate = workDate; } - + public void Dispose() + { + _interceptor.DisposeEvent(); + } + } \ No newline at end of file diff --git a/Wonky.Client/Pages/TaskItemView.razor.cs b/Wonky.Client/Pages/TaskItemView.razor.cs index f95f26ab..f853441e 100644 --- a/Wonky.Client/Pages/TaskItemView.razor.cs +++ b/Wonky.Client/Pages/TaskItemView.razor.cs @@ -1,9 +1,11 @@ using Microsoft.AspNetCore.Components; +using Wonky.Client.HttpInterceptors; 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; } @@ -11,4 +13,10 @@ public partial class TaskItemView { return base.OnParametersSetAsync(); } + + public void Dispose() + { + _interceptor.DisposeEvent(); + } + } \ No newline at end of file diff --git a/Wonky.Client/Program.cs b/Wonky.Client/Program.cs index ef2a1f09..4ca7aac3 100644 --- a/Wonky.Client/Program.cs +++ b/Wonky.Client/Program.cs @@ -53,6 +53,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddBlazoredLocalStorage(); diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 7345da22..d9a978c4 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -18,7 +18,7 @@ }, "appInfo": { "name": "Wonky Client", - "version": "0.8.21", + "version": "0.8.22", "isBeta": true, "image": "grumpy-coder.png" }, @@ -36,6 +36,8 @@ "activityEndpoint": "api/v2/crm/salesReps/sales", "reportEndpoint": "api/v2/crm/salesReps/reports", "taskItemEndpoint": "api/v2/crm/salesRps/tasks", - "historyEndpoint": "products" + "inventoryUri": "h/i", + "productUri": "h/p", + "updateUri": "h/u" } } \ No newline at end of file diff --git a/Wonky.Entity/Configuration/ApiConfig.cs b/Wonky.Entity/Configuration/ApiConfig.cs index 4dbdfe1c..f29580af 100644 --- a/Wonky.Entity/Configuration/ApiConfig.cs +++ b/Wonky.Entity/Configuration/ApiConfig.cs @@ -33,5 +33,7 @@ public class ApiConfig public string ActivityEndpoint { get; set; } = ""; public string ReportEndpoint { 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; } = ""; } \ No newline at end of file diff --git a/Wonky.Entity/DTO/CompanyDto.cs b/Wonky.Entity/DTO/CompanyDto.cs index c82b32db..b872ffb8 100644 --- a/Wonky.Entity/DTO/CompanyDto.cs +++ b/Wonky.Entity/DTO/CompanyDto.cs @@ -78,6 +78,7 @@ public class CompanyDto public int ValidVat { get; set; } public int UpdateErpVat { get; set; } + public string HistorySync { get; set; } public virtual bool ValidDateSpan() { diff --git a/Wonky.Entity/DTO/ProductHistoryView.cs b/Wonky.Entity/DTO/ProductHistoryView.cs index 4a1619ca..61272f9e 100644 --- a/Wonky.Entity/DTO/ProductHistoryView.cs +++ b/Wonky.Entity/DTO/ProductHistoryView.cs @@ -3,7 +3,7 @@ namespace Wonky.Entity.DTO; public class ProductHistoryView { public string DeliverDate { get; set; } = ""; - public string Name { get; set; } = ""; + public string Description { get; set; } = ""; public string Sku { get; set; } = ""; public int Quantity { get; set; } public decimal Price { get; set; } diff --git a/Wonky.Entity/DTO/ProductInventoryView.cs b/Wonky.Entity/DTO/ProductInventoryView.cs index 63d41ee4..e203b2e4 100644 --- a/Wonky.Entity/DTO/ProductInventoryView.cs +++ b/Wonky.Entity/DTO/ProductInventoryView.cs @@ -1,8 +1,10 @@ +using System.Text.Json.Serialization; + namespace Wonky.Entity.DTO; public class ProductInventoryView { - public string Name { get; set; } = ""; + public string Description { get; set; } = ""; public string Sku { get; set; } = ""; public int Quantity { get; set; } } \ No newline at end of file