TourIAm/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridCompone...

229 lines
10 KiB
Plaintext

@using TIAM.Entities.Transfers
@using TIAM.Entities.Drivers
@using TIAM.Models.Dtos.Users
@using TIAMSharedUI.Shared.Components.Grids
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Utility
@using TIAM.Core.Loggers
@using AyCode.Core.Loggers
@using AyCode.Services.Loggers
@using TIAMWebApp.Shared.Application.Services
@using AyCode.Core.Enums
@using AyCode.Core.Extensions
@using AyCode.Core
@using AyCode.Core.Helpers
@using AyCode.Services.SignalRs
@using AyCode.Utils.Extensions
@using TIAM.Core.Consts
@using TIAM.Entities.Users
@using TIAM.Services
@inject IUserDataService UserDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient;
<TransferToDriversDetailGrid @ref="_transferToDriversGrid"
ContextIds="@(ContextId.IsNullOrEmpty() ? throw new InvalidDataException($"ContextId.IsNullOrEmpty(); ContextId: {ContextId}") : [ContextId])"
DataSource="ParentData.TransferToDrivers"
Logger="_logger"
SignalRClient="AdminSignalRClient"
OnGridEditModelSaving="DataItemSaving"
OnGridItemDeleting="DataItemDeleting"
OnGridItemChanged="DataItemChanged"
ValidationEnabled="false"
CustomizeEditModel="CustomizeEditModel"
EditMode="GridEditMode.EditRow"
ColumnResizeMode="GridColumnResizeMode.NextColumn">
<Columns>
<DxGridCommandColumn Width="150" MinWidth="150" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
@{
var userEmailFieldName = $"{nameof(TransferToDriver.UserProductMapping)}.{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}";
var userEmailFieldName2 = $"{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}";
}
<DxGridDataColumn FieldName="@userEmailFieldName" Caption="Driver" SortIndex="0">
<CellEditTemplate>
@{
var transferToDriverDataItem = (TransferToDriver)context.DataItem;
var transferToDriverEditModel = (TransferToDriver)context.EditModel;
}
<DxComboBox Data="@_drivers.Where(x => x.ProductId == (transferToDriverDataItem?.UserProductMapping.ProductId ?? TiamConstClient.TransferProductId))"
TData="@UserProductMapping"
TValue="@UserProductMapping"
TextFieldName="@userEmailFieldName2"
Value="@_drivers.FirstOrDefault(x => x.Id == transferToDriverEditModel.UserProductMappingId)"
ValueChanged="v => transferToDriverEditModel.UserProductMappingId = v.Id"
SearchFilterCondition="ListSearchFilterCondition.Contains"
SearchMode="ListSearchMode.AutoSearch">
<Columns>
@* <DxListEditorColumn FieldName="Id"/> *@
<DxListEditorColumn FieldName="@userEmailFieldName2" Caption="Driver email" />
</Columns>
</DxComboBox>
</CellEditTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="CarId" Caption="Car">
<CellDisplayTemplate>
@{
var transferToDriver = (TransferToDriver)context.DataItem;
<text>@_cars.FirstOrDefault(x => x.Id == transferToDriver.CarId)?.LicencePlate</text>
}
</CellDisplayTemplate>
<CellEditTemplate>
@{
var transferToDriverEditModel = (TransferToDriver)context.EditModel;
}
<DxComboBox Data="@_cars.Where(x=>x.UserProductMappingId == transferToDriverEditModel.UserProductMappingId)"
TData="@Car"
TValue="@Car"
TextFieldName="LicencePlate"
Value="@_cars.FirstOrDefault(x => x.Id == transferToDriverEditModel.CarId)"
ValueChanged="v => { transferToDriverEditModel.CarId = v?.Id ?? Guid.Empty; transferToDriverEditModel.LicencePlate = v?.LicencePlate ?? string.Empty; }"
SearchFilterCondition="ListSearchFilterCondition.Contains"
SearchMode="ListSearchMode.AutoSearch">
<Columns>
@* <DxListEditorColumn FieldName="Id"/> *@
<DxListEditorColumn FieldName="LicencePlate" Caption="LicencePlate"/>
<DxListEditorColumn FieldName="Manufacture" Caption="Manufacture" />
<DxListEditorColumn FieldName="CarModel" Caption="Model" />
<DxListEditorColumn FieldName="SeatNumber" Caption="SeatNumber" />
</Columns>
</DxComboBox>
</CellEditTemplate>
</DxGridDataColumn>
@* <DxGridDataColumn FieldName="CarId">
<CellEditTemplate>
@{
var transferToDriverId = ((TransferToDriver)context.DataItem).Id;
}
<DxDropDownBox QueryDisplayText="QueryText"
DropDownWidthMode="DropDownWidthMode.ContentWidth"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"
NullText="Select a car...">
<DropDownBodyTemplate>
<CarDetailGridComponent GetAllTag="SignalRTags.GetAllCars"/>
</DropDownBodyTemplate>
</DxDropDownBox>
</CellEditTemplate>
</DxGridDataColumn>
*@
@* <DxGridDataColumn FieldName="CarId">
<EditSettings>
<DxComboBoxSettings Data="_cars" SearchMode="ListSearchMode.AutoSearch"
ValueFieldName="Id"
TextFieldName="LicencePlate" />
</EditSettings>
</DxGridDataColumn>*@
<DxGridDataColumn FieldName="Price" />
@* <DxGridDataColumn FieldName="LicencePlate" ReadOnly="true" /> *@
</Columns>
</TransferToDriversDetailGrid>
@code {
[Parameter] public Guid ContextId { get; set; }
[Parameter] public ITransferToDriversRelation ParentData { get; set; } = null!;
[Parameter] public EventCallback<TransferToDriver> OnTransferToDriverChanged { get; set; }
private TransferToDriversDetailGrid _transferToDriversGrid = null!;
private LoggerClient<TransferToDriverGridComponent> _logger = null!;
private List<Car> _cars = [];
private List<UserProductMapping> _drivers = [];
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<TransferToDriverGridComponent>(LogWriters.ToArray());
_logger.Info($"DetailGridData: {ParentData.TransferToDrivers.Count}");
//EZ NEM JÓ, FILTER-ELNI KELL A PRODUCT-RA!!! - J.
_cars.AddRange((await AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCarsByProductId, TiamConstClient.TransferProductId))!);
// AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCars, response =>
// {
// _cars.AddRange(response.ResponseData!);
// return Task.CompletedTask;
// }).Forget();
//EZ NEM JÓ, FILTER-ELNI KELL A PRODUCT-RA!!! - J.
_drivers.AddRange(_cars.DistinctBy(x => x.UserProductMappingId).Select(x => x.UserProductMapping));
//_drivers.AddRange((await AdminSignalRClient.GetAllAsync<List<UserProductMapping>>(SignalRTags.GetAllDrivers))!);
// AdminSignalRClient.GetAllAsync<List<UserProductMapping>>(SignalRTags.GetAllDrivers, response =>
// {
// _drivers.AddRange(response.ResponseData!);
// return Task.CompletedTask;
// }).Forget();
await base.OnInitializedAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
// _transferToDriversGrid.BeginUpdate();
// _cars.AddRange((await AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCars))!);
// _transferToDriversGrid.EndUpdate();
// AdminSignalRClient.GetAllAsync<List<Car>>(SignalRTags.GetAllCars, response =>
// {
// if (response is { Status: SignalResponseStatus.Success, ResponseData: not null })
// _cars.AddRange(response.ResponseData);
// return Task.CompletedTask;
// }).Forget();
}
await base.OnAfterRenderAsync(firstRender);
}
private void DataItemChanged(GridDataItemChangedEventArgs<TransferToDriver> args)
{
OnTransferToDriverChanged.InvokeAsync(args.DataItem);
}
private void DataItemSaving(GridEditModelSavingEventArgs args)
{
_logger.Debug($"DataItemSaving");
var transferToDriverEditModel = (TransferToDriver)args.EditModel;
if (transferToDriverEditModel.UserProductMappingId.IsNullOrEmpty() || transferToDriverEditModel.CarId.IsNullOrEmpty() ||
transferToDriverEditModel.LicencePlate.IsNullOrWhiteSpace() || transferToDriverEditModel.Price <= 0)
{
args.Cancel = true;
_logger.Error($"transferToDriverEditModel.UserProductMappingId.IsNullOrEmpty() || transferToDriverEditModel.CarId.IsNullOrEmpty() || transferToDriverEditModel.LicencePlate.IsNullOrWhiteSpace() || transferToDriverEditModel.Price <= 0");
}
if (args.IsNew)
{
transferToDriverEditModel.TransferId = ContextId;
transferToDriverEditModel.Id = Guid.NewGuid();
transferToDriverEditModel.Car = null;
}
}
private void DataItemDeleting(GridDataItemDeletingEventArgs args)
{
_logger.Debug($"DataItemDeleting");
}
void CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{
if (!e.IsNew) return;
var newDriver = (TransferToDriver)e.EditModel;
newDriver.Id = Guid.NewGuid();
newDriver.CarId = Guid.Empty;
newDriver.LicencePlate = "";
newDriver.Car = new Car();
newDriver.Price = 0;
newDriver.TransferId = ParentData.Id;
}
}