Add CargoPartner management UI and API integration
- Introduced CRUD operations for CargoPartner in IFruitBankDataControllerCommon and SignalRTags. - Implemented CargoPartner methods in FruitBankSignalRClient. - Added GridCargoPartner.razor and GridCargoPartnerBase.cs for CargoPartner grid UI. - Integrated CargoPartner grid into ShippingsAdmin page. - Added GetCargoPartnersTest; updated and commented out some tests. - Added CountryCode column to GridPartner.razor. - Commented out SandboxEndpointSimpleTests. - Minor refactoring for new entity and UI support.
This commit is contained in:
parent
a32f91271d
commit
69010921d7
|
|
@ -19,6 +19,13 @@ public interface IFruitBankDataControllerCommon
|
||||||
public Task<Partner?> UpdatePartner(Partner partner);
|
public Task<Partner?> UpdatePartner(Partner partner);
|
||||||
#endregion Partner
|
#endregion Partner
|
||||||
|
|
||||||
|
#region CargoPartner
|
||||||
|
public Task<List<CargoPartner>?> GetCargoPartners();
|
||||||
|
public Task<CargoPartner?> GetCargoPartnerById(int id);
|
||||||
|
public Task<CargoPartner?> AddCargoPartner(CargoPartner cargoPartner);
|
||||||
|
public Task<CargoPartner?> UpdateCargoPartner(CargoPartner cargoPartner);
|
||||||
|
#endregion CargoPartner
|
||||||
|
|
||||||
#region Shipping
|
#region Shipping
|
||||||
public Task<List<Shipping>?> GetShippings();
|
public Task<List<Shipping>?> GetShippings();
|
||||||
Task<List<Shipping>?> GetNotMeasuredShippings();
|
Task<List<Shipping>?> GetNotMeasuredShippings();
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,16 @@ public class SignalRTags : AcSignalRTags
|
||||||
public const int AddPartner = 25;
|
public const int AddPartner = 25;
|
||||||
public const int UpdatePartner = 26;
|
public const int UpdatePartner = 26;
|
||||||
|
|
||||||
|
public const int GetCargoPartners = 30;
|
||||||
|
public const int GetCargoPartnerById = 31;
|
||||||
|
public const int AddCargoPartner = 32;
|
||||||
|
public const int UpdateCargoPartner = 33;
|
||||||
|
|
||||||
|
public const int GetCargoTrucks = 35;
|
||||||
|
public const int GetCargoTruckById = 36;
|
||||||
|
public const int AddCargoTruck = 37;
|
||||||
|
public const int UpdateCargoTruck = 38;
|
||||||
|
|
||||||
public const int GetShippings = 40;
|
public const int GetShippings = 40;
|
||||||
public const int GetNotMeasuredShippings = 41;
|
public const int GetNotMeasuredShippings = 41;
|
||||||
public const int GetShippingById = 42;
|
public const int GetShippingById = 42;
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,17 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
}
|
}
|
||||||
#endregion Partner
|
#endregion Partner
|
||||||
|
|
||||||
|
#region CargoPartner
|
||||||
|
[TestMethod]
|
||||||
|
public async Task GetCargoPartnersTest()
|
||||||
|
{
|
||||||
|
var partners = await _signalRClient.GetPartners();
|
||||||
|
|
||||||
|
Assert.IsNotNull(partners);
|
||||||
|
Assert.IsTrue(partners.Count != 0);
|
||||||
|
}
|
||||||
|
#endregion CargoPartner
|
||||||
|
|
||||||
#region Shipping
|
#region Shipping
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetShippingsTest()
|
public async Task GetShippingsTest()
|
||||||
|
|
@ -456,7 +467,7 @@ namespace FruitBankHybrid.Shared.Tests
|
||||||
[DataRow(5, true)]
|
[DataRow(5, true)]
|
||||||
//[DataRow(6, false)]
|
//[DataRow(6, false)]
|
||||||
[DataRow(33, true)]
|
[DataRow(33, true)]
|
||||||
[DataRow(64, false)]
|
//[DataRow(64, false)]
|
||||||
[DataRow(7, true)]
|
[DataRow(7, true)]
|
||||||
public async Task GetProductDtoByIdTest(int productId, bool isMeasurableExcepted)
|
public async Task GetProductDtoByIdTest(int productId, bool isMeasurableExcepted)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,316 +1,316 @@
|
||||||
using AyCode.Core.Enums;
|
//using AyCode.Core.Enums;
|
||||||
using AyCode.Core.Loggers;
|
//using AyCode.Core.Loggers;
|
||||||
using AyCode.Utils.Extensions;
|
//using AyCode.Utils.Extensions;
|
||||||
using FruitBank.Common;
|
//using FruitBank.Common;
|
||||||
using FruitBank.Common.Dtos;
|
//using FruitBank.Common.Dtos;
|
||||||
using FruitBank.Common.Entities;
|
//using FruitBank.Common.Entities;
|
||||||
using FruitBank.Common.Interfaces;
|
//using FruitBank.Common.Interfaces;
|
||||||
using FruitBank.Common.Loggers;
|
//using FruitBank.Common.Loggers;
|
||||||
using FruitBankHybrid.Shared.Services.SignalRs;
|
//using FruitBankHybrid.Shared.Services.SignalRs;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
//using System.Diagnostics.CodeAnalysis;
|
||||||
using FruitBank.Common.SignalRs;
|
//using FruitBank.Common.SignalRs;
|
||||||
using AyCode.Services.SignalRs;
|
//using AyCode.Services.SignalRs;
|
||||||
|
|
||||||
namespace FruitBankHybrid.Shared.Tests;
|
//namespace FruitBankHybrid.Shared.Tests;
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Teszt a TestSignalREndpoint-hoz.
|
///// Teszt a TestSignalREndpoint-hoz.
|
||||||
/// FONTOS: A SANDBOX-ot manu<6E>lisan kell elind<6E>tani a tesztek futtat<61>sa el<65>tt!
|
///// FONTOS: A SANDBOX-ot manu<6E>lisan kell elind<6E>tani a tesztek futtat<61>sa el<65>tt!
|
||||||
/// Ind<6E>t<EFBFBD>s: dotnet run --project Mango.Sandbox.EndPoints --urls http://localhost:59579
|
///// Ind<6E>t<EFBFBD>s: dotnet run --project Mango.Sandbox.EndPoints --urls http://localhost:59579
|
||||||
/// </summary>
|
///// </summary>
|
||||||
[TestClass]
|
//[TestClass]
|
||||||
public class SandboxEndpointSimpleTests
|
//public class SandboxEndpointSimpleTests
|
||||||
{
|
//{
|
||||||
private static readonly string SandboxUrl = FruitBankConstClient.BaseUrl; //"http://localhost:59579";
|
// private static readonly string SandboxUrl = FruitBankConstClient.BaseUrl; //"http://localhost:59579";
|
||||||
private static readonly string HubUrl = $"{SandboxUrl}/fbHub";
|
// private static readonly string HubUrl = $"{SandboxUrl}/fbHub";
|
||||||
|
|
||||||
// Teszt SignalR Tags (TestSignalRTags-b<>l)
|
// // Teszt SignalR Tags (TestSignalRTags-b<>l)
|
||||||
private const int PingTag = SignalRTags.PingTag;
|
// private const int PingTag = SignalRTags.PingTag;
|
||||||
private const int EchoTag = SignalRTags.EchoTag;
|
// private const int EchoTag = SignalRTags.EchoTag;
|
||||||
private const int GetTestItemsTag = 9003;
|
// private const int GetTestItemsTag = 9003;
|
||||||
|
|
||||||
private FruitBankSignalRClient _signalRClient = null!;
|
// private FruitBankSignalRClient _signalRClient = null!;
|
||||||
|
|
||||||
[TestInitialize]
|
// [TestInitialize]
|
||||||
public void TestInit()
|
// public void TestInit()
|
||||||
{
|
// {
|
||||||
if (!SandboxUrl.Contains("localhost:")) throw new Exception("NEM LOCALHOST-ON TESZTEL<45>NK!");
|
// if (!SandboxUrl.Contains("localhost:")) throw new Exception("NEM LOCALHOST-ON TESZTEL<45>NK!");
|
||||||
|
|
||||||
_signalRClient = TestSignalRClientFactory.Create(nameof(SandboxEndpointSimpleTests));
|
// _signalRClient = TestSignalRClientFactory.Create(nameof(SandboxEndpointSimpleTests));
|
||||||
}
|
// }
|
||||||
|
|
||||||
#region HTTP Endpoint Tests
|
// #region HTTP Endpoint Tests
|
||||||
|
|
||||||
[TestMethod]
|
// [TestMethod]
|
||||||
public async Task HealthEndpoint_ReturnsSuccess()
|
// public async Task HealthEndpoint_ReturnsSuccess()
|
||||||
{
|
// {
|
||||||
using var httpClient = new HttpClient();
|
// using var httpClient = new HttpClient();
|
||||||
var response = await httpClient.GetAsync($"{SandboxUrl}/health");
|
// var response = await httpClient.GetAsync($"{SandboxUrl}/health");
|
||||||
Assert.IsTrue(response.IsSuccessStatusCode, $"Health endpoint returned {response.StatusCode}");
|
// Assert.IsTrue(response.IsSuccessStatusCode, $"Health endpoint returned {response.StatusCode}");
|
||||||
}
|
// }
|
||||||
|
|
||||||
[TestMethod]
|
// [TestMethod]
|
||||||
public async Task RootEndpoint_ReturnsSandboxIsRunning()
|
// public async Task RootEndpoint_ReturnsSandboxIsRunning()
|
||||||
{
|
// {
|
||||||
using var httpClient = new HttpClient();
|
// using var httpClient = new HttpClient();
|
||||||
var response = await httpClient.GetStringAsync(SandboxUrl);
|
// var response = await httpClient.GetStringAsync(SandboxUrl);
|
||||||
Assert.AreEqual("SANDBOX is running!", response);
|
// Assert.AreEqual("SANDBOX is running!", response);
|
||||||
}
|
// }
|
||||||
|
|
||||||
#endregion
|
// #endregion
|
||||||
|
|
||||||
#region SignalR Connection Tests
|
// #region SignalR Connection Tests
|
||||||
|
|
||||||
[TestMethod]
|
// [TestMethod]
|
||||||
public async Task SignalR_Negotiate_ReturnsSuccess()
|
// public async Task SignalR_Negotiate_ReturnsSuccess()
|
||||||
{
|
// {
|
||||||
using var httpClient = new HttpClient();
|
// using var httpClient = new HttpClient();
|
||||||
var response = await httpClient.PostAsync($"{HubUrl}/negotiate?negotiateVersion=1", null);
|
// var response = await httpClient.PostAsync($"{HubUrl}/negotiate?negotiateVersion=1", null);
|
||||||
Assert.IsTrue(response.IsSuccessStatusCode, $"SignalR negotiate returned {response.StatusCode}");
|
// Assert.IsTrue(response.IsSuccessStatusCode, $"SignalR negotiate returned {response.StatusCode}");
|
||||||
}
|
// }
|
||||||
|
|
||||||
[TestMethod]
|
// [TestMethod]
|
||||||
public async Task SignalR_Connect_Succeeds()
|
// public async Task SignalR_Connect_Succeeds()
|
||||||
{
|
// {
|
||||||
var testItems = await _signalRClient.GetAllAsync<List<TestItem>>(GetTestItemsTag);
|
// var testItems = await _signalRClient.GetAllAsync<List<TestItem>>(GetTestItemsTag);
|
||||||
Assert.IsNotNull(testItems);
|
// Assert.IsNotNull(testItems);
|
||||||
}
|
// }
|
||||||
|
|
||||||
public class TestItem
|
// public class TestItem
|
||||||
{
|
// {
|
||||||
public int Id { get; set; }
|
// public int Id { get; set; }
|
||||||
public string Name { get; set; } = string.Empty;
|
// public string Name { get; set; } = string.Empty;
|
||||||
public decimal Value { get; set; }
|
// public decimal Value { get; set; }
|
||||||
}
|
// }
|
||||||
|
|
||||||
//[TestMethod]
|
////[TestMethod]
|
||||||
//public async Task SignalR_Connect_Succeeds()
|
// //public async Task SignalR_Connect_Succeeds()
|
||||||
//{
|
// //{
|
||||||
// var connection = new HubConnectionBuilder()
|
// // var connection = new HubConnectionBuilder()
|
||||||
// .WithUrl(HubUrl)
|
// // .WithUrl(HubUrl)
|
||||||
// .Build();
|
// // .Build();
|
||||||
|
|
||||||
// try
|
// // try
|
||||||
// {
|
// // {
|
||||||
// await connection.StartAsync();
|
// // await connection.StartAsync();
|
||||||
// Assert.AreEqual(HubConnectionState.Connected, connection.State);
|
// // Assert.AreEqual(HubConnectionState.Connected, connection.State);
|
||||||
// }
|
// // }
|
||||||
// finally
|
// // finally
|
||||||
// {
|
// // {
|
||||||
// await connection.StopAsync();
|
// // await connection.StopAsync();
|
||||||
// }
|
// // }
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//#endregion
|
// //#endregion
|
||||||
|
|
||||||
//#region TestSignalREndpoint Tests
|
// //#region TestSignalREndpoint Tests
|
||||||
|
|
||||||
//[TestMethod]
|
// //[TestMethod]
|
||||||
//public async Task SignalR_Ping_ReturnsResponse()
|
// //public async Task SignalR_Ping_ReturnsResponse()
|
||||||
//{
|
// //{
|
||||||
// var testMessage = "Hello SignalR!";
|
// // var testMessage = "Hello SignalR!";
|
||||||
// await TestSignalREndpoint(PingTag, testMessage, "Ping", response =>
|
// // await TestSignalREndpoint(PingTag, testMessage, "Ping", response =>
|
||||||
// {
|
// // {
|
||||||
// Assert.IsNotNull(response, "Response should not be null");
|
// // Assert.IsNotNull(response, "Response should not be null");
|
||||||
|
|
||||||
// // Parse JSON response
|
// // // Parse JSON response
|
||||||
// using var jsonDoc = JsonDocument.Parse(response);
|
// // using var jsonDoc = JsonDocument.Parse(response);
|
||||||
// var root = jsonDoc.RootElement;
|
// // var root = jsonDoc.RootElement;
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k, hogy van Message property
|
// // // Ellen<65>rizz<7A>k, hogy van Message property
|
||||||
// Assert.IsTrue(root.TryGetProperty("Message", out var messageElement) ||
|
// // Assert.IsTrue(root.TryGetProperty("Message", out var messageElement) ||
|
||||||
// root.TryGetProperty("message", out messageElement),
|
// // root.TryGetProperty("message", out messageElement),
|
||||||
// "Response should contain 'Message' property");
|
// // "Response should contain 'Message' property");
|
||||||
|
|
||||||
// Console.WriteLine($"[Ping] Received message: {messageElement.GetString()}");
|
// // Console.WriteLine($"[Ping] Received message: {messageElement.GetString()}");
|
||||||
// });
|
// // });
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//[TestMethod]
|
// //[TestMethod]
|
||||||
//public async Task SignalR_Echo_ReturnsEchoedData()
|
// //public async Task SignalR_Echo_ReturnsEchoedData()
|
||||||
//{
|
// //{
|
||||||
// var request = new { Id = 42, Name = "TestName" };
|
// // var request = new { Id = 42, Name = "TestName" };
|
||||||
// await TestSignalREndpoint(EchoTag, request, "Echo", response =>
|
// // await TestSignalREndpoint(EchoTag, request, "Echo", response =>
|
||||||
// {
|
// // {
|
||||||
// Assert.IsNotNull(response, "Response should not be null");
|
// // Assert.IsNotNull(response, "Response should not be null");
|
||||||
|
|
||||||
// using var jsonDoc = JsonDocument.Parse(response);
|
// // using var jsonDoc = JsonDocument.Parse(response);
|
||||||
// var root = jsonDoc.RootElement;
|
// // var root = jsonDoc.RootElement;
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k az Id-t
|
// // // Ellen<65>rizz<7A>k az Id-t
|
||||||
// Assert.IsTrue(root.TryGetProperty("Id", out var idElement) ||
|
// // Assert.IsTrue(root.TryGetProperty("Id", out var idElement) ||
|
||||||
// root.TryGetProperty("id", out idElement),
|
// // root.TryGetProperty("id", out idElement),
|
||||||
// "Response should contain 'Id' property");
|
// // "Response should contain 'Id' property");
|
||||||
// Assert.AreEqual(42, idElement.GetInt32(), "Id should be 42");
|
// // Assert.AreEqual(42, idElement.GetInt32(), "Id should be 42");
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k a Name-et
|
// // // Ellen<65>rizz<7A>k a Name-et
|
||||||
// Assert.IsTrue(root.TryGetProperty("Name", out var nameElement) ||
|
// // Assert.IsTrue(root.TryGetProperty("Name", out var nameElement) ||
|
||||||
// root.TryGetProperty("name", out nameElement),
|
// // root.TryGetProperty("name", out nameElement),
|
||||||
// "Response should contain 'Name' property");
|
// // "Response should contain 'Name' property");
|
||||||
// Assert.AreEqual("TestName", nameElement.GetString(), "Name should be 'TestName'");
|
// // Assert.AreEqual("TestName", nameElement.GetString(), "Name should be 'TestName'");
|
||||||
|
|
||||||
// Console.WriteLine($"[Echo] Received: Id={idElement.GetInt32()}, Name={nameElement.GetString()}");
|
// // Console.WriteLine($"[Echo] Received: Id={idElement.GetInt32()}, Name={nameElement.GetString()}");
|
||||||
// });
|
// // });
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//[TestMethod]
|
// //[TestMethod]
|
||||||
//public async Task SignalR_GetTestItems_ReturnsItemList()
|
// //public async Task SignalR_GetTestItems_ReturnsItemList()
|
||||||
//{
|
// //{
|
||||||
// await TestSignalREndpoint(GetTestItemsTag, null, "GetTestItems", response =>
|
// // await TestSignalREndpoint(GetTestItemsTag, null, "GetTestItems", response =>
|
||||||
// {
|
// // {
|
||||||
// Assert.IsNotNull(response, "Response should not be null");
|
// // Assert.IsNotNull(response, "Response should not be null");
|
||||||
|
|
||||||
// using var jsonDoc = JsonDocument.Parse(response);
|
// // using var jsonDoc = JsonDocument.Parse(response);
|
||||||
// var root = jsonDoc.RootElement;
|
// // var root = jsonDoc.RootElement;
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k, hogy t<>mb-e
|
// // // Ellen<65>rizz<7A>k, hogy t<>mb-e
|
||||||
// Assert.AreEqual(JsonValueKind.Array, root.ValueKind, "Response should be an array");
|
// // Assert.AreEqual(JsonValueKind.Array, root.ValueKind, "Response should be an array");
|
||||||
// Assert.IsTrue(root.GetArrayLength() > 0, "Array should have items");
|
// // Assert.IsTrue(root.GetArrayLength() > 0, "Array should have items");
|
||||||
|
|
||||||
// Console.WriteLine($"[GetTestItems] Received {root.GetArrayLength()} items");
|
// // Console.WriteLine($"[GetTestItems] Received {root.GetArrayLength()} items");
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k az els<6C> elemet
|
// // // Ellen<65>rizz<7A>k az els<6C> elemet
|
||||||
// var firstItem = root[0];
|
// // var firstItem = root[0];
|
||||||
// Assert.IsTrue(firstItem.TryGetProperty("Id", out _) || firstItem.TryGetProperty("id", out _),
|
// // Assert.IsTrue(firstItem.TryGetProperty("Id", out _) || firstItem.TryGetProperty("id", out _),
|
||||||
// "Item should have 'Id' property");
|
// // "Item should have 'Id' property");
|
||||||
// Assert.IsTrue(firstItem.TryGetProperty("Name", out _) || firstItem.TryGetProperty("name", out _),
|
// // Assert.IsTrue(firstItem.TryGetProperty("Name", out _) || firstItem.TryGetProperty("name", out _),
|
||||||
// "Item should have 'Name' property");
|
// // "Item should have 'Name' property");
|
||||||
// });
|
// // });
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//#endregion
|
// //#endregion
|
||||||
|
|
||||||
//#region EREDETI BUSINESS ENDPOINT TESZTEK - KIKOMMENTEZVE
|
// //#region EREDETI BUSINESS ENDPOINT TESZTEK - KIKOMMENTEZVE
|
||||||
|
|
||||||
//// ===========================================
|
// //// ===========================================
|
||||||
//// === Az al<61>bbi tesztek az eredeti 3 endpoint-ot tesztelik ===
|
// //// === Az al<61>bbi tesztek az eredeti 3 endpoint-ot tesztelik ===
|
||||||
//// === Vissza<7A>ll<6C>t<EFBFBD>shoz: t<>r<EFBFBD>ld a kommenteket <20>s regisztr<74>ld az endpoint-okat a Program.cs-ben ===
|
// //// === Vissza<7A>ll<6C>t<EFBFBD>shoz: t<>r<EFBFBD>ld a kommenteket <20>s regisztr<74>ld az endpoint-okat a Program.cs-ben ===
|
||||||
//// ===========================================
|
// //// ===========================================
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetMeasuringUsers_ReturnsJson()
|
// //// public async Task SignalR_GetMeasuringUsers_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// await TestSignalREndpoint(GetMeasuringUsersTag, null, "GetMeasuringUsers");
|
// //// await TestSignalREndpoint(GetMeasuringUsersTag, null, "GetMeasuringUsers");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetStockQuantityHistoryDtos_ReturnsJson()
|
// //// public async Task SignalR_GetStockQuantityHistoryDtos_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// await TestSignalREndpoint(GetStockQuantityHistoryDtosTag, null, "GetStockQuantityHistoryDtos");
|
// //// await TestSignalREndpoint(GetStockQuantityHistoryDtosTag, null, "GetStockQuantityHistoryDtos");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetStockQuantityHistoryDtosByProductId_ReturnsJson()
|
// //// public async Task SignalR_GetStockQuantityHistoryDtosByProductId_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// // ProductId = 10
|
// //// // ProductId = 10
|
||||||
//// await TestSignalREndpoint(GetStockQuantityHistoryDtosByProductIdTag, 10, "GetStockQuantityHistoryDtosByProductId");
|
// //// await TestSignalREndpoint(GetStockQuantityHistoryDtosByProductIdTag, 10, "GetStockQuantityHistoryDtosByProductId");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetShippingDocumentsByShippingId_ReturnsJson()
|
// //// public async Task SignalR_GetShippingDocumentsByShippingId_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// // ShippingId = 5
|
// //// // ShippingId = 5
|
||||||
//// await TestSignalREndpoint(GetShippingDocumentsByShippingIdTag, 5, "GetShippingDocumentsByShippingId");
|
// //// await TestSignalREndpoint(GetShippingDocumentsByShippingIdTag, 5, "GetShippingDocumentsByShippingId");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetOrderDtoById_ReturnsJson()
|
// //// public async Task SignalR_GetOrderDtoById_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// // OrderId = 15
|
// //// // OrderId = 15
|
||||||
//// await TestSignalREndpoint(GetOrderDtoByIdTag, 15, "GetOrderDtoById");
|
// //// await TestSignalREndpoint(GetOrderDtoByIdTag, 15, "GetOrderDtoById");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//// [TestMethod]
|
// //// [TestMethod]
|
||||||
//// public async Task SignalR_GetStockTakingItemsById_ReturnsJson()
|
// //// public async Task SignalR_GetStockTakingItemsById_ReturnsJson()
|
||||||
//// {
|
// //// {
|
||||||
//// // StockTakingItemId = 200
|
// //// // StockTakingItemId = 200
|
||||||
//// await TestSignalREndpoint(GetStockTakingItemsByIdTag, 200, "GetStockTakingItemsById");
|
// //// await TestSignalREndpoint(GetStockTakingItemsByIdTag, 200, "GetStockTakingItemsById");
|
||||||
//// }
|
// //// }
|
||||||
|
|
||||||
//#endregion
|
// //#endregion
|
||||||
|
|
||||||
//#region Helper Methods
|
// //#region Helper Methods
|
||||||
|
|
||||||
//private async Task TestSignalREndpoint(int tag, object? parameter, string endpointName, Action<string?>? validateResponse = null)
|
// //private async Task TestSignalREndpoint(int tag, object? parameter, string endpointName, Action<string?>? validateResponse = null)
|
||||||
//{
|
// //{
|
||||||
// var connection = new HubConnectionBuilder()
|
// // var connection = new HubConnectionBuilder()
|
||||||
// .WithUrl(HubUrl)
|
// // .WithUrl(HubUrl)
|
||||||
// .Build();
|
// // .Build();
|
||||||
|
|
||||||
// string? receivedJson = null;
|
// // string? receivedJson = null;
|
||||||
// int receivedTag = -1;
|
// // int receivedTag = -1;
|
||||||
// var responseReceived = new TaskCompletionSource<bool>();
|
// // var responseReceived = new TaskCompletionSource<bool>();
|
||||||
|
|
||||||
// connection.On<int, byte[]>("ReceiveMessage", (responseTag, data) =>
|
// // connection.On<int, byte[]>("ReceiveMessage", (responseTag, data) =>
|
||||||
// {
|
// // {
|
||||||
// receivedTag = responseTag;
|
// // receivedTag = responseTag;
|
||||||
// if (data != null && data.Length > 0)
|
// // if (data != null && data.Length > 0)
|
||||||
// {
|
// // {
|
||||||
// receivedJson = Encoding.UTF8.GetString(data);
|
// // receivedJson = Encoding.UTF8.GetString(data);
|
||||||
// }
|
// // }
|
||||||
// responseReceived.TrySetResult(true);
|
// // responseReceived.TrySetResult(true);
|
||||||
// });
|
// // });
|
||||||
|
|
||||||
// try
|
// // try
|
||||||
// {
|
// // {
|
||||||
// await connection.StartAsync();
|
// // await connection.StartAsync();
|
||||||
// Assert.AreEqual(HubConnectionState.Connected, connection.State, $"Failed to connect to SignalR hub for {endpointName}");
|
// // Assert.AreEqual(HubConnectionState.Connected, connection.State, $"Failed to connect to SignalR hub for {endpointName}");
|
||||||
|
|
||||||
// // K<>sz<73>ts<74>k el a request data-t
|
// // // K<>sz<73>ts<74>k el a request data-t
|
||||||
// // Ha nincs param<61>ter, null-t k<>ld<6C>nk (nem <20>res byte t<>mb<6D>t!)
|
// // // Ha nincs param<61>ter, null-t k<>ld<6C>nk (nem <20>res byte t<>mb<6D>t!)
|
||||||
// byte[]? requestData = parameter != null
|
// // byte[]? requestData = parameter != null
|
||||||
// ? Encoding.UTF8.GetBytes(JsonSerializer.Serialize(parameter))
|
// // ? Encoding.UTF8.GetBytes(JsonSerializer.Serialize(parameter))
|
||||||
// : null;
|
// // : null;
|
||||||
|
|
||||||
// // A Hub met<65>dus neve: OnReceiveMessage (3 param<61>ter: messageTag, messageBytes, requestId)
|
// // // A Hub met<65>dus neve: OnReceiveMessage (3 param<61>ter: messageTag, messageBytes, requestId)
|
||||||
// await connection.InvokeAsync("OnReceiveMessage", tag, requestData, (int?)null);
|
// // await connection.InvokeAsync("OnReceiveMessage", tag, requestData, (int?)null);
|
||||||
|
|
||||||
// var completed = await Task.WhenAny(responseReceived.Task, Task.Delay(15000));
|
// // var completed = await Task.WhenAny(responseReceived.Task, Task.Delay(15000));
|
||||||
|
|
||||||
// if (completed == responseReceived.Task)
|
// // if (completed == responseReceived.Task)
|
||||||
// {
|
// // {
|
||||||
// Console.WriteLine($"[{endpointName}] Response tag: {receivedTag}");
|
// // Console.WriteLine($"[{endpointName}] Response tag: {receivedTag}");
|
||||||
// Console.WriteLine($"[{endpointName}] Response JSON: {receivedJson?.Substring(0, Math.Min(500, receivedJson?.Length ?? 0))}...");
|
// // Console.WriteLine($"[{endpointName}] Response JSON: {receivedJson?.Substring(0, Math.Min(500, receivedJson?.Length ?? 0))}...");
|
||||||
|
|
||||||
// // Ellen<65>rizz<7A>k, hogy valid JSON-e (ha van adat)
|
// // // Ellen<65>rizz<7A>k, hogy valid JSON-e (ha van adat)
|
||||||
// if (!string.IsNullOrEmpty(receivedJson))
|
// // if (!string.IsNullOrEmpty(receivedJson))
|
||||||
// {
|
// // {
|
||||||
// try
|
// // try
|
||||||
// {
|
// // {
|
||||||
// using var jsonDoc = JsonDocument.Parse(receivedJson);
|
// // using var jsonDoc = JsonDocument.Parse(receivedJson);
|
||||||
// Assert.IsTrue(
|
// // Assert.IsTrue(
|
||||||
// jsonDoc.RootElement.ValueKind == JsonValueKind.Array ||
|
// // jsonDoc.RootElement.ValueKind == JsonValueKind.Array ||
|
||||||
// jsonDoc.RootElement.ValueKind == JsonValueKind.Object ||
|
// // jsonDoc.RootElement.ValueKind == JsonValueKind.Object ||
|
||||||
// jsonDoc.RootElement.ValueKind == JsonValueKind.Null,
|
// // jsonDoc.RootElement.ValueKind == JsonValueKind.Null,
|
||||||
// $"[{endpointName}] Response is not a valid JSON");
|
// // $"[{endpointName}] Response is not a valid JSON");
|
||||||
|
|
||||||
// // Custom validation
|
// // // Custom validation
|
||||||
// validateResponse?.Invoke(receivedJson);
|
// // validateResponse?.Invoke(receivedJson);
|
||||||
// }
|
// // }
|
||||||
// catch (JsonException ex)
|
// // catch (JsonException ex)
|
||||||
// {
|
// // {
|
||||||
// Assert.Fail($"[{endpointName}] Invalid JSON response: {ex.Message}");
|
// // Assert.Fail($"[{endpointName}] Invalid JSON response: {ex.Message}");
|
||||||
// }
|
// // }
|
||||||
// }
|
// // }
|
||||||
// }
|
// // }
|
||||||
// else
|
// // else
|
||||||
// {
|
// // {
|
||||||
// Assert.AreEqual(HubConnectionState.Connected, connection.State,
|
// // Assert.AreEqual(HubConnectionState.Connected, connection.State,
|
||||||
// $"[{endpointName}] Connection was closed - check SANDBOX logs for DI errors");
|
// // $"[{endpointName}] Connection was closed - check SANDBOX logs for DI errors");
|
||||||
// }
|
// // }
|
||||||
// }
|
// // }
|
||||||
// catch (Exception ex)
|
// // catch (Exception ex)
|
||||||
// {
|
// // {
|
||||||
// Assert.Fail($"[{endpointName}] SignalR error: {ex.Message}. Check SANDBOX logs for missing DI registrations.");
|
// // Assert.Fail($"[{endpointName}] SignalR error: {ex.Message}. Check SANDBOX logs for missing DI registrations.");
|
||||||
// }
|
// // }
|
||||||
// finally
|
// // finally
|
||||||
// {
|
// // {
|
||||||
// if (connection.State == HubConnectionState.Connected)
|
// // if (connection.State == HubConnectionState.Connected)
|
||||||
// {
|
// // {
|
||||||
// await connection.StopAsync();
|
// // await connection.StopAsync();
|
||||||
// }
|
// // }
|
||||||
// }
|
// // }
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
#endregion
|
// #endregion
|
||||||
}
|
//}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
@using System.Collections.ObjectModel
|
||||||
|
@using AyCode.Blazor.Components.Components.Grids
|
||||||
|
@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.Databases
|
||||||
|
@using FruitBankHybrid.Shared.Services.Loggers
|
||||||
|
@using FruitBankHybrid.Shared.Services.SignalRs
|
||||||
|
|
||||||
|
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||||
|
@inject FruitBankSignalRClient FruitBankSignalRClient
|
||||||
|
|
||||||
|
<MgGridWithInfoPanel ShowInfoPanel="@IsMasterGrid">
|
||||||
|
<GridContent>
|
||||||
|
<GridCargoPartnerBase @ref="Grid"
|
||||||
|
DataSource="CargoPartners"
|
||||||
|
AutoSaveLayoutName="GridCargoPartner"
|
||||||
|
SignalRClient="FruitBankSignalRClient"
|
||||||
|
Logger="_logger"
|
||||||
|
CssClass="@GridCss"
|
||||||
|
ValidationEnabled="false"
|
||||||
|
OnGridFocusedRowChanged="Grid_FocusedRowChanged">
|
||||||
|
<Columns>
|
||||||
|
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" ReadOnly="true" />
|
||||||
|
|
||||||
|
<DxGridDataColumn FieldName="Name" />
|
||||||
|
<DxGridDataColumn FieldName="TaxId" />
|
||||||
|
<DxGridDataColumn FieldName="CertificationNumber" />
|
||||||
|
<DxGridDataColumn FieldName="@nameof(Partner.CountryCode)" />
|
||||||
|
<DxGridDataColumn FieldName="PostalCode" />
|
||||||
|
<DxGridDataColumn FieldName="@nameof(CargoPartner.Country)" />
|
||||||
|
<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 = ((CargoPartner)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)
|
||||||
|
{
|
||||||
|
<MgGridToolbarTemplate Grid="Grid" OnReloadDataClick="() => ReloadDataFromDb(true)" />
|
||||||
|
}
|
||||||
|
</ToolbarTemplate>
|
||||||
|
</GridCargoPartnerBase>
|
||||||
|
</GridContent>
|
||||||
|
</MgGridWithInfoPanel>
|
||||||
|
|
||||||
|
@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<CargoPartner>? CargoPartners { get; set; }
|
||||||
|
[Parameter] public AcObservableCollection<Shipping>? Shippings { get; set; }
|
||||||
|
|
||||||
|
const string ExportFileName = "ExportResult";
|
||||||
|
string GridSearchText = "";
|
||||||
|
bool EditItemsEnabled { get; set; }
|
||||||
|
int FocusedRowVisibleIndex { get; set; }
|
||||||
|
public GridCargoPartnerBase Grid { get; set; }
|
||||||
|
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
|
||||||
|
|
||||||
|
private int _activeTabIndex;
|
||||||
|
private LoggerClient<GridCargoPartner> _logger;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
_logger = new LoggerClient<GridCargoPartner>(LogWriters.ToArray());
|
||||||
|
await ReloadDataFromDb(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task ReloadDataFromDb(bool forceReload = false)
|
||||||
|
{
|
||||||
|
if (!IsMasterGrid) return;
|
||||||
|
|
||||||
|
if (Grid == null) return;
|
||||||
|
|
||||||
|
using (await ObjectLock.GetSemaphore<CargoPartner>().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.Cargos;
|
||||||
|
|
||||||
|
public class GridCargoPartnerBase: FruitBankGridBase<CargoPartner>, IGrid
|
||||||
|
{
|
||||||
|
private bool _isFirstInitializeParameterCore;
|
||||||
|
private bool _isFirstInitializeParameters;
|
||||||
|
|
||||||
|
public GridCargoPartnerBase() : base()
|
||||||
|
{
|
||||||
|
GetAllMessageTag = SignalRTags.GetCargoPartners;
|
||||||
|
AddMessageTag = SignalRTags.AddCargoPartner;
|
||||||
|
UpdateMessageTag = SignalRTags.UpdateCargoPartner;
|
||||||
|
|
||||||
|
//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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
<DxGridDataColumn FieldName="Name" />
|
<DxGridDataColumn FieldName="Name" />
|
||||||
<DxGridDataColumn FieldName="TaxId" />
|
<DxGridDataColumn FieldName="TaxId" />
|
||||||
<DxGridDataColumn FieldName="CertificationNumber" />
|
<DxGridDataColumn FieldName="CertificationNumber" />
|
||||||
|
<DxGridDataColumn FieldName="@nameof(Partner.CountryCode)" />
|
||||||
<DxGridDataColumn FieldName="PostalCode" />
|
<DxGridDataColumn FieldName="PostalCode" />
|
||||||
<DxGridDataColumn FieldName="@nameof(Partner.Country)" />
|
<DxGridDataColumn FieldName="@nameof(Partner.Country)" />
|
||||||
<DxGridDataColumn FieldName="State" />
|
<DxGridDataColumn FieldName="State" />
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
@using FruitBank.Common.Dtos
|
@using FruitBank.Common.Dtos
|
||||||
@using FruitBank.Common.Entities
|
@using FruitBank.Common.Entities
|
||||||
@using FruitBankHybrid.Shared.Components
|
@using FruitBankHybrid.Shared.Components
|
||||||
|
@using FruitBankHybrid.Shared.Components.Grids.Cargos
|
||||||
@using FruitBankHybrid.Shared.Components.Grids.Partners
|
@using FruitBankHybrid.Shared.Components.Grids.Partners
|
||||||
@using FruitBankHybrid.Shared.Components.Grids.Shippings
|
@using FruitBankHybrid.Shared.Components.Grids.Shippings
|
||||||
@using FruitBankHybrid.Shared.Databases
|
@using FruitBankHybrid.Shared.Databases
|
||||||
|
|
@ -25,6 +26,9 @@
|
||||||
<DxTabPage Text="Beszállítók" Visible="@(LoggedInModel.IsAdministrator)">
|
<DxTabPage Text="Beszállítók" Visible="@(LoggedInModel.IsAdministrator)">
|
||||||
<GridPartner @ref="gridPartner" Partners="@Partners" IsMasterGrid="true"></GridPartner>
|
<GridPartner @ref="gridPartner" Partners="@Partners" IsMasterGrid="true"></GridPartner>
|
||||||
</DxTabPage>
|
</DxTabPage>
|
||||||
|
<DxTabPage Text="Fuvarozók" Visible="@(LoggedInModel.IsAdministrator)">
|
||||||
|
<GridCargoPartner @ref="gridCargoPartner" CargoPartners="CargoPartners" IsMasterGrid="true"></GridCargoPartner>
|
||||||
|
</DxTabPage>
|
||||||
<DxTabPage Text="Szállítmányok">
|
<DxTabPage Text="Szállítmányok">
|
||||||
<GridShipping @ref="gridShipping" Shippings="@Shippings" Partners="@Partners" IsMasterGrid="true"></GridShipping>
|
<GridShipping @ref="gridShipping" Shippings="@Shippings" Partners="@Partners" IsMasterGrid="true"></GridShipping>
|
||||||
</DxTabPage>
|
</DxTabPage>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ using FruitBankHybrid.Shared.Services.Loggers;
|
||||||
using FruitBankHybrid.Shared.Services.SignalRs;
|
using FruitBankHybrid.Shared.Services.SignalRs;
|
||||||
using Mango.Nop.Core.Loggers;
|
using Mango.Nop.Core.Loggers;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using FruitBankHybrid.Shared.Components.Grids.Cargos;
|
||||||
|
|
||||||
namespace FruitBankHybrid.Shared.Pages;
|
namespace FruitBankHybrid.Shared.Pages;
|
||||||
|
|
||||||
|
|
@ -29,6 +30,7 @@ public partial class ShippingsAdmin : ComponentBase
|
||||||
|
|
||||||
private GridProductDtoTemplate gridProductDtoTemplate;
|
private GridProductDtoTemplate gridProductDtoTemplate;
|
||||||
private GridPartner gridPartner;
|
private GridPartner gridPartner;
|
||||||
|
private GridCargoPartner gridCargoPartner;
|
||||||
private GridShipping gridShipping;
|
private GridShipping gridShipping;
|
||||||
private GridShippingDocument gridShippingDocument;
|
private GridShippingDocument gridShippingDocument;
|
||||||
private GridShippingItemTemplate gridShippingItemTemplate;
|
private GridShippingItemTemplate gridShippingItemTemplate;
|
||||||
|
|
@ -39,6 +41,7 @@ public partial class ShippingsAdmin : ComponentBase
|
||||||
public AcObservableCollection<ShippingItem> ShippingItems { get; set; } = [];
|
public AcObservableCollection<ShippingItem> ShippingItems { get; set; } = [];
|
||||||
public List<ShippingItemPallet> ShippingItemPallets { get; set; } = [];
|
public List<ShippingItemPallet> ShippingItemPallets { get; set; } = [];
|
||||||
public AcObservableCollection<Partner> Partners { get; set; } = [];
|
public AcObservableCollection<Partner> Partners { get; set; } = [];
|
||||||
|
public AcObservableCollection<CargoPartner> CargoPartners { get; set; } = [];
|
||||||
|
|
||||||
public bool AutoCollapseDetailRow { get; set; }
|
public bool AutoCollapseDetailRow { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,22 +60,20 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
||||||
public Task<List<MeasuringModel>?> GetMeasuringModels()
|
public Task<List<MeasuringModel>?> GetMeasuringModels()
|
||||||
=> GetAllAsync<List<MeasuringModel>>(SignalRTags.GetMeasuringModels);
|
=> GetAllAsync<List<MeasuringModel>>(SignalRTags.GetMeasuringModels);
|
||||||
|
|
||||||
public Task<List<Partner>?> GetPartners()
|
|
||||||
=> GetAllAsync<List<Partner>>(SignalRTags.GetPartners);
|
|
||||||
|
|
||||||
#region Partner
|
#region Partner
|
||||||
|
public Task<List<Partner>?> GetPartners() => GetAllAsync<List<Partner>>(SignalRTags.GetPartners);
|
||||||
public Task<Partner?> GetPartnerById(int id)
|
public Task<Partner?> GetPartnerById(int id) => GetByIdAsync<Partner?>(SignalRTags.GetPartnerById, id);
|
||||||
=> GetByIdAsync<Partner?>(SignalRTags.GetPartnerById, id);
|
public Task<Partner?> AddPartner(Partner partner) => PostDataAsync(SignalRTags.AddPartner, partner);
|
||||||
|
public Task<Partner?> UpdatePartner(Partner partner) => PostDataAsync(SignalRTags.UpdatePartner, partner);
|
||||||
public Task<Partner?> AddPartner(Partner partner)
|
|
||||||
=> PostDataAsync(SignalRTags.AddPartner, partner);
|
|
||||||
|
|
||||||
public Task<Partner?> UpdatePartner(Partner partner)
|
|
||||||
=> PostDataAsync(SignalRTags.UpdatePartner, partner);
|
|
||||||
|
|
||||||
#endregion Partner
|
#endregion Partner
|
||||||
|
|
||||||
|
#region CargoPartner
|
||||||
|
public Task<List<CargoPartner>?> GetCargoPartners() => GetAllAsync<List<CargoPartner>>(SignalRTags.GetCargoPartners);
|
||||||
|
public Task<CargoPartner?> GetCargoPartnerById(int id) => GetByIdAsync<CargoPartner?>(SignalRTags.GetCargoPartnerById, id);
|
||||||
|
public Task<CargoPartner?> AddCargoPartner(CargoPartner cargoPartner) => PostDataAsync(SignalRTags.AddCargoPartner, cargoPartner);
|
||||||
|
public Task<CargoPartner?> UpdateCargoPartner(CargoPartner cargoPartner) => PostDataAsync(SignalRTags.UpdateCargoPartner, cargoPartner);
|
||||||
|
#endregion CargoPartner
|
||||||
|
|
||||||
#region Shipping
|
#region Shipping
|
||||||
|
|
||||||
public Task<List<Shipping>?> GetShippings()
|
public Task<List<Shipping>?> GetShippings()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue