Merge branch 'main' of https://git.aycode.com/Adam/FruitBankHybridApp
This commit is contained in:
commit
e4cbd6f723
|
|
@ -61,6 +61,7 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall
|
|||
|
||||
public virtual MeasuringStatus MeasuringStatus => IsMeasured ? MeasuringStatus.Finnished : Id > 0 ? MeasuringStatus.Started : MeasuringStatus.NotStarted;
|
||||
|
||||
public void SetForeignKey(int foreignKey) => ForeignItemId = foreignKey;
|
||||
public virtual double CalculateNetWeight() => double.Round(GrossWeight - PalletWeight - (TareWeight * TrayQuantity), 1);
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ public static class FruitBankConstClient
|
|||
public static string DefaultLocale = "en-US";
|
||||
|
||||
public static string BaseUrl = "https://localhost:59579"; //FrutiBank nop
|
||||
|
||||
|
||||
#if RELEASE
|
||||
// public static string BaseUrl = "https://shop.fruitbank.hu"; //FrutiBank nop
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ public interface IFruitBankDataControllerCommon
|
|||
|
||||
#region ShippingItem
|
||||
public Task<List<ShippingItem>?> GetShippingItems();
|
||||
public Task<List<ShippingItem>?> GetShippingItemsByPartnerId(int partnerId);
|
||||
public Task<List<ShippingItem>?> GetShippingItemsByShippingId(int shippingId);
|
||||
public Task<List<ShippingItem>?> GetShippingItemsByDocumentId(int shippingDocumentId);
|
||||
public Task<ShippingItem?> GetShippingItemById(int id);
|
||||
|
|
@ -36,6 +37,8 @@ public interface IFruitBankDataControllerCommon
|
|||
#endregion ShippingItem
|
||||
|
||||
#region ShippingItemPallet
|
||||
|
||||
public Task<List<ShippingItemPallet>?> GetShippingItemPallets();
|
||||
public Task<ShippingItemPallet?> AddShippingItemPallet(ShippingItemPallet shippingItemPallet);
|
||||
public Task<ShippingItemPallet?> UpdateShippingItemPallet(ShippingItemPallet shippingItemPallet);
|
||||
public Task<ShippingItemPallet?> AddOrUpdateMeasuredShippingItemPallet(ShippingItemPallet shippingItemPallet);
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ public class SignalRTags : AcSignalRTags
|
|||
public const int GetShippingItemById = 51;
|
||||
public const int GetShippingItemsByDocumentId = 52;
|
||||
public const int GetShippingItemsByShippingId = 53;
|
||||
public const int GetShippingItemsByPartnerId = 54;
|
||||
public const int AddShippingItem = 55;
|
||||
public const int UpdateShippingItem = 56;
|
||||
public const int UpdateMeasuredShippingItem = 57;
|
||||
|
|
@ -47,6 +48,7 @@ public class SignalRTags : AcSignalRTags
|
|||
public const int GetAllMeasuringProductDtos = 82;
|
||||
public const int GetMeasuringProductDtoById = 83;
|
||||
|
||||
public const int GetShippingItemPallets = 94;
|
||||
public const int AddShippingItemPallet = 95;
|
||||
public const int UpdateShippingItemPallet = 96;
|
||||
public const int AddOrUpdateMeasuredShippingItemPallet = 97;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" />
|
||||
<DxGridDataColumn FieldName="CustomerId" />
|
||||
|
||||
<DxGridDataColumn FieldName="@("Customer.Company")" Caption="Company" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="OrderStatus" />
|
||||
<DxGridDataColumn FieldName="IsMeasurable" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="MeasuringStatus" ReadOnly="true" />
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" />
|
||||
<DxGridDataColumn FieldName="OrderId" />
|
||||
<DxGridDataColumn FieldName="@("OrderDto.Customer.Company")" Caption="Company" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="ProductId">
|
||||
<EditSettings>
|
||||
<DxComboBoxSettings Data="ProductDtos"
|
||||
|
|
@ -47,6 +48,7 @@
|
|||
<DxGridDataColumn FieldName="AverageWeightDifference" ReadOnly="true" Visible="false" Caption="AvgWeightDiff" />
|
||||
<DxGridDataColumn FieldName="AverageWeightIsValid" ReadOnly="true" Caption="AvgWeightValid" />
|
||||
<DxGridDataColumn FieldName="IsAudited" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="@("OrderDto.CreatedOnUtc")" Caption="Rendelés ideje" ReadOnly="true" />
|
||||
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
||||
</Columns>
|
||||
<DetailRowTemplate>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
<DxGridDataColumn FieldName="IncomingQuantity" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="NetWeight" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="IsMeasurable" />
|
||||
<DxGridDataColumn FieldName="Tare" Caption="Tára súly" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="AverageWeight" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="AverageWeightTreshold" ReadOnly="true" />
|
||||
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
ParentDataItem="@ParentDataItem" Logger="_logger" ValidationEnabled="false" EditMode="GridEditMode.EditRow" FocusedRowChanged="Grid_FocusedRowChanged">
|
||||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="PartnerId" Caption="Partner">
|
||||
<DxGridDataColumn FieldName="PartnerId" Caption="Partner" Visible="@(!ParentDataItemIsPartner)" ReadOnly="@ParentDataItemIsPartner">
|
||||
<EditSettings>
|
||||
<DxComboBoxSettings Data="Partners"
|
||||
ValueFieldName="Id"
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
[Inject] public required LoggedInModel LoggedInModel { get; set; }
|
||||
|
||||
[Parameter] public AcObservableCollection<Shipping>? Shippings { get; set; }
|
||||
[Parameter] public List<Partner>? Partners { get; set; }
|
||||
[Parameter] public AcObservableCollection<Partner>? Partners { get; set; }
|
||||
[Parameter] public AcObservableCollection<ShippingDocument>? ShippingDocuments { get; set; }
|
||||
|
||||
[Parameter] public Func<List<Partner>?, Task>? OnUploadedFileParsed { get; set; }
|
||||
|
|
@ -149,6 +149,7 @@
|
|||
|
||||
public bool IsMasterGrid => ParentDataItem == null;
|
||||
public bool ParentDataItemIsShipping => (ParentDataItem is Shipping);
|
||||
public bool ParentDataItemIsPartner => (ParentDataItem is Partner);
|
||||
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
|
||||
|
||||
|
||||
|
|
@ -172,31 +173,37 @@
|
|||
|
||||
private async Task ReloadDataFromDb(bool forceReload = false)
|
||||
{
|
||||
using (await ObjectLock.GetSemaphore<Partner>().UseWaitAsync())
|
||||
if (!ParentDataItemIsPartner)
|
||||
{
|
||||
if (Partners == null) Partners = await FruitBankSignalRClient.GetPartners() ?? [];
|
||||
else if (Partners.Count == 0 || forceReload)
|
||||
using (await ObjectLock.GetSemaphore<Partner>().UseWaitAsync())
|
||||
{
|
||||
Partners.Clear();
|
||||
Partners.AddRange(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
if (Partners == null) Partners = new AcObservableCollection<Partner>(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
else if (Partners.Count == 0 || forceReload)
|
||||
{
|
||||
Partners.Replace(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ParentDataItemIsShipping)
|
||||
{
|
||||
using (await ObjectLock.GetSemaphore<Shipping>().UseWaitAsync())
|
||||
{
|
||||
if (Shippings == null) Shippings = new AcObservableCollection<Shipping>(await FruitBankSignalRClient.GetShippings() ?? []);
|
||||
else if (Shippings.Count == 0 || forceReload)
|
||||
{
|
||||
Shippings.Replace(await FruitBankSignalRClient.GetShippings() ?? []);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsMasterGrid)
|
||||
{
|
||||
if (Shippings == null && ParentDataItem is Shipping shippingParent) Shippings = [shippingParent];
|
||||
if (Partners == null && ParentDataItem is Partner partnerParent) Partners = [partnerParent];
|
||||
return;
|
||||
}
|
||||
|
||||
using (await ObjectLock.GetSemaphore<Shipping>().UseWaitAsync())
|
||||
{
|
||||
if (Shippings == null) Shippings = new AcObservableCollection<Shipping>(await FruitBankSignalRClient.GetShippings() ?? []);
|
||||
else if (Shippings.Count == 0 || forceReload)
|
||||
{
|
||||
Shippings.Replace(await FruitBankSignalRClient.GetShippings() ?? []);
|
||||
}
|
||||
}
|
||||
|
||||
if (Grid == null) return;
|
||||
|
||||
using (await ObjectLock.GetSemaphore<ShippingDocument>().UseWaitAsync())
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
ShippingItemPallets.Clear();
|
||||
|
||||
//TODO: A ShippingItemPallet-eknek SignalR Endpoint! - J.
|
||||
ShippingItemPallets.AddRange((await FruitBankSignalRClient.GetShippingItems())?.SelectMany(si => si.ShippingItemPallets ?? []) ?? []);
|
||||
ShippingItemPallets.AddRange(await FruitBankSignalRClient.GetShippingItemPallets() ?? []);
|
||||
|
||||
if (ShippingItemPallets.Any(sip => sip.ShippingItem?.ProductDto != null))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,113 @@
|
|||
@using System.Collections.ObjectModel
|
||||
@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.Components.Toolbars
|
||||
@using FruitBankHybrid.Shared.Databases
|
||||
@using FruitBankHybrid.Shared.Services.Loggers
|
||||
@using FruitBankHybrid.Shared.Services.SignalRs
|
||||
|
||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||
@inject FruitBankSignalRClient FruitBankSignalRClient
|
||||
|
||||
<GridPartnerBase @ref="Grid" DataSource="Partners" AutoSaveLayoutName="GridPartner" SignalRClient="FruitBankSignalRClient" Logger="_logger"
|
||||
CssClass="@GridCss" ValidationEnabled="false"
|
||||
FocusedRowChanged="Grid_FocusedRowChanged">
|
||||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
||||
|
||||
<DxGridDataColumn FieldName="Name" />
|
||||
<DxGridDataColumn FieldName="TaxId" />
|
||||
<DxGridDataColumn FieldName="CertificationNumber" />
|
||||
<DxGridDataColumn FieldName="PostalCode" />
|
||||
<DxGridDataColumn FieldName="State" />
|
||||
<DxGridDataColumn FieldName="County" />
|
||||
<DxGridDataColumn FieldName="City" />
|
||||
<DxGridDataColumn FieldName="Street" />
|
||||
|
||||
<DxGridDataColumn FieldName="Created" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="Modified" ReadOnly="true" />
|
||||
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
||||
</Columns>
|
||||
<DetailRowTemplate>
|
||||
@if (IsMasterGrid)
|
||||
{
|
||||
var partner = ((Partner)context.DataItem);
|
||||
var shippingDocuments = partner?.ShippingDocuments ?? [];
|
||||
|
||||
<DxTabs>
|
||||
<DxTabPage Text="Szállítólevelek">
|
||||
@{
|
||||
var observableShippingDocuments = new AcObservableCollection<ShippingDocument>(shippingDocuments);
|
||||
<GridShippingDocument ShippingDocuments="@observableShippingDocuments" ParentDataItem="@partner" 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="@partner" />
|
||||
}
|
||||
</DxTabPage>
|
||||
</DxTabs>
|
||||
}
|
||||
</DetailRowTemplate>
|
||||
<ToolbarTemplate>
|
||||
@if (IsMasterGrid)
|
||||
{
|
||||
<FruitBankToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||
}
|
||||
</ToolbarTemplate>
|
||||
</GridPartnerBase>
|
||||
|
||||
@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 GridPartnerBase Grid { get; set; }
|
||||
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
|
||||
|
||||
private int _activeTabIndex;
|
||||
private LoggerClient<GridPartnerBase> _logger;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_logger = new LoggerClient<GridPartnerBase>(LogWriters.ToArray());
|
||||
await ReloadDataFromDb(false);
|
||||
}
|
||||
|
||||
private async Task ReloadDataFromDb(bool forceReload = false)
|
||||
{
|
||||
if (!IsMasterGrid) return;
|
||||
|
||||
if (Grid == null) return;
|
||||
|
||||
using (await ObjectLock.GetSemaphore<Partner>().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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
using AyCode.Core.Interfaces;
|
||||
using DevExpress.Blazor;
|
||||
using FruitBank.Common.Entities;
|
||||
using FruitBank.Common.Interfaces;
|
||||
using FruitBank.Common.SignalRs;
|
||||
using FruitBankHybrid.Shared.Pages;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace FruitBankHybrid.Shared.Components.Grids.Partners;
|
||||
|
||||
public class GridPartnerBase: FruitBankGridBase<Partner>, IGrid
|
||||
{
|
||||
private bool _isFirstInitializeParameterCore;
|
||||
private bool _isFirstInitializeParameters;
|
||||
|
||||
public GridPartnerBase() : base()
|
||||
{
|
||||
GetAllMessageTag = SignalRTags.GetPartners;
|
||||
AddMessageTag = SignalRTags.AddPartner;
|
||||
UpdateMessageTag = SignalRTags.UpdatePartner;
|
||||
|
||||
//RemoveMessageTag = SignalRTags.;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
base.OnParametersSet();
|
||||
|
||||
if (!_isFirstInitializeParameters)
|
||||
{
|
||||
//if (!IsMasterGrid && (ContextIds == null || ContextIds.Length == 0))
|
||||
//{
|
||||
// ContextIds = [ParentDataItem!.Id];
|
||||
// GetAllMessageTag = SignalRTags.GetShippingItemsByDocumentId;
|
||||
//}
|
||||
|
||||
_isFirstInitializeParameters = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task SetParametersAsyncCore(ParameterView parameters)
|
||||
{
|
||||
await base.SetParametersAsyncCore(parameters);
|
||||
|
||||
if (!_isFirstInitializeParameterCore)
|
||||
{
|
||||
//if (!IsMasterGrid && (ContextIds == null || ContextIds.Length == 0))
|
||||
//{
|
||||
// ContextIds = [ParentDataItem!.Id];
|
||||
// GetAllMessageTag = SignalRTags.GetShippingItemsByDocumentId;
|
||||
//}
|
||||
|
||||
//ShowFilterRow = true;
|
||||
//ShowGroupPanel = true;
|
||||
//AllowSort = false;
|
||||
|
||||
//etc...
|
||||
|
||||
_isFirstInitializeParameterCore = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Core.Interfaces;
|
||||
using AyCode.Utils.Extensions;
|
||||
using DevExpress.Blazor;
|
||||
using FruitBank.Common.Entities;
|
||||
using FruitBank.Common.Interfaces;
|
||||
|
|
@ -34,12 +35,19 @@ public class GridShippingItemBase : FruitBankGridBase<ShippingItem>, IGrid
|
|||
{
|
||||
case IShippingDocument:
|
||||
GetAllMessageTag = SignalRTags.GetShippingItemsByDocumentId;
|
||||
|
||||
break;
|
||||
case IShipping:
|
||||
AddMessageTag = 0;//SignalRTags.None;
|
||||
|
||||
GetAllMessageTag = SignalRTags.GetShippingItemsByShippingId;
|
||||
|
||||
break;
|
||||
case IPartner:
|
||||
AddMessageTag = 0;//SignalRTags.None;
|
||||
GetAllMessageTag = SignalRTags.GetShippingItemsByPartnerId;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,17 +58,6 @@
|
|||
<FruitBankToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||
}
|
||||
</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>
|
||||
</GridShippingBase>
|
||||
|
||||
@code {
|
||||
|
|
@ -76,7 +65,7 @@
|
|||
[Inject] public required DatabaseClient Database { get; set; }
|
||||
|
||||
[Parameter] public bool IsMasterGrid { get; set; } = false;
|
||||
[Parameter] public List<Partner>? Partners { get; set; }
|
||||
[Parameter] public AcObservableCollection<Partner>? Partners { get; set; }
|
||||
[Parameter] public AcObservableCollection<Shipping>? Shippings { get; set; }
|
||||
|
||||
const string ExportFileName = "ExportResult";
|
||||
|
|
@ -101,11 +90,10 @@
|
|||
|
||||
using (await ObjectLock.GetSemaphore<Partner>().UseWaitAsync())
|
||||
{
|
||||
if (Partners == null) Partners = await FruitBankSignalRClient.GetPartners() ?? [];
|
||||
if (Partners == null) Partners = new AcObservableCollection<Partner>(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
else if (Partners.Count == 0 || forceReload)
|
||||
{
|
||||
Partners.Clear();
|
||||
Partners.AddRange(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
Partners.Replace(await FruitBankSignalRClient.GetPartners() ?? []);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Loggers;
|
||||
using DevExpress.Blazor;
|
||||
using FruitBank.Common.Dtos;
|
||||
using FruitBank.Common.Entities;
|
||||
using FruitBank.Common.Helpers;
|
||||
using FruitBank.Common.Interfaces;
|
||||
|
|
@ -198,15 +199,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
|
||||
for (var i = shippingItem.ShippingItemPallets.Count; i < shippingItem.MeasuringCount; i++)
|
||||
{
|
||||
shippingItem.ShippingItemPallets.Add(new ShippingItemPallet
|
||||
{
|
||||
ShippingItemId = shippingItem.Id,
|
||||
PalletWeight = shippingItem.Pallet?.Weight ?? 0,
|
||||
TareWeight = shippingItem.ProductDto?.Tare ?? 0,
|
||||
|
||||
CreatorId = LoggedInModel.CustomerDto?.Id,
|
||||
ModifierId = LoggedInModel.CustomerDto?.Id
|
||||
});
|
||||
shippingItem.ShippingItemPallets.Add(MeasurementService.CreateNewShippingItemPallet(shippingItem, LoggedInModel.CustomerDto));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@page "/OrdersAdmin"
|
||||
@using FruitBank.Common.Dtos
|
||||
@using FruitBank.Common.Models
|
||||
@using FruitBankHybrid.Shared.Components
|
||||
@using FruitBankHybrid.Shared.Databases
|
||||
<h3>Rendelések - Adminisztrátor</h3>
|
||||
|
|
@ -15,10 +16,12 @@
|
|||
Text="Adatok szinkronizálása folyamatban...">
|
||||
|
||||
@* @bind-ActiveTabIndex="@ActiveTabIndex" *@
|
||||
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)" RenderMode="TabsRenderMode.AllTabs" AllowTabReorder="true">
|
||||
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)" RenderMode="TabsRenderMode.OnDemand" AllowTabReorder="true">
|
||||
<DxTabPage Text="Termékek">
|
||||
<GridProductDtoTemplate ProductDtos="ProductDtos" IsMasterGrid="true"></GridProductDtoTemplate>
|
||||
</DxTabPage>
|
||||
<DxTabPage Text="Vásárlók" Visible="@(LoggedInModel.IsDeveloper)">
|
||||
</DxTabPage>
|
||||
<DxTabPage Text="Rendelések">
|
||||
<GridDetailOrderDto OrderDtos="OrderDtos" IsMasterGrid="true"></GridDetailOrderDto>
|
||||
</DxTabPage>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
@using FruitBank.Common.Dtos
|
||||
@using FruitBank.Common.Entities
|
||||
@using FruitBankHybrid.Shared.Components
|
||||
@using FruitBankHybrid.Shared.Components.Grids.Partners
|
||||
@using FruitBankHybrid.Shared.Components.Grids.Shippings
|
||||
@using FruitBankHybrid.Shared.Databases
|
||||
<h3>Szállítmányok - Adminisztrátor</h3>
|
||||
|
|
@ -21,6 +22,9 @@
|
|||
<DxTabPage Text="Termékek">
|
||||
<GridProductDtoTemplate @ref="gridProductDtoTemplate" IsMasterGrid="true"></GridProductDtoTemplate>
|
||||
</DxTabPage>
|
||||
<DxTabPage Text="Beszállítók" Visible="@(LoggedInModel.IsDeveloper)">
|
||||
<GridPartner @ref="gridPartner" Partners="@Partners" IsMasterGrid="true"></GridPartner>
|
||||
</DxTabPage>
|
||||
<DxTabPage Text="Szállítmányok">
|
||||
<GridShipping @ref="gridShipping" Shippings="@Shippings" Partners="@Partners" IsMasterGrid="true"></GridShipping>
|
||||
</DxTabPage>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ using FruitBank.Common.Models;
|
|||
using FruitBankHybrid.Shared.Components;
|
||||
using FruitBankHybrid.Shared.Components.Grids.ShippingItems;
|
||||
using FruitBankHybrid.Shared.Components.Grids.Shippings;
|
||||
using FruitBankHybrid.Shared.Components.Grids.Partners;
|
||||
using FruitBankHybrid.Shared.Databases;
|
||||
using FruitBankHybrid.Shared.Services.Loggers;
|
||||
using FruitBankHybrid.Shared.Services.SignalRs;
|
||||
|
|
@ -27,6 +28,7 @@ public partial class ShippingsAdmin : ComponentBase
|
|||
[Inject] public required DatabaseClient Database { get; set; }
|
||||
|
||||
private GridProductDtoTemplate gridProductDtoTemplate;
|
||||
private GridPartner gridPartner;
|
||||
private GridShipping gridShipping;
|
||||
private GridShippingDocument gridShippingDocument;
|
||||
private GridShippingItemTemplate gridShippingItemTemplate;
|
||||
|
|
@ -36,7 +38,7 @@ public partial class ShippingsAdmin : ComponentBase
|
|||
public AcObservableCollection<ShippingDocument> ShippingDocuments { get; set; } = [];
|
||||
public AcObservableCollection<ShippingItem> ShippingItems { get; set; } = [];
|
||||
public List<ShippingItemPallet> ShippingItemPallets { get; set; } = [];
|
||||
public List<Partner> Partners { get; set; } = [];
|
||||
public AcObservableCollection<Partner> Partners { get; set; } = [];
|
||||
|
||||
public bool AutoCollapseDetailRow { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -63,21 +63,39 @@ public class MeasurementService(IEnumerable<IAcLogWriterClientBase> logWriters)
|
|||
return string.Empty;
|
||||
}
|
||||
|
||||
public static ShippingItemPallet CreateNewShippingItemPallet(ShippingItem shippingItem, CustomerDto? customerDto)
|
||||
{
|
||||
var shippingItemPallet = CreatePalletItem<ShippingItemPallet>(shippingItem.Id, shippingItem.ProductDto?.Tare, shippingItem.IsMeasurable, customerDto);
|
||||
|
||||
shippingItemPallet.ShippingItem = shippingItem;
|
||||
shippingItemPallet.PalletWeight = shippingItem.IsMeasurable ? shippingItem.Pallet?.Weight ?? 0 : 0;
|
||||
|
||||
return shippingItemPallet;
|
||||
}
|
||||
|
||||
public static OrderItemPallet CreateNewOrderItemPallet(OrderItemDto orderItemDto, CustomerDto? customerDto)
|
||||
{
|
||||
var orderItemPallet = new OrderItemPallet
|
||||
{
|
||||
OrderItemId = orderItemDto.Id,
|
||||
OrderItemDto = orderItemDto,
|
||||
TareWeight = orderItemDto.ProductDto?.Tare ?? 0,
|
||||
|
||||
CreatorId = customerDto?.Id,
|
||||
ModifierId = customerDto?.Id
|
||||
};
|
||||
var orderItemPallet = CreatePalletItem<OrderItemPallet>(orderItemDto.Id, orderItemDto.ProductDto?.Tare, orderItemDto.IsMeasurable, customerDto);
|
||||
|
||||
orderItemPallet.OrderItemDto = orderItemDto;
|
||||
return orderItemPallet;
|
||||
}
|
||||
|
||||
private static TPalletItem CreatePalletItem<TPalletItem>(int foreignKey, double? tare, bool isMeasurable, CustomerDto? customerDto) where TPalletItem : MeasuringItemPalletBase
|
||||
{
|
||||
var palletItem = Activator.CreateInstance<TPalletItem>();
|
||||
|
||||
palletItem.SetForeignKey(foreignKey);
|
||||
|
||||
//palletItem.PalletWeight = isMeasurable ? orderItemDto.Pallet?.Weight ?? 0 : 0;
|
||||
palletItem.TareWeight = isMeasurable ? tare ?? 0 : 0;
|
||||
|
||||
palletItem.CreatorId = customerDto?.Id;
|
||||
palletItem.ModifierId = customerDto?.Id;
|
||||
|
||||
return palletItem;
|
||||
}
|
||||
|
||||
public static bool IsCustomItemPalletMeasuredAndValid(IMeasuringItemPalletBase customItemPallet, bool isMeasurable)
|
||||
=> customItemPallet.IsMeasuredAndValid(isMeasurable);
|
||||
}
|
||||
|
|
@ -105,6 +105,9 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
public Task<List<ShippingItem>?> GetShippingItemsByShippingId(int shippingId)
|
||||
=> GetAllAsync<List<ShippingItem>>(SignalRTags.GetShippingItemsByShippingId, [shippingId]);
|
||||
|
||||
public Task<List<ShippingItem>?> GetShippingItemsByPartnerId(int partnerId)
|
||||
=> GetAllAsync<List<ShippingItem>>(SignalRTags.GetShippingItemsByPartnerId, [partnerId]);
|
||||
|
||||
public Task<ShippingItem?> GetShippingItemById(int id)
|
||||
=> GetByIdAsync<ShippingItem?>(SignalRTags.GetShippingItemById, id);
|
||||
|
||||
|
|
@ -120,6 +123,10 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
#endregion ShippingItem
|
||||
|
||||
#region ShippingItemPallet
|
||||
|
||||
public Task<List<ShippingItemPallet>?> GetShippingItemPallets()
|
||||
=> GetAllAsync<List<ShippingItemPallet>>(SignalRTags.GetShippingItemPallets);
|
||||
|
||||
public Task<ShippingItemPallet?> AddShippingItemPallet(ShippingItemPallet shippingItemPallet)
|
||||
=> PostDataAsync(SignalRTags.AddShippingItemPallet, shippingItemPallet);
|
||||
|
||||
|
|
@ -162,7 +169,7 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
|
||||
public Task<List<CustomerDto>?> GetMeasuringUsers()
|
||||
=> GetAllAsync<List<CustomerDto>>(SignalRTags.GetMeasuringUsers);
|
||||
|
||||
|
||||
public Task<List<CustomerRole>?> GetCustomerRolesByCustomerId(int customerId)
|
||||
=> GetAllAsync<List<CustomerRole>>(SignalRTags.GetCustomerRolesByCustomerId, [customerId]);
|
||||
#endregion Customer
|
||||
|
|
@ -224,7 +231,7 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
|
||||
public Task<List<OrderDto>?> GetAllOrderDtoByProductId(int productId)
|
||||
=> GetAllAsync<List<OrderDto>>(SignalRTags.GetAllOrderDtoByProductId, [productId]);
|
||||
|
||||
|
||||
public Task<OrderItemDto?> GetOrderItemDtoById(int orderItemId)
|
||||
=> GetByIdAsync<OrderItemDto>(SignalRTags.GetOrderItemDtoById, [orderItemId]);
|
||||
|
||||
|
|
@ -254,6 +261,7 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
|
||||
public Task<List<StockQuantityHistoryDto>?> GetStockQuantityHistoryDtosByProductId(int productId)
|
||||
=> GetAllAsync<List<StockQuantityHistoryDto>>(SignalRTags.GetStockQuantityHistoryDtosByProductId, [productId]);
|
||||
|
||||
#endregion Orders
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ builder.Services.AddDevExpressBlazor(configure => configure.SizeMode = DevExpres
|
|||
// Add device-specific services used by the FruitBankHybrid.Shared project
|
||||
builder.Services.AddSingleton<IFormFactor, FormFactor>();
|
||||
|
||||
#if DEBUG
|
||||
//#if DEBUG
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
builder.Services.AddSingleton<LoggedInModel>();
|
||||
builder.Services.AddSingleton<FruitBankSignalRClient>();
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ namespace FruitBankHybrid
|
|||
#endif
|
||||
|
||||
builder.Services.AddSingleton<LoggedInModel>();
|
||||
builder.Services.AddScoped<FruitBankSignalRClient>();
|
||||
builder.Services.AddSingleton<FruitBankSignalRClient>();
|
||||
builder.Services.AddSingleton<DatabaseClient>();
|
||||
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue