FruitBankHybridApp/FruitBankHybrid.Shared/Pages/MeasuringOut.razor

224 lines
9.9 KiB
Plaintext

@page "/MeasuringOut"
@using AyCode.Utils.Extensions
@using FruitBank.Common
@using FruitBank.Common.Dtos
@using FruitBank.Common.Entities
@using FruitBank.Common.SignalRs
@using FruitBankHybrid.Shared.Components
@using FruitBankHybrid.Shared.Services
@using Nop.Core.Domain.Orders
<h3>Kimenő mérés</h3>
<DxDialogProvider />
<div style="margin-top: 50px;">
<DxLoadingPanel @bind-Visible="LoadingPanelVisible"
IsContentBlocked="true"
ApplyBackgroundShading="true"
IndicatorAreaVisible="true"
IsContentVisible="true"
IndicatorAnimationType="WaitIndicatorAnimationType.Spin"
Text="Adatok szinkronizálása folyamatban...">
<DxFormLayout CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
<DxFormLayoutItem Caption="Dátum" ColSpanMd="2"
CaptionCssClass="@(SelectedOrder != null && _measuringDates.Where(x => MeasuringService.DaysEqual(x.DateTime, SelectedOrder.DateOfReceiptOrCreated)).All(x => x.IsMeasured) ? "text-success" : "")">
<DxDateEdit CssClass="cw-320"
DisplayFormat="m"
Format="m"
Context="ctxOrderDate"
Date="@(SelectedOrder?.DateOfReceiptOrCreated.Date ?? DateTime.Now.Date)"
CustomDisabledDate="@OnCustomDisabledMeasuringDate"
DateChanged="@((DateTime newValue) => OnMeasuringDateChanged(newValue))"
InputId="deDisabledDates"
PickerDisplayMode="DatePickerDisplayMode.Calendar">
<DayCellTemplate>
@{
var cssClass = GetMeasuringDateCssClassNames(ctxOrderDate);
if (!cssClass.IsNullOrWhiteSpace())
{
<a class="@GetMeasuringDateCssClassNames(ctxOrderDate)">@ctxOrderDate.Day.ToString()</a>
}
else
{
<a>@ctxOrderDate.Day.ToString()</a>
}
}
</DayCellTemplate>
</DxDateEdit>
</DxFormLayoutItem>
<DxFormLayoutItem Caption="Átvétel időpontja:" ColSpanMd="6" CaptionCssClass="@(SelectedOrder?.IsMeasured == true ? "text-success" : "")">
<DxComboBox Data="@SelectedDayOrders"
@bind-Value="@SelectedOrder"
Text="Válasszon időpontot..."
ValueFieldName="@nameof(OrderDto.Id)"
TextFieldName="@nameof(OrderDto.TimeOfReceiptText)"
CssClass="cw-480"
Context="ctxOrder"
DropDownBodyCssClass="dd-body-class"
SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs<OrderDto> args) => OnSelectedOrderChanged(args))"
InputId="cbOrders">
<ItemDisplayTemplate>
<span class="@(ctxOrder.DataItem.IsMeasured ? "text-success" : "")">@ctxOrder.DisplayText</span>
</ItemDisplayTemplate>
<Buttons>
<DxEditorButton IconCssClass="editor-icon editor-icon-add" Text="R" Tooltip="Adatok frissítése..."
Click="() => OnOrdersRefreshClick()" />
</Buttons>
</DxComboBox>
</DxFormLayoutItem>
@if (SelectedOrder == null)
{
<DxFormLayoutItem ColSpanMd="2" />
}
else
{
if (SelectedOrder is { MeasurementOwnerId: 0, IsComplete: false } && HasMeasuringAccess)
{
<DxFormLayoutItem ColSpanMd="2">
<DxButton Enabled="@(HasMeasuringAccess && SelectedOrder?.MeasurementOwnerId == 0)" Visible="(SelectedOrder != null)"
CssClass="w-100"
Text="@(HasMeasuringAccess && SelectedOrder?.MeasurementOwnerId == 0 ? " Indítás" : "Folyamatban...")"
Click="() => OnStartMeasuringClick()" />
</DxFormLayoutItem>
}
else
{
<DxFormLayoutItem ColSpanMd="2" Caption="Indította" CaptionCssClass="@(SelectedOrder?.IsMeasured == true ? " text-success" : "" )">
<DxTextBox Enabled="false" Text="@(LoggedInModel.MeasuringUsers.FirstOrDefault(x => x.Id == SelectedOrder?.MeasurementOwnerId)?.LastName)" />
</DxFormLayoutItem>
}
}
@* <DxFormLayoutItem ColSpanMd="1"></DxFormLayoutItem> *@
@if (SelectedOrder != null && LoggedInModel.IsRevisor)
{
var isCompleteOrder = SelectedOrder.IsComplete;
<DxFormLayoutItem Caption="Revizor:" ColSpanMd="2" CaptionCssClass="@(isCompleteOrder ? "text-success" : "")">
<DxButton Text="@(isCompleteOrder ? "Jóváhagyva" : "Jóváhagyás")" Enabled="@(!isCompleteOrder && SelectedOrder.IsMeasured)" CssClass="w-100"
Click="() => OnMeasuringAuditorClick()" />
</DxFormLayoutItem>
}
</DxFormLayout>
@if (SelectedOrder == null || LoadingPanelVisible)
{
}
else if (!HasMeasuringAccess)
{
<div style="margin-top: 50px;">
<H3>Mások végzik a mérést!</H3>
</div>
}
else
{
//Átvétel dátuma október 23. [AUDITED] 15:51 - Vegetable Kft. Rendelés azonosító: #8
<div style="margin-top: 50px;">
<h4 style="margin-bottom: 30px;" class="@(SelectedOrder?.IsMeasured == true ? "text-success" : "")">
Rendelés azonosító: #@(SelectedOrder?.CustomOrderNumber)
</h4>
<DxAccordion Data="@SelectedOrder?.OrderItemDtos" Enabled="@(HasMeasuringAccess && SelectedOrder?.MeasurementOwnerId > 0 && !(SelectedOrder?.IsComplete ?? false))"
ExpandMode="AccordionExpandMode.SingleOrNone"
ExpandCollapseAction="AccordionExpandCollapseAction.ExpandButtonClick"
AnimationType="LayoutAnimationType.Slide">
<DataMappings>
<DxAccordionDataMapping Text="ProductName"></DxAccordionDataMapping>
@* <DxAccordionDataMapping Text="OrderItemId" Level="1"></DxAccordionDataMapping> *@
</DataMappings>
<ItemHeaderTextTemplate>
@{
if (context.Level == 0)
{
var cssClass = "text-danger";
var selectedOrderItemDto = (OrderItemDto)(context.DataItem);
var trayQuantity = selectedOrderItemDto.TrayQuantity; //selectedOrderItemDto.OrderItemPallets.Where(x => x.IsMeasured).Sum(x => x.TrayQuantity);
var isValid = selectedOrderItemDto.IsValidMeasuringValues();
var isValidAndMeasured = isValid && selectedOrderItemDto.IsMeasuredAndValid(); // && selectedOrderItemDto.;
if (isValidAndMeasured) cssClass = "text-success";
else if (isValid) cssClass = string.Empty;
<h5 class="@cssClass">@($"{selectedOrderItemDto.ProductName} - [{trayQuantity}/{selectedOrderItemDto.Quantity} rekesz, {(selectedOrderItemDto.IsMeasurable ? "net.súly: " + selectedOrderItemDto.NetWeight + "kg." : "nem mérendő!")}]")</h5>
}
}
</ItemHeaderTextTemplate>
<ItemContentTemplate>
@{
if (context.Level == 0)
{
//var orderItemPallet = ((OrderItemPallet)(context.DataItem));
//text = ((OrderItemPallet)(context.DataItem)).OrderItemId.ToString() + " dfgdfsg";
//var selectedOrderItemDto = SelectedOrder!.OrderItemDtos.First(x => x.Id == orderItemPallet.OrderItemId);
var selectedOrderItemDto = (OrderItemDto)(context.DataItem);
<DxFormLayout Context="ctxFormLayout" Data="@selectedOrderItemDto" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
<DxFormLayoutItem Context="ctxFormLayoutItem" ColSpanMd="12">
@for (var index = 0; index < (selectedOrderItemDto?.OrderItemPallets?.Count ?? 0); index++)
{
var localI = index + 1;
var currentOrderItemPallet = selectedOrderItemDto!.OrderItemPallets![index];
<PalletItemComponent IsMeasurable="@selectedOrderItemDto.IsMeasurable"
MeasuringIndex="@localI"
PalletItem="@currentOrderItemPallet"
ProductId="@selectedOrderItemDto.ProductId"
MaxTrayQuantity="@selectedOrderItemDto.Quantity"
AddOrUpdateSignalRTag="SignalRTags.AddOrUpdateMeasuredOrderItemPallet"
OnPalletItemSaved="pallet => OnOrderItemPalletSaved(pallet, selectedOrderItemDto)"
OnPalletItemValueChanged="pallet => OnOrderItemPalletValueChanged(pallet, selectedOrderItemDto)">
</PalletItemComponent>
}
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="2" BeginRow="true">
<DxButton Text="Új sor" Click="() => AddNewPalletItemClick(selectedOrderItemDto)" CssClass="w-100"
Enabled="@(selectedOrderItemDto.OrderItemPallets[^1].Id > 0)" />
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="3">
<DxButton Text="Utolsó sor törlése" Click="() => LastPalletItemDeleteClick(selectedOrderItemDto)" CssClass="w-100"
Enabled="@(selectedOrderItemDto.OrderItemPallets.Count > 1 && selectedOrderItemDto.OrderItemPallets[^1].Id <= 0)" />
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="7" />
<DxFormLayoutItem Context="vfdfgfd" ColSpanMd="12" BeginRow="true">
<DxFormLayout CssClass="w-100" Context="dfcadsc">
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false"><strong>TOTAL:</strong></DxFormLayoutItem>
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false" />
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Rekesz: @(selectedOrderItemDto.TrayQuantity) db</strong></DxFormLayoutItem>
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Br: @(selectedOrderItemDto.GrossWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false"><strong>Net: @(selectedOrderItemDto.NetWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false" />
</DxFormLayout>
</DxFormLayoutItem>
@if (!_errorText.IsNullOrWhiteSpace())
{
<DxFormLayoutItem Context="ctxFromLayoutItemError" ColSpanMd="12" BeginRow="true">
<text>HIBA! @_errorText</text>
</DxFormLayoutItem>
//_errorText = string.Empty;
}
</DxFormLayout>
<div style="margin-bottom: 20px;"></div>
}
}
</ItemContentTemplate>
</DxAccordion>
</div>
}
</DxLoadingPanel>
</div>
@code {
}