From 323a1404c6fb7b13a031fee63b52561772a15576 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 13 Jun 2023 10:15:13 +0200 Subject: [PATCH] FIX: address and vat number validation is only for order or quote --- .../Pages/AdvisorActivityCreatePage.razor | 3 +- .../Pages/AdvisorActivityCreatePage.razor.cs | 152 ++++++++++-------- 2 files changed, 85 insertions(+), 70 deletions(-) diff --git a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor index 0aaa150e..d72e2565 100644 --- a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor +++ b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor @@ -81,7 +81,8 @@ else else { - @if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1) && Company.HasFolded == 0) + /*@if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1) && Company.HasFolded == 0)*/ + @if (!string.IsNullOrEmpty(Activity.VatNumber) && !string.IsNullOrWhiteSpace(Activity.Address1)) { @if (DraftProvider.Draft.DraftType == "order") { diff --git a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor.cs b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor.cs index 588eac73..09745a0e 100644 --- a/Wonky.Client/Pages/AdvisorActivityCreatePage.razor.cs +++ b/Wonky.Client/Pages/AdvisorActivityCreatePage.razor.cs @@ -175,9 +175,9 @@ public partial class AdvisorActivityCreatePage : IDisposable /* * debug loggin */ - Logger.LogDebug("company.segment = {}", Company.Segment); - Logger.LogDebug("activity.segment = {}", Activity.Segment); - Logger.LogDebug("AdvisorActivityCreatePage => DateTime parser => {}", UserPreference.WorkDate); + // Logger.LogDebug("company.segment = {}", Company.Segment); + // Logger.LogDebug("activity.segment = {}", Activity.Segment); + // Logger.LogDebug("AdvisorActivityCreatePage => DateTime parser => {}", UserPreference.WorkDate); /* * set selected date */ @@ -189,7 +189,7 @@ public partial class AdvisorActivityCreatePage : IDisposable ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}"); // Ask for confirmation of date - Logger.LogDebug("Preferences.DateConfirmed => {}", UserPreference.DateConfirmed); + // Logger.LogDebug("Preferences.DateConfirmed => {}", UserPreference.DateConfirmed); if (!UserPreference.DateConfirmed) { PromptDateConfirm = $"Aktiviteter oprettes med dato {SelectedDate.ToShortDateString()}. Er dette OK?"; @@ -391,68 +391,82 @@ public partial class AdvisorActivityCreatePage : IDisposable /// private async Task CreateActivity() { - // avoid duplication if (Working) { + /* + * prevent duped activies + */ return; } - // working flag is raised after the following validations - Logger.LogDebug("view kanvas activity => {}", JsonSerializer.Serialize(Activity)); switch (_kanvas) { - // validate customer address1 - // - this is a required input - case false when string.IsNullOrWhiteSpace(Activity.Address1): + /* + * validate customer address1 is required when Activity is order or quote + */ + case false when string.IsNullOrWhiteSpace(Activity.Address1) && Activity.ActivityStatusEnum is "order" or "quote": Toaster.ShowError("Kunde adresse er ufuldstændig."); return; - // validate org number - // - this is a required input - // - must validate according to country rules. - case false when !VatUtils.ValidateFormat(Company.CountryCode, Activity.VatNumber): + /* + * valid OrganisationNumber is required when Activity is order or quote + */ + case false when !VatUtils.ValidateFormat(Company.CountryCode, Activity.VatNumber) && Activity.ActivityStatusEnum is "order" or "quote": Toaster.ShowError("Firma registreringsnummer er ikke korrekt."); return; } - // validate input according to status switch (Activity.ActivityStatusEnum) { - // don't accept order with no lines + /* + * don't accept Draft with no Items + */ case "order" when DraftProvider.Draft.Items.Count == 0: Toaster.ShowError("Ved bestilling skal der være en eller flere linjer i kladden."); return; - // phone number is required if first time customer + /* + * phone number is required if first time customer + */ case "order" when Company.Account.StartsWith("NY") && string.IsNullOrWhiteSpace(Activity.Phone): Toaster.ShowError("Ved bestilling til ny kunde skal telefon nummer angives."); return; - // verify email address is a valid address + /* + * verify email address is a valid address + */ case "quote" when !Utils.IsValidEmail(Activity.Email): Toaster.ShowError("Ved tilbud skal en gyldig email adresse angives."); return; } - - // every checks - // raise working flag + /* + * set Workgin flag (prevents other actions while working) + */ Working = true; - // reset selected item - // begin assembling activity + /* + * reset local variable + */ SelectedItem = new SalesItemView(); - // activity date + /* + * ensure date is SelectedDate + */ Activity.ActivityDate = $"{SelectedDate:yyyy-MM-dd}"; - // activity type + /* + * Generate OurRef from activity type and user FirstName + */ Activity.OurRef = Activity.ActivityTypeEnum switch { "phone" => $"T:{SalesRep.FirstName}", "onSite" => $"B:{SalesRep.FirstName}", _ => "" }; - // if express add 'E' to ourRef if (Activity.Express) { + /* + * add `E` to indicate express + */ Activity.OurRef = $"E{Activity.OurRef}"; } - - // begin lines + /* + * generate lines from draft + */ Activity.Lines = new List(); var ln = 0; if (DraftProvider.Draft.Items.Count != 0) @@ -473,25 +487,27 @@ public partial class AdvisorActivityCreatePage : IDisposable .ToList(); Activity.Lines = lines; } - - // debug logging - Logger.LogDebug("CrmNewActivityPage => \n {}", JsonSerializer.Serialize(Activity)); - // post to api + /* + * send reqeust + */ var result = await ActivityRepo.CreateActivity(Activity); - // debug logging - Logger.LogDebug("ApiResponseView => \n {}", JsonSerializer.Serialize(result)); - // show result message if (result.IsSuccess) { + /* + * show result message + */ Toaster.ShowSuccess($"{result.Message}"); await DeleteDraft(); Navigator.NavigateTo($"/advisor/customers"); return; } - - // lower working flag + /* + * remove flag + */ Working = false; - // show error message + /* + * show error message + */ Toaster.ShowError(result.Message); } @@ -505,37 +521,35 @@ public partial class AdvisorActivityCreatePage : IDisposable } - /// - /// Show Incomplete Organization Number Warning - /// - private async Task ShowOrgWarning() - { - if (_kanvas) - { - return; - } - // if (OrgWarning) - // { - // return; - // } - // OrgWarning = true; - if (Company.CountryCode.ToLower() == "se" - && Utils.StringToDigits(Activity.VatNumber).Length < 10 - && Activity.ActivityStatusEnum == "order") - { - Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes."); - Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ..."); - - var result = await OrgService.GetPersonalOrgNumber(Activity.Name); - - if (!string.IsNullOrWhiteSpace(result.PersonalId)) - { - Activity.VatNumber = result.PersonalId; - Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}."); - } - } - // OrgWarning = false; - } + // /// + // /// Show Incomplete Organization Number Warning + // /// + // private async Task ShowOrgWarning() + // { + // if (_kanvas) + // { + // return; + // } + // // if (OrgWarning) + // // { + // // return; + // // } + // // OrgWarning = true; + // if (Company.CountryCode.ToLower() == "se" + // && Utils.StringToDigits(Activity.VatNumber).Length < 10 + // && Activity.ActivityStatusEnum == "order") + // { + // // Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes."); + // // Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ..."); + // var result = await OrgService.GetPersonalOrgNumber(Activity.Name); + // if (!string.IsNullOrWhiteSpace(result.PersonalId)) + // { + // Activity.VatNumber = result.PersonalId; + // Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}."); + // } + // } + // // OrgWarning = false; + // } ///