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

View file

@ -24,8 +24,18 @@
<div class="card">
<div class="card-header bg-dark text-white">
<div class="mt-3 h3 card-title">
Sælger Oversigt @CountryName
<div class="row">
<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 class="card-body">

View file

@ -35,22 +35,49 @@ public partial class OfficeAdvisorListPage :IDisposable
// #############################################################
private List<UserInfoListView> SalesReps { get; set; } = new();
private List<UserInfoListView> _advisors = new();
private bool Working { get; set; } = true;
private string CountryName { get; set; } = "";
private string _buttonText = "";
private bool _showAll;
private int _active;
private int _all;
protected override async Task OnInitializedAsync()
{
Interceptor.RegisterEvent();
Interceptor.RegisterBeforeSendEvent();
CountryName = Utils.CountryName(CountryCode);
var AdvisorList = await UserRepo.GetUsers("Advisor");
SalesReps = AdvisorList
_advisors = await UserRepo.GetUsers("Advisor");
_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 => !x.LockoutEnabled)
.OrderBy(x => x.FullName)
.ToList();
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()
{
Interceptor.DisposeEvent();

View file

@ -21,10 +21,11 @@
<PageTitle>System Bruger Oversigt</PageTitle>
<div class="row">
<div class="col-sm-8">
<div class="col-sm-6">
<h3>System Bruger Oversigt</h3>
</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>
</div>
<div class="col-sm-1">
@ -57,9 +58,9 @@
</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">
<div class="row">

View file

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

View file

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