diff --git a/Wonky.Client/App.razor b/Wonky.Client/App.razor index f0a0d3a0..d57f60f3 100644 --- a/Wonky.Client/App.razor +++ b/Wonky.Client/App.razor @@ -15,7 +15,7 @@ // *@ - + @@ -31,6 +31,6 @@ - + diff --git a/Wonky.Client/Components/AppSpinner.razor b/Wonky.Client/Components/AppSpinner.razor index aea463fa..a7d89835 100644 --- a/Wonky.Client/Components/AppSpinner.razor +++ b/Wonky.Client/Components/AppSpinner.razor @@ -1,3 +1,3 @@
- Afventer svar fra service ...Afventer svar fra service ... + Afventer netværk svar ...Afventer netværk svar ...
diff --git a/Wonky.Client/Components/CompanySearchColumn.razor.cs b/Wonky.Client/Components/CompanySearchColumn.razor.cs index 1e72b9fc..5df81664 100644 --- a/Wonky.Client/Components/CompanySearchColumn.razor.cs +++ b/Wonky.Client/Components/CompanySearchColumn.razor.cs @@ -22,11 +22,11 @@ namespace Wonky.Client.Components; public partial class CompanySearchColumn { [Parameter] - public EventCallback OnFilterChanged { get; set; } + public EventCallback OnColumnChanged { get; set; } private string SearchColumn { get; set; } = "name"; private async Task ApplyFilter(ChangeEventArgs eventArgs) { - await OnFilterChanged.InvokeAsync(SearchColumn); + await OnColumnChanged.InvokeAsync(SearchColumn); } } \ No newline at end of file diff --git a/Wonky.Client/Components/CompanyTable.razor b/Wonky.Client/Components/CompanyTable.razor index f8a56944..524f33bc 100644 --- a/Wonky.Client/Components/CompanyTable.razor +++ b/Wonky.Client/Components/CompanyTable.razor @@ -26,44 +26,9 @@
@company.Name
@company.Account
@company.City
-
+ } - @* - - - - - - - - - - - - @foreach (var company in Companies) - { - - - - - - - - } - -
StatusNavnKontoBynavn
- - - @company.Name - - @company.Account - - @company.City - - -
-*@ } else { diff --git a/Wonky.Client/Components/CompanyTable.razor.cs b/Wonky.Client/Components/CompanyTable.razor.cs index 04cc64fa..a7abc653 100644 --- a/Wonky.Client/Components/CompanyTable.razor.cs +++ b/Wonky.Client/Components/CompanyTable.razor.cs @@ -25,20 +25,21 @@ namespace Wonky.Client.Components { [Parameter] public List Companies { get; set; } = new(); [Parameter] public EventCallback OnDelete { get; set; } - + [Parameter] public EventCallback OnSelect { get; set; } + private Confirmation _confirmation = new (); - private string _companyIdToDelete = string.Empty; + private string _companyId = string.Empty; private void CallConfirmationModal(string companyId) { - _companyIdToDelete = companyId; + _companyId = companyId; _confirmation.Show(); } - private async Task DeleteProduct() + private async Task DeleteCompany() { _confirmation.Hide(); - await OnDelete.InvokeAsync(_companyIdToDelete); + await OnDelete.InvokeAsync(_companyId); } } } diff --git a/Wonky.Client/Pages/CompanyList.razor b/Wonky.Client/Pages/CompanyList.razor index e2034697..1c689c1d 100644 --- a/Wonky.Client/Pages/CompanyList.razor +++ b/Wonky.Client/Pages/CompanyList.razor @@ -23,7 +23,7 @@
- +
diff --git a/Wonky.Client/Pages/CompanyView.razor b/Wonky.Client/Pages/CompanyView.razor index 701eba5e..f967aa10 100644 --- a/Wonky.Client/Pages/CompanyView.razor +++ b/Wonky.Client/Pages/CompanyView.razor @@ -22,27 +22,8 @@ @attribute [Authorize(Roles = "Adviser")]
-
-
-
- -
-
- @CompanyDto.Name -
-
-
-
-
- -
-
+
@CompanyDto.Name
@@ -78,8 +59,8 @@ - - + +
@CompanyDto.Interval@($"{CompanyDto.LastVisitDate:dd-MM-yyyy}")@($"{CompanyDto.NextVisitDate:dd-MM-yyyy}")@($"{CompanyDto.LastVisitDate:yy-MM-dd}")@($"{CompanyDto.NextVisitDate:yy-MM-dd}")
diff --git a/Wonky.Client/Pages/DraftDocument.razor b/Wonky.Client/Pages/DraftDocument.razor new file mode 100644 index 00000000..255512b6 --- /dev/null +++ b/Wonky.Client/Pages/DraftDocument.razor @@ -0,0 +1,152 @@ +@using Wonky.Client.Components +@using System.Net.Http.Headers +@page "/OrdreKladde" + +@* display product filter options *@ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+@if (SalesItems.Any()) +{ + // display filtered product list + + + + + + + + + + + @foreach (var item in SalesItems) + { + + + + + + + } + +
NavnVarenrStk / Pris
@item.Name@item.Sku
    + @foreach (var rate in item.Rates) + { +
  • +
    @rate.Quantity
    +
    @rate.Rate
    +
  • + } +
+} +else +{ + +} +@* Display draft line *@ +@if (_selectedItem != null && ShowItem) +{ +
+
Kladdelinje
+
+
+
+ Varenavn +
+
+ Varenr +
+
+ Antal +
+
+ Pris +
+
+ +
+
+
+
+ @_selectedItem.Name +
+
+ @_selectedItem.Sku +
+
+ +
+
+ +
+
+ +
+
+
+
+} + +@* Display draft lines *@ +@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0) +{ +
+
Ordrekladde (udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds)s inaktivitet)
+
+ + + + + + + + + + + + + @foreach (var cItem in DraftStateProvider.Draft.Items) + { + + + + + + + + + } + + + + + + + + + +
NavnVarenrAntalEnhedsprisLinjesum 
@cItem.Item.Name@cItem.Item.Sku@cItem.Quantity@cItem.Price@cItem.Total
Total@DraftStateProvider.Draft.Total
+
+ +
+} diff --git a/Wonky.Client/Pages/OrderDraft.razor.cs b/Wonky.Client/Pages/DraftDocument.razor.cs similarity index 71% rename from Wonky.Client/Pages/OrderDraft.razor.cs rename to Wonky.Client/Pages/DraftDocument.razor.cs index 6210700c..d2d38384 100644 --- a/Wonky.Client/Pages/OrderDraft.razor.cs +++ b/Wonky.Client/Pages/DraftDocument.razor.cs @@ -8,18 +8,21 @@ using Wonky.Entity.Requests; namespace Wonky.Client.Pages; -public partial class OrderDraft : IDisposable +public partial class DraftDocument : IDisposable { - [CascadingParameter] CartStateProvider CartStateProvider { get; set; } + [CascadingParameter] DraftStateProvider DraftStateProvider { get; set; } private bool ShowItem; + private bool ShowSearchView; private string Quantity = "1"; private string Price = "0"; private SalesItemDto _selectedItem { get; set; } = new(); private List SalesItems { get; set; } = new(); - private SalesItemDto SelectedItem { get; set; } = new(); + private List CompanyList { get; set; } = new(); + // private SalesItemDto SelectedItem { get; set; } = new(); private MetaData _meta { get; set; } = new(); private PagingParams _paging { get; set; } = new(); [Inject] private ISalesItemHttpRepository ItemRepo { get; set; } + [Inject] private ICompanyHttpRepository CompanyRepo { get; set; } [Inject] private HttpInterceptorService Interceptor { get; set; } protected override async Task OnInitializedAsync() @@ -34,8 +37,13 @@ public partial class OrderDraft : IDisposable SalesItems = response.Items!; _meta = response.MetaData; } - - private void ItemSelect(string itemId) + + private async Task DeleteDraft() + { + await DraftStateProvider.DeleteDraftAsync(); + } + + private void SelectItem(string itemId) { ShowItem = true; _selectedItem = (from x in SalesItems where x.ItemId == itemId select x).First(); @@ -43,11 +51,11 @@ public partial class OrderDraft : IDisposable Quantity = "1"; } - private async Task AddToCart(SalesItemDto salesItem) + private async Task AddItem(SalesItemDto salesItem) { ShowItem = false; // create a new cart item - var item = new CartItem + var item = new DraftItem { Item = salesItem, Quantity = Convert.ToInt32(Quantity), @@ -55,22 +63,18 @@ public partial class OrderDraft : IDisposable }; // add it to the cart - CartStateProvider.ShoppingCart.Items.Add(item); - - // reset variables - _selectedItem = new(); - Quantity = "1"; - Price = "0"; + DraftStateProvider.Draft.Items.Add(item); // save the item using the CartStateProvider's save method - await CartStateProvider.SaveChangesAsync(); + await DraftStateProvider.SaveChangesAsync(); } - private async Task RemoveItem(CartItem item) + private async Task RemoveItem(DraftItem item) { - // click on remove - CartStateProvider.ShoppingCart.Items.Remove(item); - // save the cart - await CartStateProvider.SaveChangesAsync(); + // remove item + DraftStateProvider.Draft.Items.Remove(item); + + // save the remaining draft + await DraftStateProvider.SaveChangesAsync(); } private async Task GroupFilterChanged(string groupFilter) { diff --git a/Wonky.Client/Pages/OrderDraft.razor b/Wonky.Client/Pages/OrderDraft.razor deleted file mode 100644 index 5711d86b..00000000 --- a/Wonky.Client/Pages/OrderDraft.razor +++ /dev/null @@ -1,159 +0,0 @@ -@using Wonky.Client.Components -@using System.ComponentModel.DataAnnotations - -@page "/OrdreKladde" -
-
- -
-
- -
-
- -
-
- -
-
-@if (SalesItems.Any()) -{ - - - - - - - - - - - @foreach (var item in SalesItems) - { - - - - - - - } - -
NavnVarenrStk / Pris
- @item.Name - - @item.Sku - -
    - @foreach (var rate in item.Rates) - { -
  • -
    @rate.Quantity
    -
    @rate.Rate
    -
  • - } -
-
- -
-} -else -{ - -} -@if (_selectedItem != null && ShowItem) -{ -
-
Kladdelinje
-
-
-
- Varenavn -
-
- Varenr -
-
- Antal -
-
- Pris -
-
- -
-
-
-
- @_selectedItem.Name -
-
- @_selectedItem.Sku -
-
- -
-
- -
-
- -
-
-
-
-} - -@* Show the cart contents if there are items in it. *@ -@if (CartStateProvider != null && CartStateProvider.ShoppingCart.Items.Count > 0) -{ -
-
Ordrekladde
-
- - - - - - - - - - - - - @foreach (var cItem in CartStateProvider.ShoppingCart.Items) - { - - - - - - - - - } - - - - - - - - - -
NavnVarenrAntalEnhedsprisLinjesum 
- @cItem.Item.Name - - @cItem.Item.Sku - - @cItem.Quantity - - @cItem.Price - - @cItem.Total - - -
Total@CartStateProvider.ShoppingCart.Total
-
-
-} \ No newline at end of file diff --git a/Wonky.Client/Shared/CartStateProvider.razor b/Wonky.Client/Shared/DraftStateProvider.razor similarity index 100% rename from Wonky.Client/Shared/CartStateProvider.razor rename to Wonky.Client/Shared/DraftStateProvider.razor diff --git a/Wonky.Client/Shared/CartStateProvider.razor.cs b/Wonky.Client/Shared/DraftStateProvider.razor.cs similarity index 71% rename from Wonky.Client/Shared/CartStateProvider.razor.cs rename to Wonky.Client/Shared/DraftStateProvider.razor.cs index 1ef4fbc1..b3fd0d95 100644 --- a/Wonky.Client/Shared/CartStateProvider.razor.cs +++ b/Wonky.Client/Shared/DraftStateProvider.razor.cs @@ -21,10 +21,10 @@ using Wonky.Entity.Models; namespace Wonky.Client.Shared; -public partial class CartStateProvider +public partial class DraftStateProvider { [Parameter] public RenderFragment ChildContent { get; set; } - public Cart ShoppingCart { get; set; } + public Draft Draft { get; set; } [Parameter] public string Account { get; set; } = "MyCart"; [Inject] public ILocalStorageService LocalStorageService { get; set; } @@ -32,26 +32,30 @@ public partial class CartStateProvider protected override async Task OnParametersSetAsync() { - ShoppingCart = await LocalStorageService.GetItemAsync(Account); + Draft = await LocalStorageService.GetItemAsync(Account); - if (ShoppingCart == null || ShoppingCart.Items.Count == 0) + if (Draft == null || Draft.Items.Count == 0) { - ShoppingCart = new Cart(); + Draft = new Draft(); } else { - if (DateTime.Now > ShoppingCart.LastAccessed.AddSeconds(ShoppingCart.TimeToLiveInSeconds)) + if (DateTime.Now > Draft.LastAccessed.AddSeconds(Draft.TimeToLiveInSeconds)) { - ShoppingCart = new Cart(); + Draft = new Draft(); } } - - ShoppingCart.LastAccessed = DateTime.Now; + Draft.LastAccessed = DateTime.Now; _hasLoaded = true; } public async Task SaveChangesAsync() { - await LocalStorageService.SetItemAsync(Account, ShoppingCart); + await LocalStorageService.SetItemAsync(Account, Draft); + } + + public async Task DeleteDraftAsync() + { + await LocalStorageService.RemoveItemAsync(Account); } } \ No newline at end of file diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json deleted file mode 100644 index 9af3a118..00000000 --- a/Wonky.Client/wwwroot/appsettings.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Debug", - "Microsoft": "Information" - } - }, - "apiConfig": { - "baseAddress": "https://api.innotec.dk", - "tokenPath": "token", - "userInfo": "api/auth/userinfo", - "crmCompanies": "api/v2/crm/companies", - "priceCatalog": "api/v2/crm/catalog", - "cvrLookup": "/api/v2/services/virk", - "krvProducts": "api/v2/admin/q/products", - "krvVariants": "api/v2/admin/q/variants", - "imageUpload": "api/v2/admin/upload2", - "userRegistration": "api/auth/register" - } -} \ No newline at end of file diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json new file mode 120000 index 00000000..e0b50690 --- /dev/null +++ b/Wonky.Client/wwwroot/appsettings.json @@ -0,0 +1 @@ +../../../appsettings.json \ No newline at end of file diff --git a/Wonky.Client/wwwroot/css/app.css b/Wonky.Client/wwwroot/css/app.css index 3848a5f4..bef512fe 100644 --- a/Wonky.Client/wwwroot/css/app.css +++ b/Wonky.Client/wwwroot/css/app.css @@ -1,7 +1,10 @@ @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); +.draft-expires-msg { + font-size: 0.8em; +} .spinner { - height: 32px; + height: 48px; } html, body { diff --git a/Wonky.Entity/DTO/CompanyDto.cs b/Wonky.Entity/DTO/CompanyDto.cs index 4eef8ff3..03e5066c 100644 --- a/Wonky.Entity/DTO/CompanyDto.cs +++ b/Wonky.Entity/DTO/CompanyDto.cs @@ -25,9 +25,9 @@ public class CompanyDto [Required(ErrorMessage = "Postnummer skal udfyldes")] public string ZipCode { get; set; } = ""; [Required(ErrorMessage = "Bynavn skal udfyldes")] public string City { get; set; } = ""; [Required(ErrorMessage = "CVR nummer skal udfyldes")] public string VatNumber { get; set; } = ""; - public string CompanyId { get; set; } = ""; public string SalesRepId { get; set; } = ""; + public string BcId { get; set; } = ""; public string Address1 { get; set; } = ""; public string Address2 { get; set; } = ""; public string Account { get; set; } = ""; @@ -35,7 +35,7 @@ public class CompanyDto public string Mobile { get; set; } = ""; public string Email { get; set; } = ""; public string Attention { get; set; } = ""; - [JsonPropertyName("LastVisitTimestamp")] public DateTime LastVisitDate { get; set; } - [JsonPropertyName("NextVisitTimestamp")] public DateTime NextVisitDate { get; set; } + public string LastVisitDate { get; set; } = ""; + public string NextVisitDate { get; set; } = ""; public int Interval { get; set; } = 12; } \ No newline at end of file diff --git a/Wonky.Entity/Models/Cart.cs b/Wonky.Entity/Models/Draft.cs similarity index 79% rename from Wonky.Entity/Models/Cart.cs rename to Wonky.Entity/Models/Draft.cs index 2a3b2737..278aca5c 100644 --- a/Wonky.Entity/Models/Cart.cs +++ b/Wonky.Entity/Models/Draft.cs @@ -2,7 +2,7 @@ using Wonky.Entity.DTO; namespace Wonky.Entity.Models; -public class CartItem +public class DraftItem { public int Quantity { get; set; } public SalesItemDto Item { get; set; } @@ -21,9 +21,9 @@ public class CartItem } } -public class Cart +public class Draft { - public List Items { get; set; } = new List(); + public List Items { get; set; } = new List(); public decimal Total { @@ -33,5 +33,5 @@ public class Cart } } public DateTime LastAccessed { get; set; } - public int TimeToLiveInSeconds { get; set; } = 60; // default + public int TimeToLiveInSeconds { get; set; } = 300; // default } \ No newline at end of file