This commit is contained in:
Adam 2024-06-02 10:57:18 +02:00
commit c58f48512c
15 changed files with 192 additions and 88 deletions

View File

@ -8,12 +8,13 @@ using TIAM.Entities.Users;
namespace TIAM.Entities.Drivers namespace TIAM.Entities.Drivers
{ {
[Table(nameof(Car))] [Table(nameof(Car))]
public class Car : IEntityGuid, ITimeStampInfo, IUserProductMappingForeignKey//, ITimeStampDisableAutoSet public class Car : IEntityGuid, ITimeStampInfo, IUserProductMappingsRelation//, ITimeStampDisableAutoSet
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } = Guid.NewGuid(); public Guid Id { get; set; } = Guid.NewGuid();
public Guid UserProductMappingId { get; set; } public Guid UserProductMappingId { get; set; }
public virtual UserProductMapping UserProductMapping { get; set; }
public int CountryCode { get; set; } = 36; public int CountryCode { get; set; } = 36;

View File

@ -0,0 +1,11 @@
namespace TIAM.Entities.Drivers;
public interface ICarForeignKey
{
Guid CarId { get; set; }
}
public interface ICarRelation : ICarForeignKey
{
Car Car { get; set; }
}

View File

@ -0,0 +1,19 @@
using AyCode.Interfaces.Entities;
using TIAM.Core.Enums;
using TIAM.Entities.Profiles;
namespace TIAM.Entities.Products;
interface IProductBase : IEntityGuid, IProfileRelation<Profile>
{
ProductType ProductType { get; set; }
//public Guid? UserMediaId { get; set; }
Guid ProfileId { get; set; }
Profile Profile { get; set; }
string Name { get; set; }
string Description { get; set; }
float Price { get; set; }
string? JsonDetails { get; set; }
}

View File

@ -1,6 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.Profiles; using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using TIAM.Core.Enums; using TIAM.Core.Enums;
@ -8,8 +7,7 @@ using TIAM.Entities.Profiles;
namespace TIAM.Entities.Products; namespace TIAM.Entities.Products;
public abstract class ProductBase : IProductBase, ITimeStampInfo
public abstract class ProductBase : IEntityGuid, ITimeStampInfo, IProfileRelation<Profile>
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } public Guid Id { get; set; }

View File

@ -0,0 +1,13 @@
using TIAM.Entities.Drivers;
namespace TIAM.Entities.Transfers;
public interface ITransferForeignKey
{
Guid TransferId { get; set; }
}
public interface ITransferRelation : ICarForeignKey
{
Transfer Transfer { get; set; }
}

View File

@ -0,0 +1,18 @@
using AyCode.Interfaces.Entities;
namespace TIAM.Entities.Transfers;
public interface ITransferToDriverForeignKey : IEntityGuid
{
Guid TransferToDriverId { get; set; }
}
public interface ITransferToDriverRelation : ITransferToDriverForeignKey
{
TransferToDriver TransferToDrivers { get; set; }
}
public interface ITransferToDriversRelation : IEntityGuid
{
List<TransferToDriver> TransferToDrivers { get; set; }
}

View File

@ -11,8 +11,9 @@ using TIAM.Entities.Users;
namespace TIAM.Entities.Transfers; namespace TIAM.Entities.Transfers;
[Table(nameof(Transfer))] [Table(nameof(Transfer))]
public class Transfer: IEntityGuid, IAcFullName, ITimeStampInfo, IProductForeignKey<Guid?>, IUserForeignKey public class Transfer: IEntityGuid, IAcFullName, ITimeStampInfo, IProductForeignKey<Guid?>, IUserForeignKey, ITransferToDriversRelation
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } public Guid Id { get; set; }

View File

@ -3,12 +3,13 @@ using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using TIAM.Entities.Drivers; using TIAM.Entities.Drivers;
using TIAM.Entities.Products;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Entities.Transfers; namespace TIAM.Entities.Transfers;
[Table(nameof(TransferToDriver))] [Table(nameof(TransferToDriver))]
public class TransferToDriver : IEntityGuid, ITimeStampInfo, IUserProductMappingForeignKey public class TransferToDriver : IEntityGuid, ITimeStampInfo, IUserProductMappingsRelation, ICarRelation, ITransferRelation
{ {
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; } public Guid Id { get; set; }
@ -19,6 +20,7 @@ public class TransferToDriver : IEntityGuid, ITimeStampInfo, IUserProductMapping
public virtual Car Car { get; set; } public virtual Car Car { get; set; }
public virtual Transfer Transfer { get; set; } public virtual Transfer Transfer { get; set; }
public virtual UserProductMapping UserProductMapping { get; set; }
public string LicencePlate { get; set; } public string LicencePlate { get; set; }
public double Price { get; set; } public double Price { get; set; }

View File

@ -1,4 +1,6 @@
using System.Runtime; using AyCode.Interfaces.Users;
using System.Runtime;
using TIAM.Entities.Products;
namespace TIAM.Entities.Users; namespace TIAM.Entities.Users;

View File

@ -12,6 +12,7 @@
@using TIAMSharedUI.Shared.Components.Grids @using TIAMSharedUI.Shared.Components.Grids
@using TIAMSharedUI.Pages.Components.EditComponents @using TIAMSharedUI.Pages.Components.EditComponents
@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Services
@using AyCode.Interfaces.Addresses
@inject IServiceProviderDataService serviceProviderDataService @inject IServiceProviderDataService serviceProviderDataService
@inject IUserDataService userDataService @inject IUserDataService userDataService
@inject ITransferDataService transferDataService @inject ITransferDataService transferDataService
@ -23,7 +24,7 @@
DataSource="DataSource" DataSource="DataSource"
Logger="_logger" Logger="_logger"
SignalRClient="AdminSignalRClient" SignalRClient="AdminSignalRClient"
OnDataItemSaving="DataItemSaving" OnEditModelSaving="DataItemSaving"
OnDataItemDeleting="DataItemDeleting" OnDataItemDeleting="DataItemDeleting"
OnDataItemChanged="DataItemChanged" OnDataItemChanged="DataItemChanged"
PageSize="5" PageSize="5"
@ -33,9 +34,9 @@
ValidationEnabled="false" ValidationEnabled="false"
EditMode="GridEditMode.EditForm" EditMode="GridEditMode.EditForm"
ColumnResizeMode="GridColumnResizeMode.NextColumn" ColumnResizeMode="GridColumnResizeMode.NextColumn"
ShowFilterRow="true"> ShowFilterRow="false">
<Columns> <Columns>
<DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" /> <DxGridCommandColumn NewButtonVisible="false" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" GroupIndex="0" /> <DxGridDataColumn FieldName="Id" GroupIndex="0" />
<DxGridDataColumn FieldName="AddressText" /> <DxGridDataColumn FieldName="AddressText" />
<DxGridDataColumn FieldName="IsValid" Width="40" /> <DxGridDataColumn FieldName="IsValid" Width="40" />
@ -57,7 +58,8 @@
@code { @code {
[Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public bool KeyboardNavigationEnabled { get; set; }
[Parameter] public IList<Address> DataSource { get; set; } = null!; [Parameter] public IAcAddressRelation<Address> ParentData { get; set; } = null!;
[Parameter] public IList<Address>? DataSource { get; set; }
[Parameter] public EventCallback<Address> OnAddressChanged { get; set; } [Parameter] public EventCallback<Address> OnAddressChanged { get; set; }
private AddressDetailGrid _addressGrid = null!; private AddressDetailGrid _addressGrid = null!;
@ -66,11 +68,16 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
_logger = new LoggerClient<AddressDetailGridComponent>(LogWriters.ToArray()); _logger = new LoggerClient<AddressDetailGridComponent>(LogWriters.ToArray());
DataSource ??= new List<Address> { ParentData.Address };
} }
private void DataItemChanged(Address address) private void DataItemChanged(GridDataItemChangedEventArgs<Address> args)
{ {
OnAddressChanged.InvokeAsync(address); _logger.Debug($"DataItemSaving; addressId: {args.DataItem.Id}");
ParentData.Address = args.DataItem;
OnAddressChanged.InvokeAsync(args.DataItem);
} }
private void DataItemSaving(GridEditModelSavingEventArgs obj) private void DataItemSaving(GridEditModelSavingEventArgs obj)

View File

@ -134,13 +134,7 @@
<CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" /> <CompaniesNestedUserProductMapping CurrentCompany="(TIAM.Entities.ServiceProviders.Company)context.DataItem" KeyboardNavigationEnabled="true" />
</DetailRowTemplate> *@ </DetailRowTemplate> *@
<DetailRowTemplate> <DetailRowTemplate>
<AddressDetailGridComponent ParentData="((Company)context.DataItem).Profile" OnAddressChanged="AddressChanged" KeyboardNavigationEnabled="true" />
@{
List<Address> RowData = new List<Address> { ((Company)context.DataItem).Profile.Address };
}
<AddressDetailGridComponent DataSource="RowData" OnAddressChanged="AddressChanged" KeyboardNavigationEnabled="true" />
</DetailRowTemplate> </DetailRowTemplate>
<EditFormTemplate Context="EditFormContext"> <EditFormTemplate Context="EditFormContext">
@{ @{
@ -198,8 +192,10 @@
private void AddressChanged(Address address) private void AddressChanged(Address address)
{ {
var company = _gridCompany.DataSource!.FirstOrDefault(x => x.Profile.AddressId == address.Id); _logger.Debug($"DataItemSaving; addressId: {address?.Id}");
company.Profile.Address = address;
// var company = _gridCompany.DataSource!.FirstOrDefault(x => x.Profile.AddressId == address.Id);
// company.Profile.Address = address;
} }
void SendMail(Company item) void SendMail(Company item)

View File

@ -11,11 +11,14 @@
@using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Models.PageModels
@using TIAMWebApp.Shared.Application.Utility @using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@using TIAM.Entities.Addresses
@using TIAM.Services @using TIAM.Services
@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Services
@using TIAMSharedUI.Shared.Components @using TIAMSharedUI.Shared.Components
@using TIAMSharedUI.Shared.Components.Grids @using TIAMSharedUI.Shared.Components.Grids
@using TIAM.Models.Dtos.Users @using TIAM.Models.Dtos.Users
@using AyCode.Core.Enums
@using AyCode.Core.Extensions
@layout AdminLayout @layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject IStringLocalizer<TIAMResources> localizer @inject IStringLocalizer<TIAMResources> localizer
@ -91,7 +94,7 @@
OnDataItemChanging="DataSourceItemChanging" OnDataItemChanging="DataSourceItemChanging"
OnDataItemChanged="DataSourceItemChanged" OnDataItemChanged="DataSourceItemChanged"
OnDataItemDeleting="DataItemDeleting" OnDataItemDeleting="DataItemDeleting"
OnDataItemSaving="DataItemSaving" OnEditModelSaving="DataItemSaving"
CustomizeElement="Grid_CustomizeElement" CustomizeElement="Grid_CustomizeElement"
CustomizeEditModel="Grid_CustomizeEditModel" CustomizeEditModel="Grid_CustomizeEditModel"
@ -147,7 +150,7 @@
<DxTabs> <DxTabs>
<DxTabPage Text="Driver"> <DxTabPage Text="Driver">
<TransferToDriverGridComponent Transfer="(Transfer)context.DataItem" KeyboardNavigationEnabled="true" /> <TransferToDriverGridComponent ParentData="(Transfer)context.DataItem" KeyboardNavigationEnabled="true" />
</DxTabPage> </DxTabPage>
</DxTabs> </DxTabs>
@ -210,14 +213,7 @@
</div> </div>
</DxTabPage> </DxTabPage>
</DxTabs> </DxTabs>
</div> </div>
</Animation> </Animation>
</div> </div>
@ -270,6 +266,7 @@
void SendMail(Transfer item) void SendMail(Transfer item)
{ {
_logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}"); _logger.Info($"Sending mail to {item.ContactEmail}, {item.Id}");
_messageWizardModel.ReceiverId = item.UserId; _messageWizardModel.ReceiverId = item.UserId;
_messageWizardModel.ContextId = item.Id; _messageWizardModel.ContextId = item.Id;
_messageWizardModel.SenderEmailAddress = "info@touriam.com"; _messageWizardModel.SenderEmailAddress = "info@touriam.com";
@ -374,14 +371,16 @@
InitializeAppointments(transfers); InitializeAppointments(transfers);
} }
private void DataSourceItemChanging(Transfer transfer) private void DataSourceItemChanging(GridDataItemChangingEventArgs<Transfer> args)
{ {
_logger.Info("DataSourceItemChanging called"); _logger.Info("DataSourceItemChanging called");
} }
private void DataSourceItemChanged(Transfer transfer) private void DataSourceItemChanged(GridDataItemChangedEventArgs<Transfer> args)
{ {
_logger.Info("DataSourceItemChanged called"); _logger.Info("DataSourceItemChanged called");
AppointmentModels.UpdateCollection(CreateAppointmentModel(args.DataItem), args.DataChangeMode == DataChangeMode.Remove);
} }
private void DataItemSaving(GridEditModelSavingEventArgs e) private void DataItemSaving(GridEditModelSavingEventArgs e)
@ -394,19 +393,6 @@
_logger.Info($"DataItemDeleting OnItemDeleting"); _logger.Info($"DataItemDeleting OnItemDeleting");
} }
private void RefreshAppointments(Transfer transfer, bool isDelete)
{
var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id);
if (isDelete && appointmentIndex > -1) AppointmentModels.RemoveAt(appointmentIndex);
else
{
var appointment = CreateAppointmentModel(transfer);
if (appointmentIndex > -1) AppointmentModels[appointmentIndex] = appointment;
else AppointmentModels.Add(appointment);
}
}
protected override Task OnInitializedAsync() protected override Task OnInitializedAsync()
{ {
_logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray()); _logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray());
@ -453,7 +439,7 @@
public AppointmentModel CreateAppointmentModel(Transfer transfer) public AppointmentModel CreateAppointmentModel(Transfer transfer)
{ {
return new AppointmentModel { SourceId = transfer.Id, StartDate = transfer.Appointment, EndDate = transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" }; return new AppointmentModel { Id = transfer.Id, StartDate = transfer.Appointment, EndDate = transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" };
} }
void ColumnChooserButton_Click() void ColumnChooserButton_Click()

View File

@ -8,6 +8,8 @@
@using AyCode.Core.Loggers @using AyCode.Core.Loggers
@using AyCode.Services.Loggers @using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Services
@using AyCode.Core.Enums
@using AyCode.Core.Extensions
@inject IUserDataService UserDataService @inject IUserDataService UserDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient; @inject AdminSignalRClient AdminSignalRClient;
@ -15,10 +17,10 @@
<TransferToDriversDetailGrid @ref="_transferToDriversGrid" <TransferToDriversDetailGrid @ref="_transferToDriversGrid"
DataSource="Transfer.TransferToDrivers" DataSource="ParentData.TransferToDrivers"
Logger="_logger" Logger="_logger"
SignalRClient="AdminSignalRClient" SignalRClient="AdminSignalRClient"
OnDataItemSaving="DataItemSaving" OnEditModelSaving="DataItemSaving"
OnDataItemDeleting="DataItemDeleting" OnDataItemDeleting="DataItemDeleting"
OnDataItemChanged="DataItemChanged" OnDataItemChanged="DataItemChanged"
PageSize="5" PageSize="5"
@ -27,9 +29,9 @@
KeyFieldName="Id" KeyFieldName="Id"
ValidationEnabled="false" ValidationEnabled="false"
CustomizeEditModel="CustomizeEditModel" CustomizeEditModel="CustomizeEditModel"
EditMode="GridEditMode.EditForm" EditMode="GridEditMode.EditRow"
ColumnResizeMode="GridColumnResizeMode.NextColumn" ColumnResizeMode="GridColumnResizeMode.NextColumn"
ShowFilterRow="true"> ShowFilterRow="false">
<Columns> <Columns>
<DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" /> <DxGridCommandColumn NewButtonVisible="true" Width="8%" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" GroupIndex="0" /> <DxGridDataColumn FieldName="Id" GroupIndex="0" />
@ -41,7 +43,7 @@
@code { @code {
[Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public bool KeyboardNavigationEnabled { get; set; }
[Parameter] public Transfer Transfer { get; set; } = null!; [Parameter] public ITransferToDriversRelation ParentData { get; set; } = null!;
[Parameter] public EventCallback<TransferToDriver> OnTransferToDriverChanged { get; set; } [Parameter] public EventCallback<TransferToDriver> OnTransferToDriverChanged { get; set; }
private TransferToDriversDetailGrid _transferToDriversGrid = null!; private TransferToDriversDetailGrid _transferToDriversGrid = null!;
@ -51,12 +53,14 @@
{ {
_logger = new LoggerClient<TransferToDriverGridComponent>(LogWriters.ToArray()); _logger = new LoggerClient<TransferToDriverGridComponent>(LogWriters.ToArray());
_logger.Info($"DetailGridData: {Transfer.TransferToDrivers.Count}"); _logger.Info($"DetailGridData: {ParentData.TransferToDrivers.Count}");
} }
private void DataItemChanged(TransferToDriver transferToDriver) private void DataItemChanged(GridDataItemChangedEventArgs<TransferToDriver> args)
{ {
OnTransferToDriverChanged.InvokeAsync(transferToDriver); ParentData.TransferToDrivers.UpdateCollection(args.DataItem, args.DataChangeMode == DataChangeMode.Remove);
OnTransferToDriverChanged.InvokeAsync(args.DataItem);
} }
private void DataItemSaving(GridEditModelSavingEventArgs obj) private void DataItemSaving(GridEditModelSavingEventArgs obj)
@ -79,6 +83,6 @@
newDriver.LicencePlate = ""; newDriver.LicencePlate = "";
newDriver.Car = new Car(); newDriver.Car = new Car();
newDriver.Price = 0; newDriver.Price = 0;
newDriver.TransferId = Transfer.Id; newDriver.TransferId = ParentData.Id;
} }
} }

View File

@ -1,5 +1,8 @@
using System.ComponentModel; using System.ComponentModel;
using AyCode.Core.Enums;
using AyCode.Core.Extensions;
using AyCode.Core.Helpers; using AyCode.Core.Helpers;
using AyCode.Core.Interfaces;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using AyCode.Utils.Extensions; using AyCode.Utils.Extensions;
@ -13,7 +16,29 @@ using TIAMWebApp.Shared.Application.Utility;
namespace TIAMSharedUI.Shared.Components.Grids namespace TIAMSharedUI.Shared.Components.Grids
{ {
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IEntityGuid public class GridDataItemChangingEventArgs<TDataItem> : GridDataItemChangedEventArgs<TDataItem> where TDataItem : class, IId<Guid>
{
internal GridDataItemChangingEventArgs(TiamGrid<TDataItem> grid, TDataItem dataItem, DataChangeMode dataChangeMode) : base(grid, dataItem, dataChangeMode)
{ }
public bool IsCanceled { get; set; }
}
public class GridDataItemChangedEventArgs<TDataItem> where TDataItem : class, IId<Guid>
{
internal GridDataItemChangedEventArgs(TiamGrid<TDataItem> grid, TDataItem dataItem, DataChangeMode dataChangeMode)
{
Grid = grid;
DataItem = dataItem;
DataChangeMode = dataChangeMode;
}
public TiamGrid<TDataItem> Grid { get; }
public TDataItem DataItem { get; }
public DataChangeMode DataChangeMode { get; }
}
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IId<Guid>
{ {
protected bool IsFirstInitializeParameters; protected bool IsFirstInitializeParameters;
private IList<TDataItem>? _dataSource; private IList<TDataItem>? _dataSource;
@ -36,11 +61,11 @@ namespace TIAMSharedUI.Shared.Components.Grids
[Parameter] public EventCallback<GridDataItemDeletingEventArgs> OnDataItemDeleting{ get; set; } [Parameter] public EventCallback<GridDataItemDeletingEventArgs> OnDataItemDeleting{ get; set; }
protected new EventCallback<GridEditModelSavingEventArgs> EditModelSaving { get; set; } protected new EventCallback<GridEditModelSavingEventArgs> EditModelSaving { get; set; }
[Parameter] public EventCallback<GridEditModelSavingEventArgs> OnDataItemSaving { get; set; } [Parameter] public EventCallback<GridEditModelSavingEventArgs> OnEditModelSaving { get; set; }
[Parameter] public EventCallback<IList<TDataItem>> OnDataSourceChanged { get; set; } [Parameter] public EventCallback<IList<TDataItem>> OnDataSourceChanged { get; set; }
[Parameter] public EventCallback<TDataItem> OnDataItemChanging { get; set; } [Parameter] public EventCallback<GridDataItemChangingEventArgs<TDataItem>> OnDataItemChanging { get; set; }
[Parameter] public EventCallback<TDataItem> OnDataItemChanged { get; set; } [Parameter] public EventCallback<GridDataItemChangedEventArgs<TDataItem>> OnDataItemChanged { get; set; }
[Parameter] [Parameter]
[DefaultValue(null)] [DefaultValue(null)]
@ -84,11 +109,17 @@ namespace TIAMSharedUI.Shared.Components.Grids
if (firstRender && DataSource == null) RefreshDataSourceAsync().Forget(); if (firstRender && DataSource == null) RefreshDataSourceAsync().Forget();
} }
public Task AddDataItem(TDataItem dataItem) => PostDataToServerAsync(dataItem, AddMessageTag); public Task AddDataItem(TDataItem dataItem) => AddDataItem(dataItem, AddMessageTag);
public Task UpdateDataItem(TDataItem dataItem) => PostDataToServerAsync(dataItem, UpdateMessageTag); public Task AddDataItem(TDataItem dataItem, int messageTag) => PostDataToServerAsync(dataItem, messageTag, DataChangeMode.Add);
public Task RemoveDataItem(TDataItem dataItem) => PostDataToServerAsync(dataItem, RemoveMessageTag);
public Task RemoveDataItem(Guid id) public Task UpdateDataItem(TDataItem dataItem) => UpdateDataItem(dataItem, UpdateMessageTag);
public Task UpdateDataItem(TDataItem dataItem, int messageTag) => PostDataToServerAsync(dataItem, messageTag, DataChangeMode.Update);
public Task RemoveDataItem(TDataItem dataItem) => RemoveDataItem(dataItem, RemoveMessageTag);
public Task RemoveDataItem(TDataItem dataItem, int messageTag) => PostDataToServerAsync(dataItem, messageTag, DataChangeMode.Remove);
public Task RemoveDataItem(Guid id) => RemoveDataItem(id, RemoveMessageTag);
public Task RemoveDataItem(Guid id, int messageTag)
{ {
var dataItem = _dataSource.FirstOrDefault(x => x.Id == id); var dataItem = _dataSource.FirstOrDefault(x => x.Id == id);
@ -102,7 +133,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
var logText = e.IsNew ? "add" : "update"; var logText = e.IsNew ? "add" : "update";
Logger.Info($"{_gridLogName} OnItemSaving {logText}; Id: {dataItem.Id}"); Logger.Info($"{_gridLogName} OnItemSaving {logText}; Id: {dataItem.Id}");
await OnDataItemSaving.InvokeAsync(e); await OnEditModelSaving.InvokeAsync(e);
if (e.Cancel) if (e.Cancel)
{ {
@ -149,9 +180,16 @@ namespace TIAMSharedUI.Shared.Components.Grids
}); });
} }
protected virtual async Task PostDataToServerAsync(TDataItem dataItem, int messageTag, bool isDelete = false) protected virtual async Task PostDataToServerAsync(TDataItem dataItem, int messageTag, DataChangeMode dataChangeMode)
{ {
await OnDataItemChanging.InvokeAsync(dataItem); var eventArgs = new GridDataItemChangingEventArgs<TDataItem>(this, dataItem, dataChangeMode);
await OnDataItemChanging.InvokeAsync(eventArgs);
if (eventArgs.IsCanceled)
{
Logger.Debug($"{_gridLogName} OnDataItemChanging canceled");
return;
}
if (messageTag == 0) return; if (messageTag == 0) return;
@ -159,42 +197,44 @@ namespace TIAMSharedUI.Shared.Components.Grids
if (dataItem.Id.IsNullOrEmpty()) dataItem.Id = Guid.NewGuid(); if (dataItem.Id.IsNullOrEmpty()) dataItem.Id = Guid.NewGuid();
RefreshDataItem(dataItem, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. _dataSource.UpdateCollection(dataItem, dataChangeMode == DataChangeMode.Remove); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J.
SignalRClient.PostDataAsync(messageTag, dataItem, async repsonse => SignalRClient.PostDataAsync(messageTag, dataItem, async repsonse =>
{ {
if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null || !RefreshDataItem(repsonse.ResponseData, isDelete)) if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null)
{ {
RefreshDataSourceAsync().Forget(); RefreshDataSourceAsync().Forget();
return; return;
} }
await OnDataItemChanged.InvokeAsync(dataItem); _dataSource.UpdateCollection(repsonse.ResponseData, dataChangeMode == DataChangeMode.Remove);
await OnDataItemChanged.InvokeAsync(eventArgs);
InvokeAsync(StateHasChanged).Forget(); InvokeAsync(StateHasChanged).Forget();
}).Forget(); }).Forget();
//transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer);
} }
protected virtual bool RefreshDataItem(TDataItem dataItem, bool isDelete) //protected virtual bool RefreshDataItem(TDataItem dataItem, bool isDelete)
{ //{
if (dataItem.Id.IsNullOrEmpty()) // if (dataItem.Id.IsNullOrEmpty())
{ // {
Logger.Error($"{_gridLogName} dataItem.Id.IsNullOrEmpty()"); // Logger.Error($"{_gridLogName} dataItem.Id.IsNullOrEmpty()");
return false; // return false;
} // }
var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id); // var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id);
if (isDelete && transferIndex > -1) _dataSource.RemoveAt(transferIndex); // if (isDelete && transferIndex > -1) _dataSource.RemoveAt(transferIndex);
else // else
{ // {
if (transferIndex > -1) _dataSource[transferIndex] = dataItem; // if (transferIndex > -1) _dataSource[transferIndex] = dataItem;
else _dataSource.Add(dataItem); // else _dataSource.Add(dataItem);
} // }
return true; // return true;
} //}
protected override Task SetParametersAsyncCore(ParameterView parameters) protected override Task SetParametersAsyncCore(ParameterView parameters)
{ {

View File

@ -3,15 +3,21 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using AyCode.Core.Interfaces;
using AyCode.Interfaces.Entities;
namespace TIAMWebApp.Shared.Application.Models.PageModels namespace TIAMWebApp.Shared.Application.Models.PageModels
{ {
public class AppointmentModel public class AppointmentModel : IId<Guid>
{ {
public AppointmentModel() { } public AppointmentModel() { }
public Guid SourceId { get; set; } //pl: TransferId, stb... - J;
/// <summary>
/// SourceId //pl: TransferId, stb... - J;
/// </summary>
public Guid Id { get; set; } //pl: TransferId, stb... - J;
public int AppointmentType { get; set; } public int AppointmentType { get; set; }
public DateTime StartDate { get; set; } public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }