diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index a42c93b4..d55f0f33 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -16,6 +16,6 @@ public class SignalRTags : AcSignalRTags public const int RemoveTransferAsync = 9; public const int GetCompaniesAsync = 10; public const int UpdateCompanyAsync = 11; - public const int CreateCompanyAsync = 12; - public const int DeleteCompanyAsync = 13; + public const int AddCompanyAsync = 12; + public const int RemoveCompanyAsync = 13; } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 3f0a9e80..0c71e4a9 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -333,7 +333,7 @@ //remove orderData from orderData array _logger.Info($"companyData deleting; companyId: {company.Id}"); - var response = await AdminSignalRClient.PostDataAsync(SignalRTags.DeleteCompanyAsync, company); + var response = await AdminSignalRClient.PostDataAsync(SignalRTags.RemoveCompanyAsync, company); //resultCompany = await serviceProviderDataService.DeleteServiceProviderAsync(company.Id); //await UpdateDataAsync(); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 7726e97e..25eb9128 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -11,16 +11,9 @@ @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers -@using AyCode.Services.SignalRs @using TIAMWebApp.Shared.Application.Services -@using MessagePack -@using MessagePack.Resolvers -@using AyCode.Core.Extensions; -@using AyCode.Core -@using AyCode.Core.Helpers -@using AyCode.Interfaces.Entities -@using TIAM.Services @using TIAMSharedUI.Shared.Components +@using TIAMSharedUI.Shared.Components.Grids @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @@ -37,7 +30,7 @@ - - + @@ -216,25 +203,19 @@ @code { private LoggerClient _logger; - //public Transfer myModel = new Transfer(); - - //public List TransferDataList { get; set; } - - bool PopupVisible { get; set; } - - - TiamGrid TransferGrid { get; set; } - bool AutoCollapseDetailRow { get; set; } + private bool _popupVisible; + private bool _autoCollapseDetailRow; + private TransferGrid _transferGrid; public List IgnoreList = [ "ReceiverEmailAddress", - "ReceiverFullName", - "ReceiverId", - "SenderEmailAddress", - "SenderFullName", - "SenderId", - "ContextId", + "ReceiverFullName", + "ReceiverId", + "SenderEmailAddress", + "SenderFullName", + "SenderId", + "ContextId", ]; public List Statuses { get; set; } = @@ -266,19 +247,21 @@ _messageWizardModel.SenderEmailAddress = "info@touriam.com"; _messageWizardModel.ReceiverEmailAddress = item.ContactEmail; _messageWizardModel.ReceiverFullName = item.FullName; - PopupVisible = true; + _popupVisible = true; } void CancelCreateClick() { - PopupVisible = false; + _popupVisible = false; } + void EulaPopupClosed() { //cancel clicked } + void EulaPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); @@ -305,6 +288,7 @@ "; } + messageModel.Content = FormatEmailContent(); _logger.Info(messageModel.Content); @@ -331,6 +315,7 @@ { e.CssClass = "bg-cancel"; } + if (e.ElementType == GridElementType.HeaderCell) { e.Style = "background-color: rgba(0, 0, 0, 0.08)"; @@ -354,62 +339,30 @@ transferEditModel.ContactEmail = "your@email.address"; } - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) + private void DataItemSaving(GridEditModelSavingEventArgs e) { - _logger.Info($"ManageTransfers OnItemDeleting"); - - // var transfer = (Transfer)e.DataItem; - // _logger.Info("ManageTransfers delete"); - // PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); - // //await UpdateDataAsync(); + _logger.Info("DataItemSaving called"); } - - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) + private void DataItemDeleting(GridDataItemDeletingEventArgs e) { - var transfer = (Transfer)e.EditModel; - var logText = e.IsNew ? "add" : "update"; - - _logger.Info($"EditModelSaving, {logText} transfer; transferId " + transfer.Id); - - PostDataToServerAsync(transfer, e.IsNew ? SignalRTags.AddTransferAsync : SignalRTags.UpdateTransferAsync).Forget(); - - //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); - //transfer = await transferDataService.UpdateTransferAsync(transfer); + _logger.Info($"DataItemDeleting OnItemDeleting"); } - private Task PostDataToServerAsync(T transfer, int messageTag, bool isDelete = false) where T : Transfer //IEntityGuid + private void DataSourceChanged(IList transfers) { - _logger.Info("PostDataToServerAsync called; transferId " + transfer.Id); + _logger.Info("DataSourceChanged called"); - RefreshAppointments(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + InitializeAppointments(transfers); + } - return AdminSignalRClient.PostDataAsync(messageTag, transfer, repsonse => - { - if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null) - { - UpdateAllDataAsync().Forget(); - return; - } - - RefreshAppointments(repsonse.ResponseData, isDelete); - StateHasChanged(); - }); - - //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); + private void DataSourceItemChanged(Transfer transfer) + { + _logger.Info("DataSourceItemChanged called"); } private void RefreshAppointments(Transfer transfer, bool isDelete) { - // var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id); - - // if (isDelete && transferIndex > -1) TransferDataList.RemoveAt(transferIndex); - // else - // { - // if (transferIndex > -1) TransferDataList[transferIndex] = transfer; - // else TransferDataList.Add(transfer); - // } - var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id); if (isDelete && appointmentIndex > -1) AppointmentModels.RemoveAt(appointmentIndex); else @@ -421,32 +374,10 @@ } } - public Task UpdateAllDataAsync() - { - _logger.Info("UpdateAllDataAsync called"); - - return AdminSignalRClient.GetAllAsync>(SignalRTags.GetTransfersAsync, response => - { - if (response.Status == SignalResponseStatus.Error) - return; - - InitializeAppointments(response.ResponseData ?? []); - StateHasChanged(); - }); - } - protected override Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - //UpdateAllDataAsync().Forget(); - - //var transfers = await devAdminSignalClient.GetAllAsync>(SignalRTags.GetTransfersAsync); - //InitializeDataSources(transfers ?? []); - - - //InitializeDataSources(await transferDataService.GetTransfersAsync()); - return base.OnInitializedAsync(); } @@ -468,23 +399,23 @@ } _dataStorage = new DxSchedulerDataStorage + { + AppointmentMappings = new DxSchedulerAppointmentMappings() { - AppointmentMappings = new DxSchedulerAppointmentMappings() - { - Type = "AppointmentType", - Start = "StartDate", - End = "EndDate", - Subject = "Caption", - AllDay = "AllDay", - Location = "Location", - Description = "Description", - LabelId = "Label", - StatusId = "Status", - RecurrenceInfo = "Recurrence" - }, + Type = "AppointmentType", + Start = "StartDate", + End = "EndDate", + Subject = "Caption", + AllDay = "AllDay", + Location = "Location", + Description = "Description", + LabelId = "Label", + StatusId = "Status", + RecurrenceInfo = "Recurrence" + }, - AppointmentsSource = AppointmentModels - }; + AppointmentsSource = AppointmentModels + }; } public AppointmentModel CreateAppointmentModel(Transfer transfer) @@ -494,7 +425,7 @@ void ColumnChooserButton_Click() { - TransferGrid.ShowColumnChooser(); + _transferGrid.ShowColumnChooser(); } @@ -502,30 +433,19 @@ { if (firstRender) { - TransferGrid.ExpandDetailRow(0); + _transferGrid.ExpandDetailRow(0); } } + void AutoCollapseDetailRow_Changed(bool newValue) { - AutoCollapseDetailRow = newValue; + _autoCollapseDetailRow = newValue; if (!newValue) return; - TransferGrid.BeginUpdate(); - TransferGrid.CollapseAllDetailRows(); - TransferGrid.ExpandDetailRow(0); - TransferGrid.EndUpdate(); - } - - private void DataSourceChanged(IList transfers) - { - _logger.Info("DataSourceChanged called"); - - InitializeAppointments(transfers); - } - - private void DataSourceItemChanged(Transfer transfer) - { - _logger.Info("DataSourceItemChanged called"); + _transferGrid.BeginUpdate(); + _transferGrid.CollapseAllDetailRows(); + _transferGrid.ExpandDetailRow(0); + _transferGrid.EndUpdate(); } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs new file mode 100644 index 00000000..82a44694 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs @@ -0,0 +1,17 @@ +using TIAM.Entities.ServiceProviders; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class CompanyGrid : TiamGrid +{ + public CompanyGrid() : base() + { + GridName = nameof(CompanyGrid); + + GetAllMessageTag = SignalRTags.GetCompaniesAsync; + AddMessageTag = SignalRTags.AddCompanyAsync; + UpdateMessageTag = SignalRTags.UpdateCompanyAsync; + RemoveMessageTag = SignalRTags.RemoveCompanyAsync; + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs similarity index 65% rename from TIAMSharedUI/Shared/Components/TiamGrid.cs rename to TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs index 3a55e5a4..c4c50501 100644 --- a/TIAMSharedUI/Shared/Components/TiamGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs @@ -1,29 +1,21 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel; using AyCode.Core.Helpers; using AyCode.Interfaces.Entities; -using AyCode.Services.Loggers; using AyCode.Services.SignalRs; using AyCode.Utils.Extensions; using DevExpress.Blazor; using DevExpress.Blazor.Internal; using Microsoft.AspNetCore.Components; -using Newtonsoft.Json.Linq; -using TIAM.Entities.Transfers; -using TIAM.Services; using TIAMWebApp.Shared.Application.Services; using TIAMWebApp.Shared.Application.Utility; -namespace TIAMSharedUI.Shared.Components +namespace TIAMSharedUI.Shared.Components.Grids { public class TiamGrid : DxGrid where TDataItem : class, IEntityGuid { private bool _initialParametersSet; private IList? _dataSource; + private string _gridLogName; public TiamGrid() : base() @@ -48,12 +40,11 @@ namespace TIAMSharedUI.Shared.Components { if (_dataSource == null && Data != null) { - Logger.Error($"{GridName} Use the DataSource parameter instead of Data!"); - throw new NullReferenceException($"{GridName} Use the DataSource parameter instead of Data!"); + Logger.Error($"{_gridLogName} Use the DataSource parameter instead of Data!"); + throw new NullReferenceException($"{_gridLogName} Use the DataSource parameter instead of Data!"); } return _dataSource; - } set { @@ -76,40 +67,58 @@ namespace TIAMSharedUI.Shared.Components if (firstRender) RefreshDataSourceAsync().Forget(); } - [Parameter] - public EventCallback OnDataItemDeleting{ get; set; } protected new EventCallback DataItemDeleting { get; set; } - [Parameter] - public EventCallback OnDataItemDeleted { get; set; } + [Parameter] public EventCallback OnDataItemDeleting{ get; set; } + + protected new EventCallback EditModelSaving { get; set; } + [Parameter] public EventCallback OnDataItemSaving { get; set; } + [Parameter] public EventCallback> OnDataSourceChanged { get; set; } [Parameter] public EventCallback OnDataSourceItemChanged { get; set; } + private async Task OnItemSaving(GridEditModelSavingEventArgs e) + { + var dataItem = (e.EditModel as TDataItem)!; + var logText = e.IsNew ? "add" : "update"; + + Logger.Info($"{_gridLogName} OnItemSaving {logText}; Id: {dataItem.Id}"); + + await OnDataItemSaving.InvokeAsync(e); + + if (e.Cancel) + { + Logger.Debug($"{_gridLogName} OnItemSaving {logText} canceled; Id: {dataItem.Id}"); + return; + } + + PostDataToServerAsync(dataItem, e.IsNew ? AddMessageTag : UpdateMessageTag).Forget(); + + //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); + //transfer = await transferDataService.UpdateTransferAsync(transfer); + } + private async Task OnItemDeleting(GridDataItemDeletingEventArgs e) { - Logger.Info($"{GridName} OnItemDeleting"); + Logger.Info($"{_gridLogName} OnItemDeleting"); await OnDataItemDeleting.InvokeAsync(e); if (e.Cancel) { - Logger.Debug($"{GridName} OnItemDeleting canceled"); + Logger.Debug($"{_gridLogName} OnItemDeleting canceled"); return; } - var dataItem = e.DataItem as TDataItem; - //PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); - //await UpdateDataAsync(); - - Logger.Info($"{GridName} OnDataItemDeleted"); - await OnDataItemDeleted.InvokeAsync(e); + var dataItem = (e.DataItem as TDataItem)!; + PostDataToServerAsync(dataItem, RemoveMessageTag, true).Forget(); } public Task RefreshDataSourceAsync() { - Logger.Info($"{GridName} UpdateAllDataAsync called"); + Logger.Info($"{_gridLogName} UpdateAllDataAsync called"); return SignalRClient.GetAllAsync>(GetAllMessageTag, response => { @@ -126,9 +135,9 @@ namespace TIAMSharedUI.Shared.Components private Task PostDataToServerAsync(TDataItem transfer, int messageTag, bool isDelete = false) { - Logger.Info($"{GridName} PostDataToServerAsync called; transferId " + transfer.Id); + Logger.Info($"{_gridLogName} PostDataToServerAsync called; transferId " + transfer.Id); - RefreshDataSourceItem(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + RefreshDataSourceItem(transfer, isDelete, false); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. return SignalRClient.PostDataAsync(messageTag, transfer, repsonse => { @@ -145,7 +154,7 @@ namespace TIAMSharedUI.Shared.Components //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); } - public void RefreshDataSourceItem(TDataItem dataItem, bool isDelete) + public Task RefreshDataSourceItem(TDataItem dataItem, bool isDelete, bool invokeItemChanged = true) { var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id); @@ -156,7 +165,7 @@ namespace TIAMSharedUI.Shared.Components else _dataSource.Add(dataItem); } - OnDataSourceItemChanged.InvokeAsync(dataItem); + return invokeItemChanged ? OnDataSourceItemChanged.InvokeAsync(dataItem) : Task.CompletedTask; } protected override Task SetParametersAsyncCore(ParameterView parameters) @@ -164,10 +173,13 @@ namespace TIAMSharedUI.Shared.Components if (!_initialParametersSet) { base.DataItemDeleting = EventCallback.Factory.Create(this, OnItemDeleting); + base.EditModelSaving = EventCallback.Factory.Create(this, OnItemSaving); + //ShowFilterRow = true; //PageSize = 4; //ShowGroupPanel = true; //AllowSort = false; + _initialParametersSet = true; } @@ -178,7 +190,10 @@ namespace TIAMSharedUI.Shared.Components { base.OnParametersSet(); - if (GridName.IsNullOrWhiteSpace()) GridName = $"[{typeof(TDataItem).Name}Grid]"; + if (GridName.IsNullOrWhiteSpace()) GridName = $"{typeof(TDataItem).Name}Grid"; + + _gridLogName = $"[{GridName}]"; + } } } diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs new file mode 100644 index 00000000..d76f545d --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs @@ -0,0 +1,17 @@ +using TIAM.Entities.Transfers; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class TransferGrid : TiamGrid +{ + public TransferGrid() : base() + { + GridName = nameof(TransferGrid); + + GetAllMessageTag = SignalRTags.GetTransfersAsync; + AddMessageTag = SignalRTags.AddTransferAsync; + UpdateMessageTag = SignalRTags.UpdateTransferAsync; + RemoveMessageTag = SignalRTags.RemoveTransferAsync; + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamGrid2.razor b/TIAMSharedUI/Shared/Components/TiamGrid2.razor deleted file mode 100644 index 5c3cd839..00000000 --- a/TIAMSharedUI/Shared/Components/TiamGrid2.razor +++ /dev/null @@ -1,19 +0,0 @@ -@using TIAMWebApp.Shared.Application.Utility -@using AyCode.Core.Extensions -@using AyCode.Services.Loggers -@using AyCode.Utils.Extensions -@inject IJSRuntime jsRuntime -@inject IEnumerable LogWriters - -@inherits DxGrid -@* @implements IGrid *@ - -@* @typeparam TDataType *@ - -@*
- @ChildContent -
- *@ -@code { - -} \ No newline at end of file diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs index c3bc3e7c..42315714 100644 --- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -92,7 +92,7 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController return; - case SignalRTags.CreateCompanyAsync: + case SignalRTags.AddCompanyAsync: //var createCompany = message!.MessagePackTo>().PostData; @@ -100,7 +100,7 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController //await ResponseToCaller(messageTag, new SignalResponseMessage(SignalResponseStatus.Success, createCompany), requestId); return; - case SignalRTags.DeleteCompanyAsync: + case SignalRTags.RemoveCompanyAsync: var deleteCompany = message!.MessagePackTo>().PostData; await adminDal.RemoveCompanyAsync(deleteCompany.Id);