From 9ed0aad0d591d0aab1ffea858bc834f3ca8b7f72 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Fri, 13 Oct 2023 16:51:29 +0200 Subject: [PATCH] OrderView update process state to printed when printed --- .../Components/OfficeLandingComponent.razor | 11 +++- .../IOfficeOpenOrdersRepository.cs | 9 ++++ .../HttpRepository/IOrderProcessRepository.cs | 16 +++--- .../OfficeOpenOrdersRepository.cs | 52 +++++++++++++++++++ .../HttpRepository/OrderProcessRepository.cs | 26 +++++----- .../Pages/CommonReportPrintOrderPage.razor | 2 +- .../Pages/CommonReportPrintOrderPage.razor.cs | 2 +- .../OfficeAdvisorReportViewPage.razor.cs | 2 +- .../Pages/OfficeOpenOrderListPage.razor | 41 +++++++++++++++ .../Pages/OfficeOpenOrderListPage.razor.cs | 41 +++++++++++++++ Wonky.Client/Pages/OfficeOrderViewPage.razor | 2 +- .../Pages/OfficeOrderViewPage.razor.cs | 31 +++++++++-- Wonky.Client/Program.cs | 1 + Wonky.Client/Wonky.Client.csproj | 16 +++--- Wonky.Client/wwwroot/appsettings.json | 7 +-- Wonky.Entity/Configuration/ApiConfig.cs | 6 ++- Wonky.Entity/Views/OpenOrderListView.cs | 11 ++++ 17 files changed, 235 insertions(+), 41 deletions(-) create mode 100644 Wonky.Client/HttpRepository/IOfficeOpenOrdersRepository.cs create mode 100644 Wonky.Client/HttpRepository/OfficeOpenOrdersRepository.cs create mode 100644 Wonky.Client/Pages/OfficeOpenOrderListPage.razor create mode 100644 Wonky.Client/Pages/OfficeOpenOrderListPage.razor.cs create mode 100644 Wonky.Entity/Views/OpenOrderListView.cs diff --git a/Wonky.Client/Components/OfficeLandingComponent.razor b/Wonky.Client/Components/OfficeLandingComponent.razor index 0bdb3c38..80490c94 100644 --- a/Wonky.Client/Components/OfficeLandingComponent.razor +++ b/Wonky.Client/Components/OfficeLandingComponent.razor @@ -27,6 +27,9 @@ Sælger Liste + + Åbne ordrer + Telefon Bestilling @@ -48,6 +51,9 @@ Sælger Liste + + Åbne ordrer + Telefon Bestilling @@ -66,9 +72,12 @@
- Sælger Liste + Sælger Liste + + Åbne ordrer + Telefon Bestilling diff --git a/Wonky.Client/HttpRepository/IOfficeOpenOrdersRepository.cs b/Wonky.Client/HttpRepository/IOfficeOpenOrdersRepository.cs new file mode 100644 index 00000000..6172147b --- /dev/null +++ b/Wonky.Client/HttpRepository/IOfficeOpenOrdersRepository.cs @@ -0,0 +1,9 @@ +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public interface IOfficeOpenOrdersRepository +{ + Task> GetOpenOrders(); + Task> GetOpenOrders(string countryCode); +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/IOrderProcessRepository.cs b/Wonky.Client/HttpRepository/IOrderProcessRepository.cs index 0b0e564e..676ccb4a 100644 --- a/Wonky.Client/HttpRepository/IOrderProcessRepository.cs +++ b/Wonky.Client/HttpRepository/IOrderProcessRepository.cs @@ -28,27 +28,27 @@ public interface IOrderProcessRepository /// /// /// - Task> GetWarehouseOrderListByDate(string date); + Task> GetOrderListByDate(string date); /// - /// Get orders by status + /// Get orders by state /// - /// + /// /// /// - Task> GetWarehouseOrderListByStatus(string status, string express = ""); + Task> GetOrderListByStatus(string state, string express = ""); /// /// Get order with orderId /// /// /// - Task GetWarehouseOrder(string orderId); + Task GetOrderById(string orderId); /// - /// Update Order status setting new process status + /// Update Order state setting new process state /// - /// + /// /// - Task UpdateWarehouseOrderStatus(OrderProcessState processState); + Task UpdateOrderStatus(OrderProcessState orderState); } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/OfficeOpenOrdersRepository.cs b/Wonky.Client/HttpRepository/OfficeOpenOrdersRepository.cs new file mode 100644 index 00000000..d5485d3a --- /dev/null +++ b/Wonky.Client/HttpRepository/OfficeOpenOrdersRepository.cs @@ -0,0 +1,52 @@ +using System.Net.Http.Json; +using System.Text.Json; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; +using Wonky.Entity.Configuration; +using Wonky.Entity.DTO; +using Wonky.Entity.Views; + +namespace Wonky.Client.HttpRepository; + +public class OfficeOpenOrdersRepository : IOfficeOpenOrdersRepository +{ + private readonly JsonSerializerOptions? _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + + private readonly NavigationManager _navigation; + private readonly ILogger _logger; + private readonly HttpClient _client; + private readonly ApiConfig _api; + + public OfficeOpenOrdersRepository(HttpClient client, + ILogger logger, + NavigationManager navigation, + IOptions configuration) + { + _client = client; + _logger = logger; + _navigation = navigation; + _api = configuration.Value; + } + + public async Task> GetOpenOrders() + { + var result = await _client + .GetFromJsonAsync>( + $"{_api.OfficeSales}", _options); + + return result ?? new List(); + + } + + public async Task> GetOpenOrders(string countryCode) + { + var result = await _client + .GetFromJsonAsync>( + $"{_api.OfficeSales}/country/{countryCode}", _options); + + return result ?? new List(); + } +} \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/OrderProcessRepository.cs b/Wonky.Client/HttpRepository/OrderProcessRepository.cs index c285b5c1..0b8f0db8 100644 --- a/Wonky.Client/HttpRepository/OrderProcessRepository.cs +++ b/Wonky.Client/HttpRepository/OrderProcessRepository.cs @@ -52,22 +52,22 @@ public class OrderProcessRepository : IOrderProcessRepository /// /// /// - public async Task> GetWarehouseOrderListByDate(string date) + public async Task> GetOrderListByDate(string date) { - var result = await _client.GetFromJsonAsync>($"{_api.Warehouse}/date?date={date}", _options); + var result = await _client.GetFromJsonAsync>($"{_api.OrderProcess}/date?date={date}", _options); return result ?? new List(); } /// - /// Get orders by status + /// Get orders by state /// - /// + /// /// /// - public async Task> GetWarehouseOrderListByStatus(string status, string express = "") + public async Task> GetOrderListByStatus(string state, string express = "") { var result = await _client.GetFromJsonAsync>( - $"{_api.Warehouse}/state?status={status}&express={express}", _options); + $"{_api.OrderProcess}/state?status={state}&express={express}", _options); return result ?? new List(); } @@ -76,20 +76,20 @@ public class OrderProcessRepository : IOrderProcessRepository /// /// /// - public async Task GetWarehouseOrder(string orderId) + public async Task GetOrderById(string orderId) { - var result = await _client.GetFromJsonAsync($"{_api.Warehouse}/{orderId}", _options); + var result = await _client.GetFromJsonAsync($"{_api.OrderProcess}/{orderId}", _options); return result ?? new WarehouseOrderView(); } /// - /// Update Order status setting new process status + /// Update Order state setting new process state /// - /// + /// /// - public async Task UpdateWarehouseOrderStatus(OrderProcessState processState) + public async Task UpdateOrderStatus(OrderProcessState orderState) { - _logger.LogDebug("process => {}", JsonSerializer.Serialize(processState, _options)); - await _client.PutAsJsonAsync($"{_api.Warehouse}/{processState.OrderId}", processState, _options); + _logger.LogDebug("process => {}", JsonSerializer.Serialize(orderState, _options)); + await _client.PutAsJsonAsync($"{_api.OrderProcess}/{orderState.OrderId}", orderState, _options); } } \ No newline at end of file diff --git a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor index 3be5b70c..6ce5c5a2 100644 --- a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor +++ b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor @@ -28,7 +28,7 @@ - +
diff --git a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs index da83055d..b5c00185 100644 --- a/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs +++ b/Wonky.Client/Pages/CommonReportPrintOrderPage.razor.cs @@ -72,7 +72,7 @@ public partial class CommonReportPrintOrderPage foreach (var item in orders) { Toaster.ShowInfo($"Behandler {current++} af {count} ordrer. Vent venligst"); - await ProcessRepo.UpdateWarehouseOrderStatus(new OrderProcessState + await ProcessRepo.UpdateOrderStatus(new OrderProcessState { OrderId = item.ActivityId, ProcessStatusEnum = Utils.EnumToString(ProcessStatus.Printed) diff --git a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs index 460f996d..0bd628f1 100644 --- a/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs +++ b/Wonky.Client/Pages/OfficeAdvisorReportViewPage.razor.cs @@ -113,7 +113,7 @@ public partial class OfficeAdvisorReportViewPage : IDisposable { Toaster.ClearInfoToasts(); Toaster.ShowInfo($"Behandler {current++} af {count} ordrer. Vent venligst"); - await ProcessRepo.UpdateWarehouseOrderStatus(new OrderProcessState + await ProcessRepo.UpdateOrderStatus(new OrderProcessState { OrderId = item.ActivityId, ProcessStatusEnum = Utils.EnumToString(ProcessStatus.Printed) diff --git a/Wonky.Client/Pages/OfficeOpenOrderListPage.razor b/Wonky.Client/Pages/OfficeOpenOrderListPage.razor new file mode 100644 index 00000000..9a8d0901 --- /dev/null +++ b/Wonky.Client/Pages/OfficeOpenOrderListPage.razor @@ -0,0 +1,41 @@ + +@using Microsoft.AspNetCore.Authorization +@using Wonky.Client.Components + +@attribute [Authorize(Roles = "Admin,Office,Supervisor,Warehouse")] +@page "/sales/orderlist/{CountryCode}" + +Åbne ordrer @CountryCode +@if (OrderLIst.Any()) +{ +
+
+
+
Navn
+
Konto
+
Dato
+
+
+
+ @foreach (var order in OrderLIst) + { + +
+
@order.CompanyName
+
@order.Account
+
@order.OrderDate
+
@order.SalesRep
+
+
+ } +
+} +else +{ + Afventer svar fra service ... Vent venligst. +} + +@if (Working) +{ + +} \ No newline at end of file diff --git a/Wonky.Client/Pages/OfficeOpenOrderListPage.razor.cs b/Wonky.Client/Pages/OfficeOpenOrderListPage.razor.cs new file mode 100644 index 00000000..19e41e45 --- /dev/null +++ b/Wonky.Client/Pages/OfficeOpenOrderListPage.razor.cs @@ -0,0 +1,41 @@ + +using Microsoft.AspNetCore.Components; +using Wonky.Client.HttpInterceptors; +using Wonky.Client.HttpRepository; +using Wonky.Entity.Views; + +#pragma warning disable CS8618 + +namespace Wonky.Client.Pages; + +public partial class OfficeOpenOrderListPage : IDisposable +{ + // ############################################################# + [Inject] public ILogger Logger { get; set; } + [Inject] public IOfficeOpenOrdersRepository OpenOrdersRepo { get; set; } + [Inject] public HttpInterceptorService Interceptor { get; set; } + [Inject] public NavigationManager Navigator { get; set; } + + // ############################################################# + [Parameter] public string CountryCode { get; set; } = ""; + + // ############################################################# + private bool Working { get; set; } = true; + private List OrderLIst { get; set; } = new(); + + protected override async Task OnParametersSetAsync() + { + Interceptor.RegisterEvent(); + Interceptor.RegisterBeforeSendEvent(); + Logger.LogInformation("---- CountryCode is '{}'", CountryCode); + OrderLIst = await OpenOrdersRepo.GetOpenOrders(CountryCode); + + Working = false; + } + + public void Dispose() + { + Interceptor.DisposeEvent(); + } + +} \ No newline at end of file diff --git a/Wonky.Client/Pages/OfficeOrderViewPage.razor b/Wonky.Client/Pages/OfficeOrderViewPage.razor index 58fd8982..bd96137d 100644 --- a/Wonky.Client/Pages/OfficeOrderViewPage.razor +++ b/Wonky.Client/Pages/OfficeOrderViewPage.razor @@ -28,7 +28,7 @@
- +
@if (ReportItem is { Express: true, ProcessStatusEnum: "None" }) { diff --git a/Wonky.Client/Pages/OfficeOrderViewPage.razor.cs b/Wonky.Client/Pages/OfficeOrderViewPage.razor.cs index 83765895..89119866 100644 --- a/Wonky.Client/Pages/OfficeOrderViewPage.razor.cs +++ b/Wonky.Client/Pages/OfficeOrderViewPage.razor.cs @@ -19,6 +19,9 @@ using System.Text.Json; using Blazored.LocalStorage; using Blazored.Toast.Services; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; +using Wonky.Client.Enums; +using Wonky.Client.Helpers; using Wonky.Client.HttpInterceptors; using Wonky.Client.HttpRepository; using Wonky.Client.Local.Services; @@ -39,6 +42,9 @@ public partial class OfficeOrderViewPage : IDisposable [Inject] public ILogger Logger { get; set; } [Inject] public IToastService Toast { get; set; } [Inject] public IUserInfoService UserInfoService { get; set; } + [Inject] public IJSRuntime JsRuntime { get; set; } + [Inject] public IOrderProcessRepository ProcessRepo { get; set; } + // ############################################################# [Parameter] public string CompanyId { get; set; } = ""; @@ -48,6 +54,8 @@ public partial class OfficeOrderViewPage : IDisposable private ReportItemView ReportItem { get; set; } = new(); private bool IsNotified { get; set; } private bool Working { get; set; } = true; + private IJSObjectReference JsModule { get; set; } + private readonly JsonSerializerOptions _options = new JsonSerializerOptions { @@ -64,9 +72,15 @@ public partial class OfficeOrderViewPage : IDisposable Working = false; } - /// - /// Set activity process state to express. Send confirmation notification to salesRep - /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + JsModule = await JsRuntime + .InvokeAsync("import", "/scripts/print-invoke.js"); + } + } + private async Task SetExpressState() { // disable doubled actions @@ -131,6 +145,17 @@ public partial class OfficeOrderViewPage : IDisposable Working = false; } + private async Task OfficePrint() + { + await ProcessRepo.UpdateOrderStatus(new OrderProcessState + { + OrderId = OrderId, + ProcessStatusEnum = Utils.EnumToString(ProcessStatus.Printed) + }); + await JsModule.InvokeVoidAsync("printInvoke"); + } + + public void Dispose() { Interceptor.DisposeEvent(); diff --git a/Wonky.Client/Program.cs b/Wonky.Client/Program.cs index ab6f9c33..bc5a399f 100644 --- a/Wonky.Client/Program.cs +++ b/Wonky.Client/Program.cs @@ -81,6 +81,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); // warehouse repository builder.Services.AddScoped(); // mail service diff --git a/Wonky.Client/Wonky.Client.csproj b/Wonky.Client/Wonky.Client.csproj index 7971d607..d67d15cf 100644 --- a/Wonky.Client/Wonky.Client.csproj +++ b/Wonky.Client/Wonky.Client.csproj @@ -11,14 +11,14 @@ - - - - - - - - + + + + + + + + diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index d8adf0bd..313b510a 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,7 +1,7 @@ { "appInfo": { "name": "Wonky Online", - "version": "255.0", + "version": "257.0", "rc": true, "sandBox": true, "image": "grumpy-coder.png", @@ -11,7 +11,7 @@ "LogLevel": { "Default": "Debug", "System": "Debug", - "Microsoft": "None" + "Microsoft": "Debug" }, "Debug": { "LogLevel": { @@ -32,7 +32,9 @@ "officeAdvisors": "api/v2/office/users/advisors", "officeCustomers": "api/v2/office/customers", "officeReports": "api/v2/office/reports", + "officeSales": "api/v2/office/sales", "officeUsers": "api/v2/office/users/admin", + "orderProcess": "api/v2/orders/process", "publicProducts": "api/v2/public/products", "serviceAuth": "v2/token", "serviceGlsId": "", @@ -54,7 +56,6 @@ "userManagerSetPasswd": "api/v2/app/manage/passwd", "userRoles": "api/v2/app/manage/roles", "userSupport": "/api/v2/app/manage/support", - "warehouse": "api/v2/warehouse/packages", "b2bCustomer": "api/v2/b2b" } } diff --git a/Wonky.Entity/Configuration/ApiConfig.cs b/Wonky.Entity/Configuration/ApiConfig.cs index 887771c6..76787470 100644 --- a/Wonky.Entity/Configuration/ApiConfig.cs +++ b/Wonky.Entity/Configuration/ApiConfig.cs @@ -83,6 +83,10 @@ public class ApiConfig /// public string OfficeReports { get; set; } = ""; + /// + /// Endpoint for Office Sales actions + /// + public string OfficeSales { get; set; } = ""; /// /// Public Product url /// @@ -189,7 +193,7 @@ public class ApiConfig /// /// Uri for warehouse requests /// - public string Warehouse { get; set; } = ""; + public string OrderProcess { get; set; } = ""; /// /// Uri for B2BCustomer diff --git a/Wonky.Entity/Views/OpenOrderListView.cs b/Wonky.Entity/Views/OpenOrderListView.cs new file mode 100644 index 00000000..ebb01b86 --- /dev/null +++ b/Wonky.Entity/Views/OpenOrderListView.cs @@ -0,0 +1,11 @@ +namespace Wonky.Entity.Views; + +public class OpenOrderListView +{ + public string CompanyId { get; set; } = ""; + public string CompanyName { get; set; } = ""; + public string Account { get; set; } = ""; + public string SalesHeadId { get; set; } = ""; + public string OrderDate { get; set; } = ""; + public string SalesRep { get; set; } = ""; +} \ No newline at end of file