Add PartnerDepot grid, EKÁER menu, and test refactor
- Added PartnerDepots navigation to Partner entity/interface - Introduced GridPartnerDepot component and detail tab in partner grid - Added EKÁER menu entry with icon and supporting styles - Moved partner/cargo tests to FruitBankPartnerTests; added PartnerDepot tests - Improved test assertions for clarity - Enabled AOT compilation by default in project file - Updated SignalR binary protocol doc with send-path analysis
This commit is contained in:
parent
9a0d5698f0
commit
b8f52e0c84
|
|
@ -11,6 +11,9 @@ namespace FruitBank.Common.Entities;
|
|||
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.PartnerDbTableName)]
|
||||
public sealed class Partner : PartnerBase, IPartner
|
||||
{
|
||||
[Association(ThisKey = nameof(Id), OtherKey = nameof(PartnerDepot.PartnerId), CanBeNull = true)]
|
||||
public List<PartnerDepot>? PartnerDepots { get; set; }
|
||||
|
||||
[Association(ThisKey = nameof(Id), OtherKey = nameof(ShippingDocument.PartnerId), CanBeNull = true)]
|
||||
public List<ShippingDocument>? ShippingDocuments { get; set; }
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ public interface ICargoPartner : IPartnerBase
|
|||
|
||||
public interface IPartner : IPartnerBase
|
||||
{
|
||||
List<PartnerDepot>? PartnerDepots { get; set; }
|
||||
List<ShippingDocument>? ShippingDocuments { get; set; }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,149 +34,6 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
_signalRClient = TestSignalRClientFactory.Create(nameof(FruitBankClientTests));
|
||||
}
|
||||
|
||||
#region Partner
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetPartnersTest()
|
||||
{
|
||||
var partners = await _signalRClient.GetPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsNotEmpty(partners);
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<Partner> GetPartnerByIdTest(int partnerId)
|
||||
{
|
||||
var partner = await _signalRClient.GetPartnerById(partnerId);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(2)]
|
||||
public async Task UpdatePartnerTest(int partnerId)
|
||||
{
|
||||
var partner = await GetPartnerByIdTest(partnerId);
|
||||
|
||||
var newName = GetFixtureName(partner.Name);
|
||||
|
||||
partner.Name = newName;
|
||||
partner = await _signalRClient.UpdatePartner(partner);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.IsTrue(partner.Name == newName);
|
||||
|
||||
partner.Name = GetOriginalName(partner.Name);
|
||||
partner = await _signalRClient.UpdatePartner(partner);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
}
|
||||
#endregion Partner
|
||||
|
||||
#region CargoPartner
|
||||
[TestMethod]
|
||||
public async Task GetCargoPartnersTest()
|
||||
{
|
||||
var partners = await _signalRClient.GetCargoPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsNotEmpty(partners);
|
||||
}
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<CargoPartner> GetCargoPartnerByIdTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoPartner = await _signalRClient.GetCargoPartnerById(cargoPartnerId);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.AreEqual(cargoPartnerId, cargoPartner.Id);
|
||||
|
||||
return cargoPartner;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task UpdateCargoPartnerTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoPartner = await GetCargoPartnerByIdTest(cargoPartnerId);
|
||||
|
||||
var newName = GetFixtureName(cargoPartner.Name);
|
||||
|
||||
cargoPartner.Name = newName;
|
||||
cargoPartner = await _signalRClient.UpdateCargoPartner(cargoPartner);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.IsTrue(cargoPartner.Name == newName);
|
||||
|
||||
cargoPartner.Name = GetOriginalName(cargoPartner.Name);
|
||||
cargoPartner = await _signalRClient.UpdateCargoPartner(cargoPartner);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.AreEqual(cargoPartnerId, cargoPartner.Id);
|
||||
}
|
||||
#endregion CargoPartner
|
||||
|
||||
#region CargoTruck
|
||||
[TestMethod]
|
||||
public async Task GetCargoTrucksTest()
|
||||
{
|
||||
var cargoTrucks = await _signalRClient.GetCargoTrucks();
|
||||
|
||||
Assert.IsNotNull(cargoTrucks);
|
||||
Assert.IsNotEmpty(cargoTrucks);
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<CargoTruck> GetCargoTruckByIdTest(int cargoTruckId)
|
||||
{
|
||||
var cargoTruck = await _signalRClient.GetCargoTruckById(cargoTruckId);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.AreEqual(cargoTruckId, cargoTruck.Id);
|
||||
|
||||
return cargoTruck;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task GetCargoTrucksByCargoPartnerIdTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoTrucks = await _signalRClient.GetCargoTrucksByCargoPartnerId(cargoPartnerId);
|
||||
|
||||
Assert.IsNotNull(cargoTrucks);
|
||||
Assert.IsNotEmpty(cargoTrucks);
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task UpdateCargoTruckTest(int cargoTruckId)
|
||||
{
|
||||
var cargoTruck = await GetCargoTruckByIdTest(cargoTruckId);
|
||||
|
||||
var newLicencePlate = GetFixtureName(cargoTruck.LicencePlate);
|
||||
|
||||
cargoTruck.LicencePlate = newLicencePlate;
|
||||
cargoTruck = await _signalRClient.UpdateCargoTruck(cargoTruck);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.IsTrue(cargoTruck.LicencePlate == newLicencePlate);
|
||||
|
||||
cargoTruck.LicencePlate = GetOriginalName(cargoTruck.LicencePlate);
|
||||
cargoTruck = await _signalRClient.UpdateCargoTruck(cargoTruck);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.AreEqual(cargoTruckId, cargoTruck.Id);
|
||||
}
|
||||
#endregion CargoTruck
|
||||
|
||||
#region Shipping
|
||||
[TestMethod]
|
||||
public async Task GetShippingsTest()
|
||||
|
|
@ -299,7 +156,7 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
else
|
||||
{
|
||||
Assert.IsNotNull(shippingItem.ShippingDocument);
|
||||
Assert.IsTrue(shippingItem.ShippingDocument.ShippingDocumentToFiles?.Count == 0);
|
||||
Assert.AreEqual(0, shippingItem.ShippingDocument.ShippingDocumentToFiles?.Count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -313,11 +170,11 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
if (shippingItem.IsMeasurable) Assert.IsNotNull(shippingItem.Pallet, $"shippingItem.Pallet == null; shippingItem.PalletId: {shippingItem.PalletId}");
|
||||
|
||||
Assert.IsNotNull(shippingItem.ProductDto, $"shippingItem.Product == null; shippingItem.ProductId: {shippingItem.ProductId}");
|
||||
Assert.IsTrue(shippingItem.Id == shippingItemId);
|
||||
Assert.AreEqual(shippingItemId, shippingItem.Id);
|
||||
|
||||
Assert.IsTrue(shippingItem.QuantityOnDocument > 0, "QuantityOnDocument == 0");
|
||||
Assert.IsTrue(shippingItem.NetWeightOnDocument > 0, "NetWeightOnDocument == 0");
|
||||
Assert.IsTrue(shippingItem.GrossWeightOnDocument > 0, "GrossWeightOnDocument == 0");
|
||||
Assert.IsGreaterThan(0, shippingItem.QuantityOnDocument, "QuantityOnDocument == 0");
|
||||
Assert.IsGreaterThan(0, shippingItem.NetWeightOnDocument, "NetWeightOnDocument == 0");
|
||||
Assert.IsGreaterThan(0, shippingItem.GrossWeightOnDocument, "GrossWeightOnDocument == 0");
|
||||
|
||||
return shippingItem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,225 @@
|
|||
using FruitBank.Common;
|
||||
using FruitBank.Common.Entities;
|
||||
using FruitBankHybrid.Shared.Services.SignalRs;
|
||||
|
||||
// ReSharper disable CompareOfFloatsByEqualityOperator
|
||||
|
||||
namespace FruitBankHybrid.Shared.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public sealed class FruitBankPartnerTests
|
||||
{
|
||||
private const int CustomerIdAasdDsserverCom = 6;//aasd@dsserver.com
|
||||
private const string Fixture = "_test.temp";
|
||||
|
||||
private FruitBankSignalRClient _signalRClient = null!;
|
||||
|
||||
private static string GetFixtureName(string name) => $"{GetOriginalName(name)}{Fixture}";
|
||||
private static string GetOriginalName(string name) => name.Replace(Fixture, string.Empty);
|
||||
|
||||
[TestInitialize]
|
||||
public void TestInit()
|
||||
{
|
||||
if (!FruitBankConstClient.BaseUrl.Contains("localhost:")) throw new Exception("NEM LOCALHOST-ON TESZTELÜNK!");
|
||||
|
||||
_signalRClient = TestSignalRClientFactory.Create(nameof(FruitBankClientTests));
|
||||
}
|
||||
|
||||
#region Partner
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetPartnersTest()
|
||||
{
|
||||
var partners = await _signalRClient.GetPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsNotEmpty(partners);
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<Partner> GetPartnerByIdTest(int partnerId)
|
||||
{
|
||||
var partner = await _signalRClient.GetPartnerById(partnerId);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(2)]
|
||||
public async Task UpdatePartnerTest(int partnerId)
|
||||
{
|
||||
var partner = await GetPartnerByIdTest(partnerId);
|
||||
|
||||
var newName = GetFixtureName(partner.Name);
|
||||
|
||||
partner.Name = newName;
|
||||
partner = await _signalRClient.UpdatePartner(partner);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.AreEqual(newName, partner.Name);
|
||||
|
||||
partner.Name = GetOriginalName(partner.Name);
|
||||
partner = await _signalRClient.UpdatePartner(partner);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
}
|
||||
#endregion Partner
|
||||
|
||||
#region CargoPartner
|
||||
[TestMethod]
|
||||
public async Task GetCargoPartnersTest()
|
||||
{
|
||||
var partners = await _signalRClient.GetCargoPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsNotEmpty(partners);
|
||||
}
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<CargoPartner> GetCargoPartnerByIdTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoPartner = await _signalRClient.GetCargoPartnerById(cargoPartnerId);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.AreEqual(cargoPartnerId, cargoPartner.Id);
|
||||
|
||||
return cargoPartner;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task UpdateCargoPartnerTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoPartner = await GetCargoPartnerByIdTest(cargoPartnerId);
|
||||
|
||||
var newName = GetFixtureName(cargoPartner.Name);
|
||||
|
||||
cargoPartner.Name = newName;
|
||||
cargoPartner = await _signalRClient.UpdateCargoPartner(cargoPartner);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.AreEqual(newName, cargoPartner.Name);
|
||||
|
||||
cargoPartner.Name = GetOriginalName(cargoPartner.Name);
|
||||
cargoPartner = await _signalRClient.UpdateCargoPartner(cargoPartner);
|
||||
|
||||
Assert.IsNotNull(cargoPartner);
|
||||
Assert.AreEqual(cargoPartnerId, cargoPartner.Id);
|
||||
}
|
||||
#endregion CargoPartner
|
||||
|
||||
#region CargoTruck
|
||||
[TestMethod]
|
||||
public async Task GetCargoTrucksTest()
|
||||
{
|
||||
var cargoTrucks = await _signalRClient.GetCargoTrucks();
|
||||
|
||||
Assert.IsNotNull(cargoTrucks);
|
||||
Assert.IsNotEmpty(cargoTrucks);
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<CargoTruck> GetCargoTruckByIdTest(int cargoTruckId)
|
||||
{
|
||||
var cargoTruck = await _signalRClient.GetCargoTruckById(cargoTruckId);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.AreEqual(cargoTruckId, cargoTruck.Id);
|
||||
|
||||
return cargoTruck;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task GetCargoTrucksByCargoPartnerIdTest(int cargoPartnerId)
|
||||
{
|
||||
var cargoTrucks = await _signalRClient.GetCargoTrucksByCargoPartnerId(cargoPartnerId);
|
||||
|
||||
Assert.IsNotNull(cargoTrucks);
|
||||
Assert.IsNotEmpty(cargoTrucks);
|
||||
}
|
||||
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task UpdateCargoTruckTest(int cargoTruckId)
|
||||
{
|
||||
var cargoTruck = await GetCargoTruckByIdTest(cargoTruckId);
|
||||
|
||||
var newLicencePlate = GetFixtureName(cargoTruck.LicencePlate);
|
||||
|
||||
cargoTruck.LicencePlate = newLicencePlate;
|
||||
cargoTruck = await _signalRClient.UpdateCargoTruck(cargoTruck);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.AreEqual(newLicencePlate, cargoTruck.LicencePlate);
|
||||
|
||||
cargoTruck.LicencePlate = GetOriginalName(cargoTruck.LicencePlate);
|
||||
cargoTruck = await _signalRClient.UpdateCargoTruck(cargoTruck);
|
||||
|
||||
Assert.IsNotNull(cargoTruck);
|
||||
Assert.AreEqual(cargoTruckId, cargoTruck.Id);
|
||||
}
|
||||
#endregion CargoTruck
|
||||
|
||||
#region PartnerDepot
|
||||
[TestMethod]
|
||||
public async Task GetPartnerDepotsTest()
|
||||
{
|
||||
var partnerDepots = await _signalRClient.GetPartnerDepots();
|
||||
|
||||
Assert.IsNotNull(partnerDepots);
|
||||
Assert.IsNotEmpty(partnerDepots);
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<PartnerDepot> GetPartnerDepotByIdTest(int partnerDepotId)
|
||||
{
|
||||
var partnerDepot = await _signalRClient.GetPartnerDepotById(partnerDepotId);
|
||||
|
||||
Assert.IsNotNull(partnerDepot);
|
||||
Assert.AreEqual(partnerDepotId, partnerDepot.Id);
|
||||
|
||||
return partnerDepot;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task GetPartnerDepotsByPartnerIdTest(int partnerId)
|
||||
{
|
||||
var partnerDepots = await _signalRClient.GetPartnerDepotsByPartnerId(partnerId);
|
||||
|
||||
Assert.IsNotNull(partnerDepots);
|
||||
Assert.IsNotEmpty(partnerDepots);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow(1)]
|
||||
public async Task UpdatePartnerDepotTest(int partnerDepotId)
|
||||
{
|
||||
var partnerDepot = await GetPartnerDepotByIdTest(partnerDepotId);
|
||||
|
||||
var newName = GetFixtureName(partnerDepot.Name);
|
||||
|
||||
partnerDepot.Name = newName;
|
||||
partnerDepot = await _signalRClient.UpdatePartnerDepot(partnerDepot);
|
||||
|
||||
Assert.IsNotNull(partnerDepot);
|
||||
Assert.AreEqual(newName, partnerDepot.Name);
|
||||
|
||||
partnerDepot.Name = GetOriginalName(partnerDepot.Name);
|
||||
partnerDepot = await _signalRClient.UpdatePartnerDepot(partnerDepot);
|
||||
|
||||
Assert.IsNotNull(partnerDepot);
|
||||
Assert.AreEqual(partnerDepotId, partnerDepot.Id);
|
||||
}
|
||||
#endregion PartnerDepot
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<DxGridDataColumn FieldName="Name" />
|
||||
<DxGridDataColumn FieldName="TaxId" />
|
||||
<DxGridDataColumn FieldName="CertificationNumber" />
|
||||
<DxGridDataColumn FieldName="@nameof(CargoPartner.Currency)" />
|
||||
<DxGridDataColumn FieldName="@nameof(Partner.Currency)" />
|
||||
<DxGridDataColumn FieldName="@nameof(Partner.CountryCode)" />
|
||||
<DxGridDataColumn FieldName="PostalCode" />
|
||||
<DxGridDataColumn FieldName="@nameof(Partner.Country)" />
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
@if (IsMasterGrid)
|
||||
{
|
||||
var partner = ((Partner)context.DataItem);
|
||||
var partnerDepots = partner?.PartnerDepots ?? [];
|
||||
var shippingDocuments = partner?.ShippingDocuments ?? [];
|
||||
|
||||
<DxTabs>
|
||||
|
|
@ -62,6 +63,13 @@
|
|||
<GridShippingItemTemplate ShippingItems="@observableShippingItems" ParentDataItem="@partner" />
|
||||
}
|
||||
</DxTabPage>
|
||||
|
||||
<DxTabPage Text="Telephelyek">
|
||||
@{
|
||||
var observablePartnerDepots = new AcObservableCollection<PartnerDepot>(partnerDepots);
|
||||
<GridPartnerDepot PartnerDepots="observablePartnerDepots" ParentDataItem="@partner"></GridPartnerDepot>
|
||||
}
|
||||
</DxTabPage>
|
||||
</DxTabs>
|
||||
}
|
||||
</DetailRowTemplate>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,124 @@
|
|||
@using System.Collections.ObjectModel
|
||||
@using AyCode.Blazor.Components.Components.Grids
|
||||
@using AyCode.Core.Helpers
|
||||
@using AyCode.Core.Interfaces
|
||||
@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
|
||||
|
||||
<MgGridWithInfoPanel ShowInfoPanel="@IsMasterGrid">
|
||||
<GridContent>
|
||||
<GridPartnerDepotBase @ref="Grid"
|
||||
DataSource="PartnerDepots"
|
||||
ParentDataItem="ParentDataItem"
|
||||
AutoSaveLayoutName="GridPartnerDepot"
|
||||
SignalRClient="FruitBankSignalRClient"
|
||||
Logger="_logger"
|
||||
CssClass="@GridCss"
|
||||
ValidationEnabled="false"
|
||||
OnGridFocusedRowChanged="Grid_FocusedRowChanged">
|
||||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
||||
<DxGridDataColumn FieldName="@nameof(PartnerDepot.PartnerId)" />
|
||||
|
||||
<DxGridDataColumn FieldName="Name" />
|
||||
<DxGridDataColumn FieldName="@nameof(PartnerDepot.CountryCode)" />
|
||||
<DxGridDataColumn FieldName="PostalCode" />
|
||||
<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 partnerDepot = ((PartnerDepot)context.DataItem);
|
||||
|
||||
<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)
|
||||
{
|
||||
<MgGridToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||
}
|
||||
</ToolbarTemplate>
|
||||
</GridPartnerDepotBase>
|
||||
</GridContent>
|
||||
</MgGridWithInfoPanel>
|
||||
|
||||
@code {
|
||||
//[Inject] public required ObjectLock ObjectLock { get; set; }
|
||||
[Inject] public required DatabaseClient Database { get; set; }
|
||||
|
||||
[Parameter] public AcObservableCollection<PartnerDepot>? PartnerDepots { get; set; }
|
||||
|
||||
const string ExportFileName = "ExportResult";
|
||||
string GridSearchText = "";
|
||||
bool EditItemsEnabled { get; set; }
|
||||
int FocusedRowVisibleIndex { get; set; }
|
||||
public GridPartnerDepotBase Grid { get; set; }
|
||||
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
|
||||
|
||||
[Parameter] public IId<int>? ParentDataItem { get; set; }
|
||||
|
||||
public bool IsMasterGrid => ParentDataItem == null;
|
||||
public bool ParentDataItemIsPartner => (ParentDataItem is Partner);
|
||||
|
||||
private int _activeTabIndex;
|
||||
private LoggerClient<GridPartnerDepot> _logger;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_logger = new LoggerClient<GridPartnerDepot>(LogWriters.ToArray());
|
||||
await ReloadDataFromDb(false);
|
||||
}
|
||||
|
||||
private async Task ReloadDataFromDb(bool forceReload = false)
|
||||
{
|
||||
if (!IsMasterGrid) return;
|
||||
|
||||
if (Grid == null) return;
|
||||
|
||||
using (await ObjectLock.GetSemaphore<PartnerDepot>().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,85 @@
|
|||
using AyCode.Core.Interfaces;
|
||||
using AyCode.Utils.Extensions;
|
||||
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 GridPartnerDepotBase: FruitBankGridBase<PartnerDepot>, IGrid
|
||||
{
|
||||
private bool _isFirstInitializeParameterCore;
|
||||
private bool _isFirstInitializeParameters;
|
||||
|
||||
public GridPartnerDepotBase() : base()
|
||||
{
|
||||
//GetAllMessageTag = SignalRTags.GetPartnerDepots;
|
||||
AddMessageTag = SignalRTags.AddPartnerDepot;
|
||||
UpdateMessageTag = SignalRTags.UpdatePartnerDepot;
|
||||
|
||||
//RemoveMessageTag = SignalRTags.;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (GetAllMessageTag > 0) return;
|
||||
|
||||
if (IsMasterGrid) GetAllMessageTag = SignalRTags.GetPartnerDepots;
|
||||
else
|
||||
{
|
||||
if (ContextIds == null || ContextIds.Length == 0) ContextIds = [ParentDataItem!.Id];
|
||||
|
||||
switch (ParentDataItem)
|
||||
{
|
||||
case IPartner:
|
||||
GetAllMessageTag = SignalRTags.GetPartnerDepotsByPartnerId;
|
||||
if (KeyFieldNameToParentId.IsNullOrWhiteSpace()) KeyFieldNameToParentId = nameof(PartnerDepot.PartnerId);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -63,6 +63,12 @@
|
|||
<span class="icon shippings-icon" aria-hidden="true"></span> Szállítmányok
|
||||
</NavLink>
|
||||
</div>
|
||||
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="Ekaer" title="EKÁER">
|
||||
<span class="icon ekaer-icon" aria-hidden="true"></span> EKÁER
|
||||
</NavLink>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -59,6 +59,10 @@
|
|||
--icon-mask-image: var(--icon-login-mask-image);
|
||||
}
|
||||
|
||||
::deep .ekaer-icon {
|
||||
--icon-mask-image: var(--icon-ekaer-mask-image);
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 0.5rem;
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ h1:focus {
|
|||
--icon-orders-mask-image: url("images/orders-fluent.svg");
|
||||
--icon-shippings-mask-image: url("images/shippings-fluent.svg");
|
||||
--icon-login-mask-image: url("images/login-fluent.svg");
|
||||
--icon-ekaer-mask-image: url("images/ekaer-fluent.svg");
|
||||
}
|
||||
|
||||
.icon {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4 5.4 10 3l6 2.4V10c0 3.5-2.5 6.4-6 7.4-3.5-1-6-3.9-6-7.4V5.4Z" stroke="black" stroke-width="1.4" stroke-linejoin="round"/>
|
||||
<path d="M7.2 10l2 2 3.8-4.4" stroke="black" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 354 B |
|
|
@ -23,7 +23,7 @@
|
|||
<ApplicationVersion>1</ApplicationVersion>
|
||||
<PackageVersion>$(ApplicationDisplayVersion)</PackageVersion>
|
||||
|
||||
<RunAOTCompilation>false</RunAOTCompilation>
|
||||
<RunAOTCompilation>true</RunAOTCompilation>
|
||||
<WasmStripILAfterAOT>true</WasmStripILAfterAOT>
|
||||
<OverrideHtmlAssetPlaceholders>true</OverrideHtmlAssetPlaceholders>
|
||||
|
||||
|
|
@ -47,9 +47,9 @@
|
|||
</PropertyGroup>
|
||||
|
||||
|
||||
<PropertyGroup Condition="$(TargetFramework.Contains('-android'))">
|
||||
<!--<PropertyGroup Condition="$(TargetFramework.Contains('-android'))">
|
||||
<RunAOTCompilation>false</RunAOTCompilation>
|
||||
</PropertyGroup>
|
||||
</PropertyGroup>-->
|
||||
|
||||
<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
|
||||
<UseInterpreter>true</UseInterpreter>
|
||||
|
|
|
|||
Loading…
Reference in New Issue