This commit is contained in:
Frede Hundewadt 2023-09-07 18:34:09 +02:00
parent b74af73886
commit 102371306d
6 changed files with 105 additions and 92 deletions

View file

@ -101,15 +101,11 @@ public partial class AdvisorActivityCreatePage : IDisposable
_formContext = new EditContext(_activity); _formContext = new EditContext(_activity);
_formContext.OnFieldChanged += ContextHandleFieldChanged!; _formContext.OnFieldChanged += ContextHandleFieldChanged!;
_formContext.OnValidationStateChanged += ContextValidationChanged!; _formContext.OnValidationStateChanged += ContextValidationChanged!;
Interceptor.RegisterEvent(); Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); Interceptor.RegisterBeforeSendEvent();
_userPref = await PreferenceService.GetPreference(); _userPref = await PreferenceService.GetPreference();
_salesRep = await UserInfo.GetUserInfo(); _salesRep = await UserInfo.GetUserInfo();
_company = await CompanyRepo.GetCompanyById(CompanyId); _company = await CompanyRepo.GetCompanyById(CompanyId);
if (_company.Account.StartsWith("KANVAS")) if (_company.Account.StartsWith("KANVAS"))
{ {
_kanvas = true; _kanvas = true;
@ -125,20 +121,17 @@ public partial class AdvisorActivityCreatePage : IDisposable
// _company has shut down // _company has shut down
_activity.OrderMessage = "BEMÆRK: CVR nummer er ophørt."; _activity.OrderMessage = "BEMÆRK: CVR nummer er ophørt.";
} }
_activity.ActivityStatusEnum = "noSale"; _activity.ActivityStatusEnum = "noSale";
// decide if new or recall // decide if new or recall
_activity.ActivityVisitEnum = _company.Account.StartsWith("NY") _activity.ActivityVisitEnum = _company.Account.StartsWith("NY")
? "new" ? "new"
: "recall"; : "recall";
// if (string.IsNullOrWhiteSpace(_company.Segment) && _salesRep.CountryCode.ToLower() == "dk") // if (string.IsNullOrWhiteSpace(_company.Segment) && _salesRep.CountryCode.ToLower() == "dk")
// { // {
// Toaster.ShowError("Der mangler information om Segment. Ret kunde segment, gem erp data og prøv igen."); // Toaster.ShowError("Der mangler information om Segment. Ret kunde segment, gem erp data og prøv igen.");
// // Navigator.NavigateTo($"/advisor/customers/{CompanyId}"); // // Navigator.NavigateTo($"/advisor/customers/{CompanyId}");
// } // }
} }
// Populate base activity information // Populate base activity information
_activity.Account = _company.Account; _activity.Account = _company.Account;
_activity.Address1 = _company.Address1; _activity.Address1 = _company.Address1;
@ -162,7 +155,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
_activity.SalesRepId = _salesRep.UserId; _activity.SalesRepId = _salesRep.UserId;
_activity.Segment = _company.Segment; _activity.Segment = _company.Segment;
_activity.ZipCode = _company.ZipCode; _activity.ZipCode = _company.ZipCode;
/* /*
* debug logging * debug logging
*/ */
@ -175,7 +167,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
SelectedDate = string.IsNullOrWhiteSpace(_userPref.WorkDate) SelectedDate = string.IsNullOrWhiteSpace(_userPref.WorkDate)
? DateTime.Now ? DateTime.Now
: DateTime.Parse(_userPref.WorkDate); : DateTime.Parse(_userPref.WorkDate);
// 2023-08-14 - reject orders for future dates // 2023-08-14 - reject orders for future dates
if (SelectedDate.Date > DateTime.Now.Date) if (SelectedDate.Date > DateTime.Now.Date)
{ {
@ -183,10 +174,8 @@ public partial class AdvisorActivityCreatePage : IDisposable
SelectedDate = DateTime.Now; SelectedDate = DateTime.Now;
await PreferenceService.SetWorkDate(SelectedDate); await PreferenceService.SetWorkDate(SelectedDate);
} }
// raise flag if report is closed // raise flag if report is closed
ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}"); ReportClosed = await ReportRepo.ReportExist($"{SelectedDate:yyyy-MM-dd}");
// Lines may already have been added from the company inventory page // Lines may already have been added from the company inventory page
if (DraftProvider.Draft.DraftType == "order") if (DraftProvider.Draft.DraftType == "order")
{ {
@ -195,18 +184,14 @@ public partial class AdvisorActivityCreatePage : IDisposable
{ {
_activity.ActivityTypeEnum = "onSite"; _activity.ActivityTypeEnum = "onSite";
} }
_activity.ActivityStatusEnum = "order"; _activity.ActivityStatusEnum = "order";
_formInvalid = false; _formInvalid = false;
} }
if (_salesRep.CountryCode.ToLower() == "se") if (_salesRep.CountryCode.ToLower() == "se")
{ {
await TestOrgNumber(); await TestOrgNumber();
} }
Working = false; Working = false;
// Ask for confirmation of date // Ask for confirmation of date
Logger.LogDebug("Preferences.DateConfirmed => {}", _userPref.DateConfirmed); Logger.LogDebug("Preferences.DateConfirmed => {}", _userPref.DateConfirmed);
if (!_userPref.DateConfirmed) if (!_userPref.DateConfirmed)
@ -221,7 +206,9 @@ public partial class AdvisorActivityCreatePage : IDisposable
protected override async Task OnAfterRenderAsync(bool firstRender) protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if (_kanvas) if (_kanvas)
{
return; return;
}
if (firstRender) if (firstRender)
{ {
if (!_company.Account.StartsWith("NY")) if (!_company.Account.StartsWith("NY"))
@ -244,7 +231,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
{ {
Toaster.ShowInfo("Afventer svar fra tjenester ..."); Toaster.ShowInfo("Afventer svar fra tjenester ...");
} }
_disableButtons = true; _disableButtons = true;
var newSync = await HistoryRepo.RequestErpSync(CompanyId, _company.HistorySync, force); var newSync = await HistoryRepo.RequestErpSync(CompanyId, _company.HistorySync, force);
await Task.Delay(500); await Task.Delay(500);
@ -260,7 +246,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
{ {
Toaster.ShowSuccess("Alle tjenester har svaret."); Toaster.ShowSuccess("Alle tjenester har svaret.");
} }
_disableButtons = false; _disableButtons = false;
} }
@ -268,43 +253,37 @@ public partial class AdvisorActivityCreatePage : IDisposable
private async Task TestOrgNumber() private async Task TestOrgNumber()
{ {
var result = await OrgService.GetPersonalOrgNumber(_activity.Name); var result = await OrgService.GetPersonalOrgNumber(_activity.Name);
await Task.Delay(100);
if (!string.IsNullOrWhiteSpace(result.PersonalId)) if (!string.IsNullOrWhiteSpace(result.PersonalId))
{ {
// Toaster.ShowSuccess($"PersonId for {result.CompanyName} er fundet til at være {result.PersonalId}"); if (result.PersonalId[..6] == _activity.VatNumber)
_activity.VatNumber = result.PersonalId; {
Logger.LogDebug("search result for {}, {} is {}", _activity.Name, _activity.VatNumber, result.PersonalId);
Toaster.ShowSuccess($"PersonId for {result.CompanyName} er fundet til at være {result.PersonalId}");
_activity.VatNumber = result.PersonalId;
}
} }
} }
/// <summary>
/// Show _activity Overlay
/// </summary>
private void ShowActivitiesOverlay() private void ShowActivitiesOverlay()
{ {
ActivityListOverlay.Show(); ActivityListOverlay.Show();
} }
/// <summary>
/// Show Inventory Overlay
/// </summary>
private void ShowInventoryOverlay() private void ShowInventoryOverlay()
{ {
InventoryListOverlay.Show(); InventoryListOverlay.Show();
} }
/// <summary>
/// Show Invoice Overlay
/// </summary>
private void ShowInvoiceOverlay() private void ShowInvoiceOverlay()
{ {
InvoiceListOverlay.Show(); InvoiceListOverlay.Show();
} }
/// <summary>
/// Show Product Check Overlay
/// </summary>
private async Task ShowProductCheckOverlay() private async Task ShowProductCheckOverlay()
{ {
// check if new account // check if new account
@ -322,18 +301,12 @@ public partial class AdvisorActivityCreatePage : IDisposable
} }
/// <summary>
/// Show Price Catalog Overlay
/// </summary>
private void ShowPriceCatalogOverlay() private void ShowPriceCatalogOverlay()
{ {
CatalogOverlay.Show(); CatalogOverlay.Show();
} }
/// <summary>
/// Show Product Price History Overlay
/// </summary>
private void ShowPriceHistoryOverlay() private void ShowPriceHistoryOverlay()
{ {
if (ShowItem) if (ShowItem)
@ -343,10 +316,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
} }
/// <summary>
/// Price Catalog Overlay Callback
/// </summary>
/// <param name="selectedItem"></param>
private async Task PriceCatalogOverlayCallback(ItemSelect selectedItem) private async Task PriceCatalogOverlayCallback(ItemSelect selectedItem)
{ {
// get selected item // get selected item
@ -368,7 +337,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
{ {
return; return;
} }
Price = price.ToString("N2", CultureInfo.InvariantCulture); Price = price.ToString("N2", CultureInfo.InvariantCulture);
StateHasChanged(); StateHasChanged();
} }
@ -391,7 +359,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
item.Check = false; item.Check = false;
} }
await DrawerService.StoreInventoryDrawerAsync(CompanyId, _inventoryDrawer); await DrawerService.StoreInventoryDrawerAsync(CompanyId, _inventoryDrawer);
await CreateActivity(); await CreateActivity();
} }
@ -422,7 +389,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
*/ */
return; return;
} }
switch (_kanvas) switch (_kanvas)
{ {
/* /*
@ -438,7 +404,6 @@ public partial class AdvisorActivityCreatePage : IDisposable
Toaster.ShowError("Firma registreringsnummer er ikke korrekt."); Toaster.ShowError("Firma registreringsnummer er ikke korrekt.");
return; return;
} }
switch (_activity.ActivityStatusEnum) switch (_activity.ActivityStatusEnum)
{ {
/* /*
@ -541,44 +506,38 @@ public partial class AdvisorActivityCreatePage : IDisposable
} }
/// <summary>
/// Toggle Delivery Address Input
/// </summary>
private void ToggleDeliveryAddress() private void ToggleDeliveryAddress()
{ {
_hideDeliveryAddress = !_hideDeliveryAddress; _hideDeliveryAddress = !_hideDeliveryAddress;
} }
// /// <summary> private async Task ShowOrgWarning()
// /// Show Incomplete Organization Number Warning {
// /// </summary> if (_kanvas)
// private async Task ShowOrgWarning() {
// { return;
// if (_kanvas) }
// { // if (OrgWarning)
// return; // {
// } // return;
// // if (OrgWarning) // }
// // { // OrgWarning = true;
// // return; if (_company.CountryCode.ToLower() == "se"
// // } && Utils.StringToDigits(_activity.VatNumber).Length < 10
// // OrgWarning = true; && _activity.ActivityStatusEnum == "order")
// if (_company.CountryCode.ToLower() == "se" {
// && Utils.StringToDigits(_activity.VatNumber).Length < 10 // Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes.");
// && _activity.ActivityStatusEnum == "order") // Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ...");
// { var result = await OrgService.GetPersonalOrgNumber(_activity.Name);
// // Toaster.ShowWarning("Org nummer er ufuldstændig. Skal opdateres før bestilling kan sendes."); if (!string.IsNullOrWhiteSpace(result.PersonalId))
// // Toaster.ShowInfo("Vent mens vi soger at finde de manglende cifre ..."); {
// var result = await OrgService.GetPersonalOrgNumber(_activity.Name); _activity.VatNumber = result.PersonalId;
// if (!string.IsNullOrWhiteSpace(result.PersonalId)) Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}.");
// { }
// _activity.VatNumber = result.PersonalId; }
// Toaster.ShowSuccess($"Org nummer for {result.CompanyName} er fundet at være {result.PersonalId}."); // OrgWarning = false;
// } }
// }
// // OrgWarning = false;
// }
private async Task DeleteDraft() private async Task DeleteDraft()

View file

@ -24,8 +24,18 @@
<div class="card"> <div class="card">
<div class="card-header bg-dark text-white"> <div class="card-header bg-dark text-white">
<div class="mt-3 h3 card-title"> <div class="row">
Sælger Oversigt @CountryName <div class="col-sm-6">
<div class="mt-3 h3 card-title">
Sælger Oversigt @CountryName
</div>
</div>
<div class="col-sm-5 text-end">
<button class="btn btn-secondary" @onclick="@ToggleShowAll">@_buttonText</button>
</div>
<div class="col-sm-1">
</div>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View file

@ -35,22 +35,49 @@ public partial class OfficeAdvisorListPage :IDisposable
// ############################################################# // #############################################################
private List<UserInfoListView> SalesReps { get; set; } = new(); private List<UserInfoListView> SalesReps { get; set; } = new();
private List<UserInfoListView> _advisors = new();
private bool Working { get; set; } = true; private bool Working { get; set; } = true;
private string CountryName { get; set; } = ""; private string CountryName { get; set; } = "";
private string _buttonText = "";
private bool _showAll;
private int _active;
private int _all;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
Interceptor.RegisterEvent(); Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent(); Interceptor.RegisterBeforeSendEvent();
CountryName = Utils.CountryName(CountryCode); CountryName = Utils.CountryName(CountryCode);
var AdvisorList = await UserRepo.GetUsers("Advisor"); _advisors = await UserRepo.GetUsers("Advisor");
SalesReps = AdvisorList _all = _advisors.Count;
_active = _advisors.Count(x => !x.LockoutEnabled);
_buttonText = $"Vis Alle ({_all})";
SalesReps = _advisors
.Where(x => string.Equals(x.CountryCode, CountryCode, StringComparison.InvariantCultureIgnoreCase)) .Where(x => string.Equals(x.CountryCode, CountryCode, StringComparison.InvariantCultureIgnoreCase))
.Where(x => !x.LockoutEnabled)
.OrderBy(x => x.FullName) .OrderBy(x => x.FullName)
.ToList(); .ToList();
Working = false; Working = false;
} }
private void ToggleShowAll()
{
_showAll = !_showAll;
if (_showAll)
{
SalesReps = _advisors.Where(x => string.Equals(x.CountryCode, CountryCode, StringComparison.InvariantCultureIgnoreCase))
.OrderBy(x => x.FullName)
.ToList();
_buttonText = $"Vis Aktive ({_active})";
return;
}
SalesReps = _advisors
.Where(x => string.Equals(x.CountryCode, CountryCode, StringComparison.InvariantCultureIgnoreCase))
.Where(x => !x.LockoutEnabled)
.OrderBy(x => x.FullName)
.ToList();
_buttonText = $"Vis Alle ({_all})";
}
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); Interceptor.DisposeEvent();

View file

@ -21,10 +21,11 @@
<PageTitle>System Bruger Oversigt</PageTitle> <PageTitle>System Bruger Oversigt</PageTitle>
<div class="row"> <div class="row">
<div class="col-sm-8"> <div class="col-sm-6">
<h3>System Bruger Oversigt</h3> <h3>System Bruger Oversigt</h3>
</div> </div>
<div class="col-sm-3 text-end"> <div class="col-sm-5 text-end">
<button class="btn btn-secondary" @onclick="@ShowLocked">@_showLockedCaption</button>
<a class="btn btn-primary" href="/system/users/create"><i class="bi-plus-lg"></i>Opret bruger</a> <a class="btn btn-primary" href="/system/users/create"><i class="bi-plus-lg"></i>Opret bruger</a>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
@ -57,9 +58,9 @@
</div> </div>
</div> </div>
@if (UserList.Any()) @if (DisplayList.Any())
{ {
foreach (var user in UserList) foreach (var user in DisplayList)
{ {
<a class="list-group-item list-group-item-action" href="/system/users/@user.UserId"> <a class="list-group-item list-group-item-action" href="/system/users/@user.UserId">
<div class="row"> <div class="row">

View file

@ -32,7 +32,10 @@ public partial class SystemUserListPage : IDisposable
private List<UserInfoListView> UserList { get; set; } = new(); private List<UserInfoListView> UserList { get; set; } = new();
private List<UserInfoListView> DisplayList { get; set; } = new(); private List<UserInfoListView> DisplayList { get; set; } = new();
private bool Working { get; set; } = true; private bool Working { get; set; } = true;
private bool _showLocked;
private string _showLockedCaption = "";
private int _activeUsers;
private int _allUsers;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
@ -40,16 +43,29 @@ public partial class SystemUserListPage : IDisposable
Interceptor.RegisterBeforeSendEvent(); Interceptor.RegisterBeforeSendEvent();
UserList = await UserRepo.GetUsers(); UserList = await UserRepo.GetUsers();
_allUsers = UserList.Count;
_activeUsers = UserList.Count(x => !x.LockoutEnabled);
if (UserList.Any()) if (UserList.Any())
{ {
UserList = UserList.Where(x => !x.LockoutEnabled).ToList(); DisplayList = UserList.Where(x => !x.LockoutEnabled).ToList();
} }
_showLockedCaption = $"Vis Alle ({_allUsers})";
DisplayList = UserList;
Working = false; Working = false;
} }
private void ShowLocked()
{
_showLocked = !_showLocked;
if (_showLocked)
{
DisplayList = UserList;
_showLockedCaption = $"Vis aktive ({_activeUsers})";
return;
}
_showLockedCaption = $"Vis Alle ({UserList.Count})";
DisplayList = UserList.Where(x => !x.LockoutEnabled).ToList();
}
public void Dispose() public void Dispose()
{ {
Interceptor.DisposeEvent(); Interceptor.DisposeEvent();

View file

@ -1,7 +1,7 @@
{ {
"appInfo": { "appInfo": {
"name": "Wonky Online", "name": "Wonky Online",
"version": "232.0", "version": "234.0",
"rc": true, "rc": true,
"sandBox": true, "sandBox": true,
"image": "grumpy-coder.png", "image": "grumpy-coder.png",