Add CargoTruck CRUD, grid tabs, and related tests
- Introduced LicencePlate to CargoTruck and Shippings navigation to CargoPartner. - Implemented CargoTruck CRUD methods in IFruitBankDataControllerCommon and FruitBankSignalRClient. - Expanded tests for CargoTruck and improved assertions for CargoPartner and Partner. - Updated CargoPartner grid to show CargoTrucks and Shippings in detail tabs. - Minor formatting and settings.local.json Bash command update.
This commit is contained in:
parent
69010921d7
commit
41ccb10ef7
|
|
@ -11,7 +11,8 @@
|
|||
"Bash(while read:*)",
|
||||
"Bash(do sed -i '1a using AyCode.Core.Serializers.Toons;\\\\n' \"$f\")",
|
||||
"Bash(done)",
|
||||
"Bash(rm \"C:/Users/Fullepi/.claude/projects/H--Applications-Mango-Source-FruitBankHybridApp/memory/feedback_framework_docs_no_consumer_types.md\")"
|
||||
"Bash(rm \"C:/Users/Fullepi/.claude/projects/H--Applications-Mango-Source-FruitBankHybridApp/memory/feedback_framework_docs_no_consumer_types.md\")",
|
||||
"Bash(cd \"H:/Applications/Aycode/Source/AyCode.Core/AyCode.Services.Server/bin/FruitBank\" && ls -la --time-style=full-iso Debug/net9.0/AyCode.Core.dll Release/net9.0/AyCode.Core.dll 2>&1)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,4 +14,7 @@ public sealed class CargoPartner : PartnerBase, ICargoPartner
|
|||
{
|
||||
[Association(ThisKey = nameof(Id), OtherKey = nameof(CargoTruck.CargoPartnerId), CanBeNull = true)]
|
||||
public List<CargoTruck>? CargoTrucks { get; set; }
|
||||
|
||||
//[Association(ThisKey = nameof(Id), OtherKey = nameof(Shipping.CargoPartnerId), CanBeNull = true)]
|
||||
public List<Shipping>? Shippings { get; set; }
|
||||
}
|
||||
|
|
@ -11,4 +11,5 @@ namespace FruitBank.Common.Entities;
|
|||
public sealed class CargoTruck: MgEntityBase//, ICargoPartner
|
||||
{
|
||||
public int CargoPartnerId { get; set; }
|
||||
public string LicencePlate { get; set; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,13 @@ public interface IFruitBankDataControllerCommon
|
|||
public Task<CargoPartner?> UpdateCargoPartner(CargoPartner cargoPartner);
|
||||
#endregion CargoPartner
|
||||
|
||||
#region CargoTruck
|
||||
public Task<List<CargoTruck>?> GetCargoTrucks();
|
||||
public Task<CargoTruck?> GetCargoTruckById(int id);
|
||||
public Task<CargoTruck?> AddCargoTruck(CargoTruck cargoTruck);
|
||||
public Task<CargoTruck?> UpdateCargoTruck(CargoTruck cargoTruck);
|
||||
#endregion CargoTruck
|
||||
|
||||
#region Shipping
|
||||
public Task<List<Shipping>?> GetShippings();
|
||||
Task<List<Shipping>?> GetNotMeasuredShippings();
|
||||
|
|
|
|||
|
|
@ -42,22 +42,22 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
var partners = await _signalRClient.GetPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsTrue(partners.Count != 0);
|
||||
Assert.IsNotEmpty(partners);
|
||||
}
|
||||
|
||||
//[DataTestMethod]
|
||||
//[TestMethod]
|
||||
//[DataRow(1)]
|
||||
public async Task<Partner> GetPartnerByIdTest(int partnerId)
|
||||
{
|
||||
var partner = await _signalRClient.GetPartnerById(partnerId);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.IsTrue(partner.Id == partnerId);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
|
||||
return partner;
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[TestMethod]
|
||||
[DataRow(2)]
|
||||
public async Task UpdatePartnerTest(int partnerId)
|
||||
{
|
||||
|
|
@ -75,7 +75,7 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
partner = await _signalRClient.UpdatePartner(partner);
|
||||
|
||||
Assert.IsNotNull(partner);
|
||||
Assert.IsTrue(partner.Id == partnerId);
|
||||
Assert.AreEqual(partnerId, partner.Id);
|
||||
}
|
||||
#endregion Partner
|
||||
|
||||
|
|
@ -83,13 +83,88 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
[TestMethod]
|
||||
public async Task GetCargoPartnersTest()
|
||||
{
|
||||
var partners = await _signalRClient.GetPartners();
|
||||
var partners = await _signalRClient.GetCargoPartners();
|
||||
|
||||
Assert.IsNotNull(partners);
|
||||
Assert.IsTrue(partners.Count != 0);
|
||||
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 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()
|
||||
|
|
@ -97,7 +172,7 @@ namespace FruitBankHybrid.Shared.Tests
|
|||
var shippings = await _signalRClient.GetShippings();
|
||||
|
||||
Assert.IsNotNull(shippings);
|
||||
Assert.IsTrue(shippings.Count != 0);
|
||||
Assert.IsNotEmpty(shippings);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@
|
|||
<GridCargoPartnerBase @ref="Grid"
|
||||
DataSource="CargoPartners"
|
||||
AutoSaveLayoutName="GridCargoPartner"
|
||||
SignalRClient="FruitBankSignalRClient"
|
||||
Logger="_logger"
|
||||
CssClass="@GridCss"
|
||||
ValidationEnabled="false"
|
||||
OnGridFocusedRowChanged="Grid_FocusedRowChanged">
|
||||
SignalRClient="FruitBankSignalRClient"
|
||||
Logger="_logger"
|
||||
CssClass="@GridCss"
|
||||
ValidationEnabled="false"
|
||||
OnGridFocusedRowChanged="Grid_FocusedRowChanged">
|
||||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
||||
|
||||
|
|
@ -41,37 +41,38 @@
|
|||
<DxGridDataColumn FieldName="Modified" ReadOnly="true" />
|
||||
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
||||
</Columns>
|
||||
@* <DetailRowTemplate>
|
||||
<DetailRowTemplate>
|
||||
@if (IsMasterGrid)
|
||||
{
|
||||
var partner = ((CargoPartner)context.DataItem);
|
||||
var shippingDocuments = partner?.ShippingDocuments ?? [];
|
||||
var shipping = partner?.Shippings ?? [];
|
||||
var cargoTrucks = partner?.CargoTrucks ?? [];
|
||||
|
||||
<DxTabs>
|
||||
<DxTabPage Text="Szállítólevelek">
|
||||
<DxTabPage Text="Kamionok">
|
||||
@{
|
||||
var observableShippingDocuments = new AcObservableCollection<ShippingDocument>(shippingDocuments);
|
||||
<GridShippingDocument ShippingDocuments="@observableShippingDocuments" ParentDataItem="@partner" Partners="@Partners"></GridShippingDocument>
|
||||
// var observableShippingDocuments = new AcObservableCollection<CargoTruck>(cargoTrucks);
|
||||
// <GridShippingDocument ShippingDocuments="@observableShippingDocuments" ParentDataItem="@partner" Partners="@Partners" IsMasterGrid="false"></GridShippingDocument>
|
||||
}
|
||||
</DxTabPage>
|
||||
|
||||
<DxTabPage Text="Szállítmány tételek">
|
||||
<DxTabPage Text="Szállítmányok">
|
||||
@{
|
||||
var observableShippingItems = new AcObservableCollection<ShippingItem>(shippingDocuments.SelectMany(sd => sd.ShippingItems ?? []));
|
||||
<GridShippingItemTemplate ShippingItems="@observableShippingItems" ParentDataItem="@partner" />
|
||||
var observableShippings = new AcObservableCollection<Shipping>(shipping);
|
||||
<GridShipping Shippings="@observableShippings" IsMasterGrid="false" />
|
||||
}
|
||||
</DxTabPage>
|
||||
</DxTabs>
|
||||
}
|
||||
</DetailRowTemplate>
|
||||
*@ <ToolbarTemplate>
|
||||
@if (IsMasterGrid)
|
||||
{
|
||||
<MgGridToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||
}
|
||||
</ToolbarTemplate>
|
||||
</GridCargoPartnerBase>
|
||||
</GridContent>
|
||||
<ToolbarTemplate>
|
||||
@if (IsMasterGrid)
|
||||
{
|
||||
<MgGridToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||
}
|
||||
</ToolbarTemplate>
|
||||
</GridCargoPartnerBase>
|
||||
</GridContent>
|
||||
</MgGridWithInfoPanel>
|
||||
|
||||
@code {
|
||||
|
|
|
|||
|
|
@ -57,8 +57,7 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
}
|
||||
}
|
||||
|
||||
public Task<List<MeasuringModel>?> GetMeasuringModels()
|
||||
=> GetAllAsync<List<MeasuringModel>>(SignalRTags.GetMeasuringModels);
|
||||
public Task<List<MeasuringModel>?> GetMeasuringModels() => GetAllAsync<List<MeasuringModel>>(SignalRTags.GetMeasuringModels);
|
||||
|
||||
#region Partner
|
||||
public Task<List<Partner>?> GetPartners() => GetAllAsync<List<Partner>>(SignalRTags.GetPartners);
|
||||
|
|
@ -74,6 +73,14 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
public Task<CargoPartner?> UpdateCargoPartner(CargoPartner cargoPartner) => PostDataAsync(SignalRTags.UpdateCargoPartner, cargoPartner);
|
||||
#endregion CargoPartner
|
||||
|
||||
#region CargoTruck
|
||||
public Task<List<CargoTruck>?> GetCargoTrucks() => GetAllAsync<List<CargoTruck>>(SignalRTags.GetCargoTrucks);
|
||||
public Task<CargoTruck?> GetCargoTruckById(int id) => GetByIdAsync<CargoTruck?>(SignalRTags.GetCargoTruckById, id);
|
||||
public Task<CargoTruck?> AddCargoTruck(CargoTruck cargoTruck) => PostDataAsync(SignalRTags.AddCargoTruck, cargoTruck);
|
||||
public Task<CargoTruck?> UpdateCargoTruck(CargoTruck cargoTruck) => PostDataAsync(SignalRTags.UpdateCargoTruck, cargoTruck);
|
||||
#endregion CargoTruck
|
||||
|
||||
|
||||
#region Shipping
|
||||
|
||||
public Task<List<Shipping>?> GetShippings()
|
||||
|
|
|
|||
Loading…
Reference in New Issue