From 4d36e77c5d9c6999aa586acf5a485b414fcdc39f Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Thu, 29 Sep 2022 16:19:10 +0200 Subject: [PATCH] built v 0.25.1 --- .../AdvisorActivityTableComponent.razor.cs | 9 +- .../OfficeActivityTableComponent.razor.cs | 1 + .../Components/ProcessStateComponent.razor | 1 + .../Components/ReportItemComponent.razor | 10 +- .../ICrmActivityHttpRepository.cs | 2 +- .../HttpInterfaces/ISendMailService.cs | 2 +- .../CrmActivityHttpRepository.cs | 20 ++-- .../HttpRepository/SendMailService.cs | 18 ++- Wonky.Client/Pages/CrmNewActivityPage.razor | 2 +- .../Pages/CrmNewActivityPage.razor.cs | 24 ++-- .../Pages/OfficeViewActivityPage.razor | 48 ++++---- .../Pages/OfficeViewActivityPage.razor.cs | 105 +++++++++++------- Wonky.Client/wwwroot/appsettings.json | 10 +- Wonky.Client/wwwroot/css/app-v0.23.0.css | 3 + Wonky.Entity/Views/ReportItemView.cs | 6 +- 15 files changed, 149 insertions(+), 112 deletions(-) diff --git a/Wonky.Client/Components/AdvisorActivityTableComponent.razor.cs b/Wonky.Client/Components/AdvisorActivityTableComponent.razor.cs index d3d6b939..3b9e5141 100644 --- a/Wonky.Client/Components/AdvisorActivityTableComponent.razor.cs +++ b/Wonky.Client/Components/AdvisorActivityTableComponent.razor.cs @@ -27,10 +27,11 @@ public partial class AdvisorActivityTableComponent { return processStatus.ToLower() switch { - "none" => "the-ugly-fg", - "picked" => "the-bad-fg", - "packed" => "the-good-fg", - "shipped" => "the-draw-fg", + "express" => "the-fast", + "none" => "the-ugly", + "picked" => "the-bad", + "packed" => "the-good", + "shipped" => "the-draw", _ => "the-dead" }; } diff --git a/Wonky.Client/Components/OfficeActivityTableComponent.razor.cs b/Wonky.Client/Components/OfficeActivityTableComponent.razor.cs index c8836897..15653c07 100644 --- a/Wonky.Client/Components/OfficeActivityTableComponent.razor.cs +++ b/Wonky.Client/Components/OfficeActivityTableComponent.razor.cs @@ -27,6 +27,7 @@ public partial class OfficeActivityTableComponent { return processStatus.ToLower() switch { + "express" => "the-fast", "none" => "the-good", "picked" => "the-bad", "packed" => "the-ugly", diff --git a/Wonky.Client/Components/ProcessStateComponent.razor b/Wonky.Client/Components/ProcessStateComponent.razor index 951dffdb..1011b70e 100644 --- a/Wonky.Client/Components/ProcessStateComponent.razor +++ b/Wonky.Client/Components/ProcessStateComponent.razor @@ -25,6 +25,7 @@ { _icon = StateClass switch { + "the-fast" => "lightning-charge", "the-good" => "file-earmark", "the-bad" => "file-earmark-check", "the-ugly" => "box2-fill", diff --git a/Wonky.Client/Components/ReportItemComponent.razor b/Wonky.Client/Components/ReportItemComponent.razor index 8518b009..c9ad723f 100644 --- a/Wonky.Client/Components/ReportItemComponent.razor +++ b/Wonky.Client/Components/ReportItemComponent.razor @@ -30,7 +30,7 @@ } @if (ReportItem.Express) { -

HASTER

+

HASTER

} @if (ReportItem.VisitTypeEnum.ToLower() == "phone" || ReportItem.OurRef.Contains("T:")) { @@ -43,7 +43,7 @@ Dato - @ReportItem.OrderDate + @ReportItem.OrderDate Konto @ReportItem.Company.Account @@ -120,7 +120,7 @@ -
HASTER
+
HASTER
} @@ -136,10 +136,10 @@ } -@if (ReportItem.Express && ReportItem.ProcessStatusEnum.ToLower() == "none") +@if (ReportItem.Express && ReportItem.ProcessStatusEnum == "Express") {
- +
} diff --git a/Wonky.Client/HttpInterfaces/ICrmActivityHttpRepository.cs b/Wonky.Client/HttpInterfaces/ICrmActivityHttpRepository.cs index ed74ffae..9f97988a 100644 --- a/Wonky.Client/HttpInterfaces/ICrmActivityHttpRepository.cs +++ b/Wonky.Client/HttpInterfaces/ICrmActivityHttpRepository.cs @@ -27,5 +27,5 @@ public interface ICrmActivityHttpRepository Task GetActivities(string activityDate); Task> GetCustomerActivities(string customerId); Task UpdateOfficeNote(ActivityOfficeNote model); - Task UpdateExpressStatus(string id); + Task GetExpressStatus(string id); } \ No newline at end of file diff --git a/Wonky.Client/HttpInterfaces/ISendMailService.cs b/Wonky.Client/HttpInterfaces/ISendMailService.cs index 12ce7dbf..14d5d163 100644 --- a/Wonky.Client/HttpInterfaces/ISendMailService.cs +++ b/Wonky.Client/HttpInterfaces/ISendMailService.cs @@ -5,5 +5,5 @@ namespace Wonky.Client.HttpInterfaces; public interface ISendMailService { - Task SendMail(EmailMessage message); + Task SendMail(string messageType, EmailMessage message); } \ No newline at end of file diff --git a/Wonky.Client/HttpRepository/CrmActivityHttpRepository.cs b/Wonky.Client/HttpRepository/CrmActivityHttpRepository.cs index 46508ae1..5e9211ff 100644 --- a/Wonky.Client/HttpRepository/CrmActivityHttpRepository.cs +++ b/Wonky.Client/HttpRepository/CrmActivityHttpRepository.cs @@ -55,21 +55,21 @@ public class CrmActivityHttpRepository : ICrmActivityHttpRepository _api = configuration.Value; } - public async Task UpdateExpressStatus(string id) + public async Task GetExpressStatus(string id) { - var response = await _client.PostAsync($"{_api.CrmSales}/express/{id}/?status=express", null); - var content = await response.Content.ReadAsStringAsync(); - var result = JsonSerializer.Deserialize(content, _options); - if (result.IsSuccess) return result!; - var msg = JsonSerializer.SerializeToElement(result.Message, _options); - result.Message = msg.ToString(); - return result!; + var response = await _client.GetFromJsonAsync($"{_api.CrmSales}/express/{id}?status=Express"); + + if (response.IsSuccess) return response; + + var msg = JsonSerializer.SerializeToElement(response.Message, _options); + response.Message = msg.ToString(); + return response; } public async Task UpdateOfficeNote(ActivityOfficeNote model) { - _logger.LogDebug("UpdateOfficeNote => model \n{}", JsonSerializer.Serialize(model) ); - _logger.LogDebug("UpdateOfficeNote => url \n{}", $"{_api.CrmSales}/activity/{model.ActivityId}" ); + // _logger.LogDebug("UpdateOfficeNote => model \n{}", JsonSerializer.Serialize(model) ); + // _logger.LogDebug("UpdateOfficeNote => url \n{}", $"{_api.CrmSales}/activity/{model.ActivityId}" ); await _client.PostAsJsonAsync($"{_api.CrmSales}/activity/{model.ActivityId}", model, _options); } public async Task GetActivities(string activityDate) diff --git a/Wonky.Client/HttpRepository/SendMailService.cs b/Wonky.Client/HttpRepository/SendMailService.cs index c32036d0..e6081cf5 100644 --- a/Wonky.Client/HttpRepository/SendMailService.cs +++ b/Wonky.Client/HttpRepository/SendMailService.cs @@ -1,3 +1,4 @@ +using System.Net; using System.Net.Http.Json; using System.Text.Json; using Microsoft.AspNetCore.Components; @@ -29,12 +30,19 @@ public class SendMailService : ISendMailService _navigation = navigation; _api = configuration.Value; } - public async Task SendMail(EmailMessage message) + + public async Task SendMail(string messageType, EmailMessage message) { - var response = await _client.PostAsJsonAsync("", message, _options); + var response = await _client.PostAsJsonAsync($"{_api.SendMail}/{messageType}", message, _options); + if (!response.IsSuccessStatusCode) + return new ApiResponseView + { + Code = (int) response.StatusCode, + Message = $"{response.ReasonPhrase}: {await response.Content.ReadAsStringAsync()}", + IsSuccess = false, + Id = "" + }; var content = await response.Content.ReadAsStringAsync(); - _logger.LogDebug("SendMail => ResponseContent <= {}", content); - var result = JsonSerializer.Deserialize(content, _options); - return result!; + return JsonSerializer.Deserialize(content, _options); } } \ No newline at end of file diff --git a/Wonky.Client/Pages/CrmNewActivityPage.razor b/Wonky.Client/Pages/CrmNewActivityPage.razor index ad9b7a04..60fbc19b 100644 --- a/Wonky.Client/Pages/CrmNewActivityPage.razor +++ b/Wonky.Client/Pages/CrmNewActivityPage.razor @@ -314,7 +314,7 @@ else Til Oversigt
diff --git a/Wonky.Client/Pages/CrmNewActivityPage.razor.cs b/Wonky.Client/Pages/CrmNewActivityPage.razor.cs index 8a392484..2d39a68c 100644 --- a/Wonky.Client/Pages/CrmNewActivityPage.razor.cs +++ b/Wonky.Client/Pages/CrmNewActivityPage.razor.cs @@ -93,12 +93,6 @@ public partial class CrmNewActivityPage : IDisposable protected override async Task OnInitializedAsync() { - if (!_prefs.DateConfirmed) - { - _confirmDatePrompt = $"Er arbejdsdato {_selectedDate} korrekt?"; - CallConfirmWorkDate(); - } - _editContext = new EditContext(_activity); _editContext.OnFieldChanged += HandleFieldChanged; _editContext.OnValidationStateChanged += ValidationChanged; @@ -149,8 +143,8 @@ public partial class CrmNewActivityPage : IDisposable _activity.DlvAddress2 = _company.Address2; _activity.DlvZipCode = _company.ZipCode; _activity.DlvCity = _company.City; - } + private void CallPriceListModal() { PriceListModal.Show(); @@ -205,7 +199,13 @@ public partial class CrmNewActivityPage : IDisposable private async Task CreateActivity() { - _activity.CountryCode = ""; + + // if (!_prefs.DateConfirmed) + // { + // _confirmDatePrompt = $"Er arbejdsdato {_selectedDate} korrekt?"; + // CallConfirmWorkDate(); + // } + if (string.IsNullOrWhiteSpace(_activity.Address1)) { Toast.ShowError("Kunde adresse er ufuldstændig."); @@ -227,6 +227,8 @@ public partial class CrmNewActivityPage : IDisposable } } + + _poFormInvalid = true; _activity.ActivityDate = $"{_workDate:yyyy-MM-dd}"; _activity.OurRef = _activity.ActivityTypeEnum switch @@ -276,12 +278,12 @@ public partial class CrmNewActivityPage : IDisposable if (result.IsSuccess) { Toast.ShowSuccess($"{result.Message}", "RESULTAT"); - if(DraftStateProvider.Draft.Items.Any()) - Toast.ShowSuccess($"{result.Message}.", "BESTILLING OPRETTET"); - await DraftStateProvider.DeleteDraftAsync(); Navigator.NavigateTo($"/companies"); + return; } + + _poFormInvalid = false; Toast.ShowError(result.Message, "ORDRE FEJL"); _selectedItem = new SalesItemView(); } diff --git a/Wonky.Client/Pages/OfficeViewActivityPage.razor b/Wonky.Client/Pages/OfficeViewActivityPage.razor index f82c8739..3d1104df 100644 --- a/Wonky.Client/Pages/OfficeViewActivityPage.razor +++ b/Wonky.Client/Pages/OfficeViewActivityPage.razor @@ -8,16 +8,16 @@
-

@ReportItem.Company.Name

- @if (ReportItem.StatusTypeEnum.ToLower() is "quote") +

@_reportItem.Company.Name

+ @if (_reportItem.StatusTypeEnum.ToLower() is "quote") {

TILBUD

} - @if (ReportItem.Express) + @if (_reportItem.Express) {

HASTER

} - @if (ReportItem.Express && ReportItem.ProcessStatusEnum == "None") + @if (_reportItem.Express && _reportItem.ProcessStatusEnum == "None") {
@@ -37,7 +37,7 @@ } - @if (ReportItem.VisitTypeEnum.ToLower() == "phone" || ReportItem.OurRef.Contains("T:")) + @if (_reportItem.VisitTypeEnum.ToLower() == "phone" || _reportItem.OurRef.Contains("T:")) {
TELEFONORDRE
} @@ -48,45 +48,45 @@ Dato - @ReportItem.OrderDate + @_reportItem.OrderDate Konto - @ReportItem.Company.Account + @_reportItem.Company.Account Telefon - @ReportItem.Company.Phone + @_reportItem.Company.Phone Køber - @ReportItem.YourRef + @_reportItem.YourRef CVR/VAT - @ReportItem.Company.VatNumber + @_reportItem.Company.VatNumber Rekvisition - @ReportItem.ReferenceNumber + @_reportItem.ReferenceNumber Navn - @ReportItem.Company.Name + @_reportItem.Company.Name Lev.Navn - @ReportItem.DlvName + @_reportItem.DlvName Adresse - @ReportItem.Company.Address1 + @_reportItem.Company.Address1 Lev.Adresse - @ReportItem.DlvAddress1 + @_reportItem.DlvAddress1 Adresse - @ReportItem.Company.Address2 + @_reportItem.Company.Address2 Lev.Adresse - @ReportItem.DlvAddress2 + @_reportItem.DlvAddress2 Postnr By - @ReportItem.Company.ZipCode @ReportItem.Company.City + @_reportItem.Company.ZipCode @_reportItem.Company.City Lev.Postnr By - @ReportItem.DlvZipCity + @_reportItem.DlvZipCity @@ -102,7 +102,7 @@ - @foreach (var line in ReportItem.Lines) + @foreach (var line in _reportItem.Lines) { @line.Quantity @@ -116,18 +116,18 @@ Ordresum - @ReportItem.OrderAmount + @_reportItem.OrderAmount - @if (ReportItem.Express) + @if (_reportItem.Express) {
HASTER
} -@if (!string.IsNullOrWhiteSpace(ReportItem.OfficeNote)) +@if (!string.IsNullOrWhiteSpace(_reportItem.OfficeNote)) {
-

@ReportItem.OfficeNote

+

@_reportItem.OfficeNote

} diff --git a/Wonky.Client/Pages/OfficeViewActivityPage.razor.cs b/Wonky.Client/Pages/OfficeViewActivityPage.razor.cs index 41de5f82..98441a7c 100644 --- a/Wonky.Client/Pages/OfficeViewActivityPage.razor.cs +++ b/Wonky.Client/Pages/OfficeViewActivityPage.razor.cs @@ -20,67 +20,86 @@ public partial class OfficeViewActivityPage : IDisposable [Parameter] public string OrderId { get; set; } = ""; [Inject] public HttpInterceptorService Interceptor { get; set; } [Inject] public ICrmActivityHttpRepository ActivityRepo { get; set; } - [Inject] public ISendMailService SendMailService { get; set; } + [Inject] public ISendMailService MailService { get; set; } [Inject] public ILocalStorageService Storage { get; set; } [Inject] public IOfficeUserHttpRepository UserRepo { get; set; } [Inject] public ILogger Logger { get; set; } [Inject] public IToastService Toast { get; set; } - private ReportItemView ReportItem { get; set; } = new(); - + private ReportItemView _reportItem { get; set; } = new(); + + private readonly JsonSerializerOptions? _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + protected override async Task OnInitializedAsync() { Interceptor.RegisterEvent(); Interceptor.RegisterBeforeSendEvent(); - ReportItem = await ActivityRepo.GetReportItem(OrderId); - Logger.LogDebug("ReportItem => \n {}", JsonSerializer.Serialize(ReportItem)); + _reportItem = await ActivityRepo.GetReportItem(OrderId); + Logger.LogDebug("ReportItem => \n {}", JsonSerializer.Serialize(_reportItem, _options)); } private async Task SetExpressState() { - var responseView = await ActivityRepo.UpdateExpressStatus(ReportItem.ActivityId); - if (responseView.IsSuccess) + Logger.LogDebug("SetExpressState => \n {}", JsonSerializer.Serialize(_reportItem, _options)); + var responseView = await ActivityRepo.GetExpressStatus(_reportItem.ActivityId); + Logger.LogDebug("SetExpressState => \n {}", responseView.Message ); + + if (!responseView.IsSuccess) { - var user = await Storage.GetItemAsync("_ux"); - var salesRep = await UserRepo.GetAdvisorInfo(responseView.Id); - var body = new StringBuilder(); - body.AppendLine($"Kvittering for behandling af hasteordre {ReportItem.ESalesNumber}"); - body.AppendLine($"Konto : {ReportItem.Company.Account}"); - body.AppendLine($"Navn : {ReportItem.Company.Name}"); - body.AppendLine( - $"Post Bynavn: {salesRep.CountryCode.ToLower()}-{ReportItem.Company.ZipCode} {ReportItem.Company.City}"); - body.AppendLine(); - body.AppendLine("Med venlig hilsen"); - body.AppendLine($"{user.FullName}"); - body.AppendLine($"{user.PhoneNumber}"); - - var msg = new EmailMessage - { - Body = body.ToString(), - Subject = $"{ReportItem.ESalesNumber} {ReportItem.Company.Name} er registreret.", - To = { new EmailContact - { - Email = salesRep.Email, - Name = $"{salesRep.FirstName} {salesRep.LastName}" - }} - }; - - var sendMail = await SendMailService.SendMail(msg); - if (sendMail.IsSuccess) - { - Toast.ShowSuccess($"Status er opdateret og notifikation sendt til {salesRep.FirstName}.", "OK"); - } - else - { - Toast.ShowWarning($"Notifikation til {salesRep.FirstName} kunne ikke sendes. {sendMail.Message}", "ADVARSEL"); - } + Toast.ShowError(responseView.Message); return; } - Toast.ShowError($"{responseView.Message}", "FEJL"); + + var user = await Storage.GetItemAsync("_xu"); + var salesRep = await UserRepo.GetAdvisorInfo(responseView.Id); + + Logger.LogDebug("SetExpressState => salesRep => \n {}", JsonSerializer.Serialize(salesRep)); + + var body = new StringBuilder(); + body.AppendLine($"Kvittering for modtagelse af hasteordre {_reportItem.ESalesNumber}"); + body.AppendLine($"Konto : {_reportItem.Company.Account}"); + body.AppendLine($"Navn : {_reportItem.Company.Name}"); + body.AppendLine( + $"Post By : {salesRep.CountryCode.ToUpper()}-{_reportItem.Company.ZipCode} {_reportItem.Company.City}"); + body.AppendLine(); + body.AppendLine("Med venlig hilsen"); + body.AppendLine($"{user.FullName}"); + body.AppendLine($"{user.PhoneNumber}"); + + var sendTo = new List + { + new() + { + Email = salesRep.Email, + Name = $"{salesRep.FirstName} {salesRep.LastName}" + } + }; + + var msg = new EmailMessage + { + Body = body.ToString(), + Subject = $"Haste ordre til {_reportItem.Company.Name} er modtaget.", + To = sendTo, + IsBodyHtml = false + }; + Logger.LogDebug("SetExpressState Notification => \n {}", JsonSerializer.Serialize(msg)); + var sendMail = await MailService.SendMail("System", msg); + if (sendMail.IsSuccess) + { + Toast.ShowSuccess($"Status er opdateret og notifikation sendt til {salesRep.FirstName}.", "OK"); + } + else + { + Toast.ShowWarning($"Notifikation til {salesRep.FirstName} kunne ikke sendes. {sendMail.Message}", + "ADVARSEL"); + } + } - + public void Dispose() { Interceptor.DisposeEvent(); } - } \ No newline at end of file diff --git a/Wonky.Client/wwwroot/appsettings.json b/Wonky.Client/wwwroot/appsettings.json index 67efb110..0adb53fe 100644 --- a/Wonky.Client/wwwroot/appsettings.json +++ b/Wonky.Client/wwwroot/appsettings.json @@ -1,13 +1,13 @@ { "appInfo": { "name": "Wonky Client", - "version": "0.24.1", - "rc": false, + "version": "0.25.1", + "rc": true, "sandBox": false, "image": "grumpy-coder.png" }, "apiConfig": { - "innoBaseUrl": "https://eta.innotec.dk", + "innoBaseUrl": "https://zeta.innotec.dk", "glsTrackUrl": "https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DK01/DA/5004.htm?txtAction=71000&txtRefNo=", "glsId": "", "serviceVirk": "api/v2/services/virk", @@ -30,11 +30,11 @@ "officeCustomers": "api/v2/office/customers", "officeReports": "api/v2/office/reports", "warehouse": "api/v2/warehouse/packages", - "sendMail": "api/v2/" + "sendMail": "api/v2/services/sendmail" }, "Logging": { "LogLevel": { - "Default": "Debug", + "Default": "Information", "System": "Information", "Microsoft": "Information" }, diff --git a/Wonky.Client/wwwroot/css/app-v0.23.0.css b/Wonky.Client/wwwroot/css/app-v0.23.0.css index b87e042b..b95fbb09 100644 --- a/Wonky.Client/wwwroot/css/app-v0.23.0.css +++ b/Wonky.Client/wwwroot/css/app-v0.23.0.css @@ -81,6 +81,9 @@ a, .btn-link { .the-dead-bg { background-color: #0dcaf0; } +.the-fast { + color: orange; +} .the-good { color: green; } diff --git a/Wonky.Entity/Views/ReportItemView.cs b/Wonky.Entity/Views/ReportItemView.cs index ab85398a..1e6a2b37 100644 --- a/Wonky.Entity/Views/ReportItemView.cs +++ b/Wonky.Entity/Views/ReportItemView.cs @@ -25,8 +25,10 @@ public class ReportItemView /// Lines /// public List Lines { get; set; } = new(); - - public string SalesRepId { get; set; } + /// + /// entity id for sales rep + /// + public string SalesRepId { get; set; } = ""; /// /// Activity entity id ///