diff --git a/Wonky.Client/Pages/CrmCompanyViewPage.razor b/Wonky.Client/Pages/CrmCompanyViewPage.razor index b660e7be..f80fe275 100644 --- a/Wonky.Client/Pages/CrmCompanyViewPage.razor +++ b/Wonky.Client/Pages/CrmCompanyViewPage.razor @@ -21,6 +21,10 @@ @attribute [Authorize(Roles = "Advisor")] @page "/companies/{CompanyId}" +@if (Working) +{ + +} @if (!string.IsNullOrWhiteSpace(Company.Account)) { @if (!string.IsNullOrWhiteSpace(Company.Blocked)) diff --git a/Wonky.Client/Pages/CrmCompanyViewPage.razor.cs b/Wonky.Client/Pages/CrmCompanyViewPage.razor.cs index 166de1c6..f4025592 100644 --- a/Wonky.Client/Pages/CrmCompanyViewPage.razor.cs +++ b/Wonky.Client/Pages/CrmCompanyViewPage.razor.cs @@ -57,7 +57,7 @@ public partial class CrmCompanyViewPage : IDisposable private string VisitState { get; set; } = "the-ugly"; private int EnableActivity { get; set; } = 1; private string ActionLink { get; set; } = ""; - private bool Working { get; set; } + private bool Working { get; set; } = true; private bool countryIsDk { get; set; } = true; private List Contacts { get; set; } = new(); private VatLookupDkModal VatLookupPopup { get; set; } = new(); @@ -83,23 +83,27 @@ public partial class CrmCompanyViewPage : IDisposable if (Company.Account == "NY" || string.IsNullOrWhiteSpace(Company.Account)) EnableActivity = 1; + // prepare address for lookup if (countryIsDk) - CompanyVatAddress = PrepareVatAddress(Company); + CompanyVatAddress = PrepareVatAddress(Company); + // visit interval init if (Company.Interval == 0) Company.Interval = 8; - + // visit date init LastVisit = DateTime.Parse(Company.LastVisit); NextVisit = DateTime.Parse(Company.NextVisit); - + // if not previous visit is registered - force last visit date to 2020 if (LastVisit.Year < 2020) LastVisit = DateTime.Parse("2020-01-01"); - + // set next visit according to last visit and interval if (!Company.ValidDateSpan()) NextVisit = LastVisit.AddDays(Company.Interval * 7); - + // display urgency of next visit VisitState = Utils.GetVisitState($"{NextVisit:yyyy-MM-dd}"); + // action link passed to activity button component ActionLink = $"/companies/{CompanyId}/activities/new"; // used when drawing visit button + // handle company out of business case if(Company.HasFolded == 1) { // this is only used if user has selected to show closed companies @@ -116,13 +120,22 @@ public partial class CrmCompanyViewPage : IDisposable // vat state css class VatState = Company.ValidVat == 1 ? "the-good" : "no-vat"; // assign css class } + // initialize form context ErpContext = new EditContext(Company); + // assign event handlers ErpContext.OnFieldChanged += HandleFieldChanged; ErpContext.OnValidationStateChanged += ValidationChanged; + // ensure crm has been synced with erp await SyncCompanyHistory(); + // load contacts Contacts = await ContactRepo.GetContacts(CompanyId); + // remove loading image + Working = false; } + /// + /// Change enable activity state + /// private void ForceActivity() { EnableActivity = EnableActivity == 0 ? 1 : 0; @@ -136,8 +149,7 @@ public partial class CrmCompanyViewPage : IDisposable private async Task SaveContactCallback(ContactDto contact) { - Console.WriteLine(JsonSerializer.Serialize(contact)); - + Logger.LogDebug("CompanyView => SaveContactCallback <= {}", JsonSerializer.Serialize(contact)); if (string.IsNullOrWhiteSpace(contact.ContactId)) { Console.WriteLine("create"); @@ -193,11 +205,14 @@ public partial class CrmCompanyViewPage : IDisposable } /// - /// Update CRM data ( + /// Update CRM data /// /// true/false private async Task UpdateCrmData() { + if (Working) + return; + Working = true; Toaster.ShowInfo("Vent venligst ...", "Opdaterer CRM data"); Company.LastVisit = $"{LastVisit:yyyy-MM-dd}"; Company.NextVisit = $"{NextVisit:yyyy-MM-dd}"; @@ -207,6 +222,7 @@ public partial class CrmCompanyViewPage : IDisposable { Company = result; } + Working = false; } /// @@ -215,12 +231,17 @@ public partial class CrmCompanyViewPage : IDisposable /// private async Task UpdateErpData() { + if (Working) + return; + Working = true; Toaster.ShowInfo("Vent venligst ...", "Opdaterer Erp data"); var result = await CompanyRepo.UpdateErpData(CompanyId, Company); if (!string.IsNullOrWhiteSpace(result.Name)) { Company = result; } + + Working = false; } /// @@ -234,12 +255,15 @@ public partial class CrmCompanyViewPage : IDisposable { Toaster.ShowError($"Moms Nummer ugyldigt"); } + Working = false; Toaster.ShowInfo("Vent venligst ...", "OPDATERER MOMS NUMMER"); var result = await CompanyRepo.UpdateCompanyVat(CompanyId, Company.VatNumber); if (!string.IsNullOrWhiteSpace(result.Name)) { Company = result; } + + Working = false; } ///