FruitBankHybridApp/FruitBankHybrid.Shared/Components/GridShipping.razor

182 lines
6.8 KiB
Plaintext

@using AyCode.Utils.Extensions
@using FruitBank.Common.Dtos
@using FruitBank.Common.Entities
@using FruitBankHybrid.Shared.Databases
@using FruitBankHybrid.Shared.Services.SignalRs
@inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="Grid" Data="Shippings" IsMasterGrid="IsMasterGrid" AutoSaveLayoutName="GridShipping"
EditOnKeyPress="true"
ValidationEnabled="false"
EditModelSaving="Grid_EditModelSaving">
<Columns>
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" />
<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?.ToList() ?? [];
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)">
<DxTabPage Text="Szállítólevelek">
@{
<GridShippingDocument IsMasterGrid="false" ShippingDocuments="shippingDocuments"></GridShippingDocument>
}
</DxTabPage>
<DxTabPage Text="Szállítmány tételek">
<GridShippingItemTemplate ShippingItems="shippingDocuments?.SelectMany(sd => sd.ShippingItems ?? [])?.ToList() ?? []" IsMasterGrid="false" />
</DxTabPage>
</DxTabs>
}
</DetailRowTemplate>
<ToolbarTemplate>
<DxToolbar ItemRenderStyleMode="ToolbarRenderStyleMode.Plain">
<DxToolbarItem Text="New" Click="NewItem_Click" IconCssClass="grid-toolbar-new" />
<DxToolbarItem Text="Edit" Click="EditItem_Click" IconCssClass="grid-toolbar-edit" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Delete" Click="DeleteItem_Click" IconCssClass="grid-toolbar-delete" Enabled="EditItemsEnabled" />
<DxToolbarItem Text="Column Chooser" BeginGroup="true" Click="ColumnChooserItem_Click" IconCssClass="grid-toolbar-column-chooser" />
<DxToolbarItem Text="Export" IconCssClass="grid-toolbar-export">
<Items>
<DxToolbarItem Text="To CSV" Click="ExportCsvItem_Click" />
<DxToolbarItem Text="To XLSX" Click="ExportXlsxItem_Click" />
<DxToolbarItem Text="To XLS" Click="ExportXlsItem_Click" />
<DxToolbarItem Text="To PDF" Click="ExportPdfItem_Click" />
</Items>
</DxToolbarItem>
@* <DxToolbarItem BeginGroup="true">
<Template Context="toolbar_item_context">
<DxSearchBox @bind-Text="GridSearchText"
BindValueMode="BindValueMode.OnInput"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"
aria-label="Search" />
</Template>
</DxToolbarItem>
*@ </DxToolbar>
</ToolbarTemplate>
<GroupSummary>
<DxGridSummaryItem SummaryType="GridSummaryItemType.Sum"
FieldName="Quantity"
FooterColumnName="Quantity" />
<DxGridSummaryItem SummaryType="GridSummaryItemType.Sum"
FieldName="NetWeight"
FooterColumnName="NetWeight" />
<DxGridSummaryItem SummaryType="GridSummaryItemType.Sum"
FieldName="PriceInclTax"
FooterColumnName="PriceInclTax" />
</GroupSummary>
</MgGridBase>
@code {
//[Inject] public required ObjectLock ObjectLock { get; set; }
[Inject] public required DatabaseClient Database { get; set; }
[Parameter] public bool IsMasterGrid { get; set; } = false;
//[Parameter] public OrderDto? OrderDto { get; set; }
[Parameter] public List<Shipping>? Shippings{ get; set; }
const string ExportFileName = "ExportResult";
string GridSearchText = "";
bool EditItemsEnabled { get; set; }
int FocusedRowVisibleIndex { get; set; }
public MgGridBase Grid { get; set; }
private int _activeTabIndex;
protected override async Task OnInitializedAsync()
{
await ReloadDataFromDb(false);
}
private async Task ReloadDataFromDb(bool forceReload = false)
{
if (!IsMasterGrid) return;
//ProductDtos ??= await FruitBankSignalRClient.GetProductDtos() ?? [];
//ProductDtos ??= await Database.ProductDtoTable.LoadDataAsync(true);
using (await ObjectLock.GetSemaphore<Shipping>().UseWaitAsync())
{
if (Shippings == null) Shippings = await FruitBankSignalRClient.GetShippings() ?? [];
else if (Shippings.Count == 0 || forceReload)
{
Shippings.Clear();
Shippings.AddRange(await FruitBankSignalRClient.GetShippings() ?? []);
}
}
if (forceReload) Grid?.Reload();
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) {
// await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
// await LoadGridDataAsync();
// if(Data.Length == 0)
// UpdateEditItemsEnabled(false);
}
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) {
// if(e.IsNew) {
// await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel);
// UpdateEditItemsEnabled(true);
// } else
// await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel);
// await LoadGridDataAsync();
}
async Task NewItem_Click() {
await Grid.StartEditNewRowAsync();
}
async Task EditItem_Click() {
await Grid.StartEditRowAsync(FocusedRowVisibleIndex);
}
void DeleteItem_Click() {
Grid.ShowRowDeleteConfirmation(FocusedRowVisibleIndex);
}
void ColumnChooserItem_Click(ToolbarItemClickEventArgs e) {
Grid.ShowColumnChooser();
}
async Task ExportXlsxItem_Click() {
await Grid.ExportToXlsxAsync(ExportFileName);
}
async Task ExportXlsItem_Click() {
await Grid.ExportToXlsAsync(ExportFileName);
}
async Task ExportCsvItem_Click() {
await Grid.ExportToCsvAsync(ExportFileName);
}
async Task ExportPdfItem_Click() {
await Grid.ExportToPdfAsync(ExportFileName);
}
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;
// }
}
}