TourIAm/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridCompo...

162 lines
7.1 KiB
Plaintext

@using AyCode.Blazor.Components.Components.Grids
@using AyCode.Core
@using AyCode.Core.Enums
@using AyCode.Core.Helpers
@using AyCode.Core.Loggers
@using AyCode.Models.Users
@using AyCode.Services.Loggers
@using AyCode.Services.SignalRs
@using TIAM.Core.Consts
@using TIAM.Core.Loggers
@using TIAM.Entities.Drivers
@using TIAM.Entities.Products
@using TIAM.Entities.Transfers
@using TIAM.Entities.Users
@using TIAM.Models.Dtos.Products
@using TIAM.Models.Dtos.Users
@using TIAM.Services
@using TIAMSharedUI.Shared.Components.Grids
@using TIAMWebApp.Shared.Application.Interfaces
@using TIAMWebApp.Shared.Application.Services
@using TIAMWebApp.Shared.Application.Utility
@inject IServiceProviderDataService ServiceProviderDataService
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@inject AdminSignalRClient AdminSignalRClient
<UserProductMappingGrid Logger="_logger"
ContextIds="ContextIds?.Cast<object>().ToArray()"
DataSource="_userProductMapping"
GetAllMessageTag="GetAllTag"
SignalRClient="AdminSignalRClient"
PageSize="10"
ValidationEnabled="false"
CustomizeEditModel="CustomizeEditModel"
EditCanceling="EditCanceling"
EditMode="GridEditMode.EditRow"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
OnGridEditModelSaving="OnGridEditModelSaving"
DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"
OnGridItemChanged="OnGridItemChanged">
<Columns>
<DxGridCommandColumn Width="150" MinWidth="150" Visible="CommandColumnVisible" NewButtonVisible="NewButtonVisible" EditButtonVisible="EditButtonVisible" DeleteButtonVisible="DeleteButtonVisible" FixedPosition="GridColumnFixedPosition.Left" />
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
<DxGridDataColumn FieldName="ProductId" Caption="ServiceId" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
@{
var productNameFieldName = $"{nameof(UserProductMapping.Product)}.{nameof(Product.Name)}";
}
<DxGridDataColumn FieldName="@productNameFieldName" Caption="Service name">
<CellEditTemplate>
@{
var userProductMappingEditModel = (UserProductMapping)context.EditModel;
}
<DxComboBox Data="@_productModelDtoNames" TextFieldName="Name" ValueFieldName="Id" @bind-Value="userProductMappingEditModel.ProductId" ReadOnly="@(!_isNewState!.Value)"
SearchFilterCondition="ListSearchFilterCondition.Contains" SearchMode="ListSearchMode.AutoSearch">
</DxComboBox>
</CellEditTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="UserId" Caption="UserId" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
@{
var userEmailFieldName = $"{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}";
}
<DxGridDataColumn FieldName="@userEmailFieldName" Caption="User email" SortIndex="0">
<CellEditTemplate>
@{
var userProductMappingEditModel = (UserProductMapping)context.EditModel;
}
<DxComboBox Data="@_userModelDtoEmails" TextFieldName="EmailAddress" ValueFieldName="Id" @bind-Value="userProductMappingEditModel.UserId" ReadOnly="@(!_isNewState!.Value)"
SearchFilterCondition="ListSearchFilterCondition.Contains" SearchMode="ListSearchMode.AutoSearch">
</DxComboBox>
</CellEditTemplate>
</DxGridDataColumn>
<DxGridDataColumn FieldName="Permissions" />
<DxGridDataColumn FieldName="Created" DisplayFormat="g" Width="140" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" ReadOnly="true" />
<DxGridDataColumn FieldName="Modified" DisplayFormat="g" Width="140" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" ReadOnly="true" />
</Columns>
<DetailRowTemplate>
@{
<DxTabs>
<DxTabPage Text="Products">
<ProductDetailGridComponent GetAllTag="SignalRTags.GetProductsById" ContextId="((UserProductMapping)context.DataItem).ProductId" />
</DxTabPage>
</DxTabs>
}
</DetailRowTemplate>
</UserProductMappingGrid>
@code {
[Parameter] public bool CommandColumnVisible { get; set; } = true;
[Parameter] public bool NewButtonVisible { get; set; } = true;
[Parameter] public bool EditButtonVisible { get; set; } = true;
[Parameter] public bool DeleteButtonVisible { get; set; } = true;
[Parameter] public IProductRelation ParentData { get; set; } = null!;
[Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllUserProductMappings;
[Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never;
[Parameter] public Guid[]? ContextIds { get; set; }
private bool? _isNewState = null;
private LoggerClient<UserProductMappingGridComponent> _logger;
private List<UserProductMapping> _userProductMapping = []; //TODO: kell a UserProductMappingDetailGridComponent és utána ez is static lehet! - J.
private static List<UserModelDtoEmail> _userModelDtoEmails = [];
private static List<ProductModelDtoName> _productModelDtoNames = [];
protected override async Task OnInitializedAsync()
{
_logger = new LoggerClient<UserProductMappingGridComponent>(LogWriters.ToArray());
await base.OnInitializedAsync();
}
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
AdminSignalRClient.GetAllIntoAsync(_userModelDtoEmails, SignalRTags.GetAllUserModelDtoEmails).Forget();
AdminSignalRClient.GetAllIntoAsync(_productModelDtoNames, SignalRTags.GetAllProductModelDtoNames).Forget();
}
base.OnAfterRender(firstRender);
}
void CustomizeEditModel(GridCustomizeEditModelEventArgs e)
{
_isNewState = e.IsNew;
if (!e.IsNew) return;
// var newProductMapping = new UserProductMapping
// {
// ProductId = Guid.NewGuid(),
// UserId = UserModelDtoDetail.Id,
// Permissions = 1
// };
//e.EditModel = newProductMapping;
}
private void OnGridEditModelSaving(GridEditModelSavingEventArgs e)
{
_isNewState = e.IsNew;
}
private void OnGridItemChanged(GridDataItemChangedEventArgs<UserProductMapping> args)
{
// if (args.TrackingState != TrackingState.Add) return;
// args.CancelStateChangeInvoke = true;
// StateHasChanged();
}
private void EditCanceling(GridEditCancelingEventArgs e)
{
_isNewState = false;
}
}