TiamErrorBoundaryComponent fixes; ManageCompanies improvements, fixes; MyCompany improvements, fixes; etc...

This commit is contained in:
jozsef.b@aycode.com 2024-05-31 15:31:04 +02:00
parent 7343f02d8a
commit 8506026599
7 changed files with 122 additions and 175 deletions

View File

@ -10,11 +10,13 @@
@using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Services
@using AyCode.Core.Helpers
@using TIAMSharedUI.Shared.Components.Grids
@layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer
@inject ISessionService SessionService
@inject IServiceProviderDataService ServiceProviderDataService
@inject AdminSignalRClient AdminSignalRClient;
<h3>Properties</h3>
@ -62,14 +64,14 @@
</FooterContentTemplate>
</DxPopup>*@
<DxGrid @ref="Grid"
Data="ServiceProviderData"
<CompanyGrid @ref="_gridCompany"
Logger="_logger"
SignalRClient="AdminSignalRClient"
PageSize="12"
KeyFieldName="Id"
ValidationEnabled="false"
CustomizeEditModel="Grid_CustomizeEditModel"
EditModelSaving="Grid_EditModelSaving"
DataItemDeleting="Grid_DataItemDeleting"
EditMode="GridEditMode.EditRow"
KeyboardNavigationEnabled="true">
<Columns>
@ -83,7 +85,7 @@
<DxGridDataColumn FieldName="OwnerId" MinWidth="80" />
</Columns>
</DxGrid>
</CompanyGrid>
</div>
@ -107,8 +109,7 @@
@code {
private LoggerClient<MyServiceProviders> _logger;
IGrid Grid { get; set; }
Company[]? ServiceProviderData { get; set; }
private CompanyGrid _gridCompany;
public ServiceProviderWizardModel myModel = new ServiceProviderWizardModel();
@ -145,7 +146,7 @@
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
await Grid.StartEditRowAsync(0);
await _gridCompany.StartEditRowAsync(0);
}
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
@ -158,34 +159,6 @@
}
}
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
if (e.IsNew)
//add new orderData to orderData array
_logger.Info("New orderData added");
//await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
else
_logger.Info("orderData updated");
//modify orderData where orderData.Name == e.EditModel.Name
//await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
await UpdateDataAsync();
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array
_logger.Info("orderData deleted");
//await UpdateDataAsync();
}
async Task UpdateDataAsync()
{
//DataSource = await NwindDataService.GetEmployeesEditableAsync();
//refresh grid
_logger.Info("orderData grid refreshed");
}
protected override Task OnInitializedAsync()
{
_logger = new LoggerClient<MyServiceProviders>(LogWriters.ToArray());

View File

@ -20,6 +20,7 @@
@using MessagePack.Resolvers
@using AyCode.Core.Extensions;
@using AyCode.Utils.Extensions
@using TIAMSharedUI.Shared.Components.Grids
@layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer
@ -35,11 +36,9 @@
<h2 style="font-size:small">Manage transfers here!</h2>
</div>
<DxPopup
@bind-Visible="@SetOwnerPopupVisible"
ShowFooter="true"
HeaderText="Set owner by adding E-mail address"
>
<DxPopup @bind-Visible="@_setOwnerPopupVisible"
ShowFooter="true"
HeaderText="Set owner by adding E-mail address">
<BodyContentTemplate>
<label for="emailID" class="demo-text mt-4 mb-1">
Put user email here
@ -49,16 +48,16 @@
Mask="@EmailMask"
InputId="emailID"
MaskMode="MaskMode.RegEx" />
</BodyContentTemplate>
<FooterContentTemplate>
<DxButton CssClass="popup-button my-1 ms-2" RenderStyle="ButtonRenderStyle.Primary" Text="OK" Click="@(() => SetOwnerPopupVisible = false)" />
<DxButton CssClass="popup-button my-1 ms-2" RenderStyle="ButtonRenderStyle.Primary" Text="OK" Click="@(() => _setOwnerPopupVisible = false)" />
@* <DxButton CssClass="popup-button my-1 ms-2" RenderStyle="ButtonRenderStyle.Secondary" Text="Cancel" Click="@(() => SetOwnerPopupVisible = false)" /> *@
</FooterContentTemplate>
</DxPopup>
<DxPopup CssClass="popup-demo-events"
@bind-Visible="@SendMailPopupVisible"
@bind-Visible="@_sendMailPopupVisible"
ShowFooter="true"
CloseOnEscape="true"
CloseOnOutsideClick="false"
@ -88,18 +87,18 @@
<div class=" col-12">
<Animation Effect="@Effect.Pulse" Class="glass" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(250)">
<div class="card">
<DxGrid @ref="Grid2"
Data="ServiceProviderDataList"
AutoCollapseDetailRow="AutoCollapseDetailRow"
KeyboardNavigationEnabled="true"
CustomizeElement="Grid_CustomizeElement"
CustomizeEditModel="Grid_CustomizeEditModel"
EditModelSaving="Grid_EditModelSaving"
DataItemDeleting="Grid_DataItemDeleting"
EditMode="GridEditMode.EditForm"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
ShowFilterRow="true"
KeyFieldName="Id">
<CompanyGrid @ref="_gridCompany"
Logger="_logger"
SignalRClient="AdminSignalRClient"
AutoCollapseDetailRow="_autoCollapseDetailRow"
KeyboardNavigationEnabled="true"
CustomizeElement="Grid_CustomizeElement"
CustomizeEditModel="Grid_CustomizeEditModel"
EditMode="GridEditMode.EditForm"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
ShowFilterRow="true"
KeyFieldName="Id">
<Columns>
<DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
@ -113,8 +112,7 @@
if (keyField.IsNullOrEmpty())
{
string buttonText = "Set owner";
<DxButton Click="() => SetOwnerPopup(keyItem)" Text="@buttonText" RenderStyle="ButtonRenderStyle.Primary"/>
<DxButton Click="() => SetOwnerPopup(keyItem)" Text="Set owner" RenderStyle="ButtonRenderStyle.Primary" />
}
else
{
@ -122,17 +120,17 @@
}
}
</CellDisplayTemplate>
</DxGridDataColumn>
</DxGridDataColumn>
<DxGridDataColumn FieldName="AffiliateId" />
<DxGridDataColumn FieldName="CommissionPercent" />
<DxGridDataColumn FieldName="Created" />
@* <DxGridDataColumn FieldName="ContactEmail">
</DxGridDataColumn> *@
</DxGridDataColumn> *@
</Columns>
@* <DetailRowTemplate>
<CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
<CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
</DetailRowTemplate> *@
<DetailRowTemplate>
<AddressGridComponent AddressContext="(TIAM.Entities.ServiceProviders.Company)context.DataItem" ContextIdType="companyprofile" KeyboardNavigationEnabled="true" />
@ -154,7 +152,7 @@
</EditFormTemplate>
</DxGrid>
</CompanyGrid>
</div>
@ -174,28 +172,32 @@
//public Transfer myModel = new Transfer();
public List<Company> ServiceProviderDataList { get; set; }
//public List<Company> ServiceProviderDataList { get; set; }
private bool _sendMailPopupVisible;
private bool _setOwnerPopupVisible;
private CompanyGrid _gridCompany;
private bool _autoCollapseDetailRow;
bool SendMailPopupVisible { get; set; }
bool SetOwnerPopupVisible { get; set; }
public List<string> IgnoreList =
[
"ReceiverEmailAddress",
"ReceiverFullName",
"ReceiverId",
"SenderEmailAddress",
"SenderFullName",
"SenderId",
"ContextId",
"ReceiverFullName",
"ReceiverId",
"SenderEmailAddress",
"SenderFullName",
"SenderId",
"ContextId",
];
private MessageWizardModel _messageWizardModel = new();
private string Email { get; set; } = "email@email.com";
string EmailMask { get; set; } = @"(\w|[.-])+@(\w|-)+\.(\w|-){2,4}";
DateTime StartDate { get; set; } = DateTime.Today;
DxSchedulerDataStorage _dataStorage = new();
void SendMail(Company item)
{
_logger.Info($"Sending mail to {item.OwnerId}, {item.Id}");
@ -204,14 +206,14 @@
_messageWizardModel.SenderEmailAddress = "";
_messageWizardModel.ReceiverEmailAddress = "";
_messageWizardModel.ReceiverFullName = "";
SendMailPopupVisible = true;
_sendMailPopupVisible = true;
}
void SetOwnerPopup(Company item)
{
_logger.Info($"Setting owner of {item.OwnerId}, {item.Id}");
SetOwnerPopupVisible = true;
_setOwnerPopupVisible = true;
}
async Task<Company> SetOwner(Guid CompanyId)
@ -222,23 +224,22 @@
//overwrite ServiceProvider ownerid
var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyId);
if (target == null)
{
{
return null;
}
else
{
target.OwnerId = userModelDto.Id;
var result = await serviceProviderDataService.UpdateServiceProviderAsync(target);
var result = await serviceProviderDataService.UpdateServiceProviderAsync(target);
return result;
}
}
void CancelCreateClick()
{
SendMailPopupVisible = false;
_sendMailPopupVisible = false;
}
void EulaPopupClosed()
{
@ -300,102 +301,35 @@
companyEditModel.OwnerId = Guid.Empty;
companyEditModel.ProfileId = Guid.NewGuid();
}
}
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
Company resultCompany = null;
if (e.IsNew)
{
_logger.Info("New company adding");
resultCompany = await serviceProviderDataService.CreateServiceProviderAsync((Company)e.EditModel);
}
else
{
_logger.Info("company updating at id " + ((Company)e.EditModel).Id);
resultCompany = await serviceProviderDataService.UpdateServiceProviderAsync((Company)e.EditModel);
}
if (resultCompany!=null)
{
//TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J.
await UpdateDataAsync();
}
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{
var company = (Company)e.DataItem;
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array
_logger.Info($"companyData deleting; companyId: {company.Id}");
var response = await AdminSignalRClient.PostDataAsync(SignalRTags.RemoveCompanyAsync, company);
//resultCompany = await serviceProviderDataService.DeleteServiceProviderAsync(company.Id);
//await UpdateDataAsync();
}
async Task UpdateDataAsync()
{
ServiceProviderDataList = await serviceProviderDataService.GetServiceProvidersAsync();
//StateHasChanged();
_logger.Info("orderData grid refreshed");
}
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<ManageServiceProviders>(LogWriters.ToArray());
await UpdateDataAsync();
//var transfers = await devAdminSignalClient.GetAllAsync<List<Transfer>>(SignalRTags.GetTransfersAsync);
//InitializeDataSources(transfers ?? []);
//InitializeDataSources(await transferDataService.GetTransfersAsync());
base.OnInitializedAsync();
await base.OnInitializedAsync();
}
void ColumnChooserButton_Click()
{
Grid2.ShowColumnChooser();
_gridCompany.ShowColumnChooser();
}
IGrid Grid2 { get; set; }
object MasterGridData { get; set; }
bool AutoCollapseDetailRow { get; set; }
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
Grid2.ExpandDetailRow(0);
_gridCompany.ExpandDetailRow(0);
}
}
void AutoCollapseDetailRow_Changed(bool newValue)
{
AutoCollapseDetailRow = newValue;
_autoCollapseDetailRow = newValue;
if (!newValue) return;
Grid2.BeginUpdate();
Grid2.CollapseAllDetailRows();
Grid2.ExpandDetailRow(0);
Grid2.EndUpdate();
_gridCompany.BeginUpdate();
_gridCompany.CollapseAllDetailRows();
_gridCompany.ExpandDetailRow(0);
_gridCompany.EndUpdate();
}
}
}
}

View File

@ -72,7 +72,7 @@
Click="ColumnChooserButton_Click" />
</div>
<TransferGrid @ref="_transferGrid"
<TransferGrid @ref="_gridTransfer"
Logger="_logger"
SignalRClient="AdminSignalRClient"
OnDataSourceChanged="DataSourceChanged"
@ -205,7 +205,7 @@
private bool _popupVisible;
private bool _autoCollapseDetailRow;
private TransferGrid _transferGrid;
private TransferGrid _gridTransfer;
public List<string> IgnoreList =
[
@ -425,7 +425,7 @@
void ColumnChooserButton_Click()
{
_transferGrid.ShowColumnChooser();
_gridTransfer.ShowColumnChooser();
}
@ -433,7 +433,7 @@
{
if (firstRender)
{
_transferGrid.ExpandDetailRow(0);
_gridTransfer.ExpandDetailRow(0);
}
}
@ -442,10 +442,10 @@
_autoCollapseDetailRow = newValue;
if (!newValue) return;
_transferGrid.BeginUpdate();
_transferGrid.CollapseAllDetailRows();
_transferGrid.ExpandDetailRow(0);
_transferGrid.EndUpdate();
_gridTransfer.BeginUpdate();
_gridTransfer.CollapseAllDetailRows();
_gridTransfer.ExpandDetailRow(0);
_gridTransfer.EndUpdate();
}
}

View File

@ -1,4 +1,5 @@
using TIAM.Entities.ServiceProviders;
using Microsoft.AspNetCore.Components;
using TIAM.Entities.ServiceProviders;
using TIAM.Services;
namespace TIAMSharedUI.Shared.Components.Grids;
@ -14,4 +15,18 @@ public class CompanyGrid : TiamGrid<Company>
UpdateMessageTag = SignalRTags.UpdateCompanyAsync;
RemoveMessageTag = SignalRTags.RemoveCompanyAsync;
}
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsInitializedParameters)
{
//ShowFilterRow = true;
//ShowGroupPanel = true;
//AllowSort = false;
//etc...
}
return base.SetParametersAsyncCore(parameters);
}
}

View File

@ -13,7 +13,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
{
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IEntityGuid
{
private bool _initialParametersSet;
protected bool IsInitializedParameters;
private IList<TDataItem>? _dataSource;
private string _gridLogName;
@ -57,6 +57,12 @@ namespace TIAMSharedUI.Shared.Components.Grids
protected override void OnInitialized()
{
if (Logger == null)
throw new NullReferenceException($"[{GetType().Name}] Logger == null");
if (SignalRClient == null)
Logger.Error($"[{GetType().Name}] SignalRClient == null");
base.OnInitialized();
}
@ -170,7 +176,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!_initialParametersSet)
if (!IsInitializedParameters)
{
base.DataItemDeleting = EventCallback.Factory.Create<GridDataItemDeletingEventArgs>(this, OnItemDeleting);
base.EditModelSaving = EventCallback.Factory.Create<GridEditModelSavingEventArgs>(this, OnItemSaving);
@ -180,7 +186,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
//ShowGroupPanel = true;
//AllowSort = false;
_initialParametersSet = true;
IsInitializedParameters = true;
}
return base.SetParametersAsyncCore(parameters);

View File

@ -1,4 +1,5 @@
using TIAM.Entities.Transfers;
using Microsoft.AspNetCore.Components;
using TIAM.Entities.Transfers;
using TIAM.Services;
namespace TIAMSharedUI.Shared.Components.Grids;
@ -14,4 +15,18 @@ public class TransferGrid : TiamGrid<Transfer>
UpdateMessageTag = SignalRTags.UpdateTransferAsync;
RemoveMessageTag = SignalRTags.RemoveTransferAsync;
}
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsInitializedParameters)
{
//ShowFilterRow = true;
//ShowGroupPanel = true;
//AllowSort = false;
//etc...
}
return base.SetParametersAsyncCore(parameters);
}
}

View File

@ -42,7 +42,7 @@ else
// {
// }
protected override Task OnErrorAsync(Exception exception)
protected override async Task OnErrorAsync(Exception exception)
{
_currentError = exception;
@ -52,18 +52,22 @@ else
try
{
_logger.Error($"An error occurred: {exception.Message}", exception, categoryName, memberName);
_logger.Writer<SignaRClientLogItemWriter>()?.Error($"An error occurred: {exception.Message}", exception, categoryName, memberName);
}
catch (Exception loggerException)
{
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->OnErrorAsync; Logger error! {loggerException}");
await jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->OnErrorAsync; Logger error! {loggerException}");
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; An error occurred: {exception}");
await jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; An error occurred: {exception}");
//jsRuntime.InvokeVoidAsync("console.warn", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; Error details: {exception.StackTrace}");
}
await Task.Delay(500); //KELL IDE, KÜLÖNBEN NEM MEGY KI A LOG A SZERVERRE! - J.
//ShowErrorNotification("An unexpected error occurred. Please try again later.");
return OnError.HasDelegate ? OnError.InvokeAsync(exception) : base.OnErrorAsync(exception);
if (OnError.HasDelegate) await OnError.InvokeAsync(exception);
else await base.OnErrorAsync(exception);
}
// private void ShowErrorNotification(string message)