146 lines
5.3 KiB
Plaintext
146 lines
5.3 KiB
Plaintext
@using System.Collections.ObjectModel
|
|
@using AyCode.Blazor.Components.Components.Grids
|
|
@using AyCode.Core.Helpers
|
|
@using AyCode.Core.Loggers
|
|
@using AyCode.Utils.Extensions
|
|
@using FruitBank.Common.Dtos
|
|
@using FruitBank.Common.Entities
|
|
@using FruitBankHybrid.Shared.Components.Grids.Shippings
|
|
@using FruitBankHybrid.Shared.Databases
|
|
@using FruitBankHybrid.Shared.Services.Loggers
|
|
@using FruitBankHybrid.Shared.Services.SignalRs
|
|
|
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
|
@inject FruitBankSignalRClient FruitBankSignalRClient
|
|
|
|
@* <GridShippingBase @ref="Grid" Data="Shippings" AutoSaveLayoutName="GridShipping"> *@
|
|
|
|
<MgGridWithInfoPanel ShowInfoPanel="@IsMasterGrid">
|
|
<GridContent>
|
|
<GridShippingBase @ref="Grid" DataSource="Shippings" AutoSaveLayoutName="GridShipping" SignalRClient="FruitBankSignalRClient" Logger="_logger"
|
|
CssClass="@GridCss" ValidationEnabled="false"
|
|
OnGridFocusedRowChanged="Grid_FocusedRowChanged">
|
|
<Columns>
|
|
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
|
|
|
<DxGridDataColumn FieldName="ShippingDate" />
|
|
<DxGridDataColumn FieldName="LicencePlate" />
|
|
|
|
<DxGridDataColumn FieldName="IsAllMeasured" ReadOnly="true" />
|
|
<DxGridDataColumn FieldName="Created" ReadOnly="true" />
|
|
<DxGridDataColumn FieldName="Modified" ReadOnly="true" />
|
|
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
|
</Columns>
|
|
<DetailRowTemplate>
|
|
@if (IsMasterGrid)
|
|
{
|
|
var shipping = ((Shipping)context.DataItem);
|
|
var shippingDocuments = shipping?.ShippingDocuments ?? [];
|
|
|
|
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)">
|
|
<DxTabPage Text="Szállítólevelek">
|
|
@{
|
|
var observableShippingDocuments = new AcObservableCollection<ShippingDocument>(shippingDocuments);
|
|
<GridShippingDocument ShippingDocuments="@observableShippingDocuments" ParentDataItem="@shipping" Partners="@Partners"></GridShippingDocument>
|
|
}
|
|
</DxTabPage>
|
|
|
|
<DxTabPage Text="Szállítmány tételek">
|
|
@{
|
|
var observableShippingItems = new AcObservableCollection<ShippingItem>(shippingDocuments.SelectMany(sd => sd.ShippingItems ?? []));
|
|
<GridShippingItemTemplate ShippingItems="@observableShippingItems" ParentDataItem="@shipping" />
|
|
}
|
|
</DxTabPage>
|
|
</DxTabs>
|
|
}
|
|
</DetailRowTemplate>
|
|
<ToolbarTemplate>
|
|
@if (IsMasterGrid)
|
|
{
|
|
<MgGridToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
|
}
|
|
</ToolbarTemplate>
|
|
</GridShippingBase>
|
|
</GridContent>
|
|
</MgGridWithInfoPanel>
|
|
|
|
@code {
|
|
//[Inject] public required ObjectLock ObjectLock { get; set; }
|
|
[Inject] public required DatabaseClient Database { get; set; }
|
|
|
|
[Parameter] public bool IsMasterGrid { get; set; } = false;
|
|
[Parameter] public AcObservableCollection<Partner>? Partners { get; set; }
|
|
[Parameter] public AcObservableCollection<Shipping>? Shippings { get; set; }
|
|
|
|
const string ExportFileName = "ExportResult";
|
|
string GridSearchText = "";
|
|
bool EditItemsEnabled { get; set; }
|
|
int FocusedRowVisibleIndex { get; set; }
|
|
public GridShippingBase Grid { get; set; }
|
|
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
|
|
|
|
private int _activeTabIndex;
|
|
private LoggerClient<GridShipping> _logger;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
_logger = new LoggerClient<GridShipping>(LogWriters.ToArray());
|
|
await ReloadDataFromDb(false);
|
|
}
|
|
|
|
private async Task ReloadDataFromDb(bool forceReload = false)
|
|
{
|
|
if (!IsMasterGrid) return;
|
|
|
|
using (await ObjectLock.GetSemaphore<Partner>().UseWaitAsync())
|
|
{
|
|
if (Partners == null) Partners = new AcObservableCollection<Partner>(await FruitBankSignalRClient.GetPartners() ?? []);
|
|
else if (Partners.Count == 0 || forceReload)
|
|
{
|
|
Partners.Replace(await FruitBankSignalRClient.GetPartners() ?? []);
|
|
}
|
|
}
|
|
|
|
if (Grid == null) return;
|
|
|
|
using (await ObjectLock.GetSemaphore<Shipping>().UseWaitAsync())
|
|
if (forceReload) await Grid.ReloadDataSourceAsync();
|
|
|
|
if (forceReload) Grid.Reload();
|
|
}
|
|
|
|
async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args)
|
|
{
|
|
if (Grid == null) return;
|
|
|
|
if (Grid.IsEditing() && !Grid.IsEditingNewRow())
|
|
await Grid.SaveChangesAsync();
|
|
|
|
FocusedRowVisibleIndex = args.VisibleIndex;
|
|
EditItemsEnabled = true;
|
|
}
|
|
|
|
protected async Task OnActiveTabChanged(int activeTabIndex)
|
|
{
|
|
_activeTabIndex = activeTabIndex;
|
|
return;
|
|
|
|
// switch (_activeTabIndex)
|
|
// {
|
|
// case 0:
|
|
// if(ProductDtos == null)
|
|
// ProductDtos = (await FruitBankSignalRClient.GetProductDtos() ?? []); //.Where(o => o.HasMeasuringAccess(LoggedInModel.CustomerDto?.Id, LoggedInModel.IsRevisor)).OrderBy(o => o.DateOfReceipt).ToList();
|
|
// break;
|
|
// case 1:
|
|
// if(OrderDtos == null)
|
|
// OrderDtos = (await FruitBankSignalRClient.GetAllOrderDtos() ?? []).OrderByDescending(o => o.Id).ToList(); //.Where(o => o.HasMeasuringAccess(LoggedInModel.CustomerDto?.Id, LoggedInModel.IsRevisor)).OrderBy(o => o.DateOfReceipt).ToList();
|
|
// break;
|
|
// case 2:
|
|
// if (OrderItemDtos == null)
|
|
// OrderItemDtos = (await FruitBankSignalRClient.GetAllOrderItemDtos() ?? []).OrderByDescending(o => o.Id).ToList(); //.Where(o => o.HasMeasuringAccess(LoggedInModel.CustomerDto?.Id, LoggedInModel.IsRevisor)).OrderBy(o => o.DateOfReceipt).ToList();
|
|
// break;
|
|
// }
|
|
}
|
|
}
|
|
|