diff --git a/FruitBank.Common/Dtos/OrderDto.cs b/FruitBank.Common/Dtos/OrderDto.cs index c2e1f3e..a3543ba 100644 --- a/FruitBank.Common/Dtos/OrderDto.cs +++ b/FruitBank.Common/Dtos/OrderDto.cs @@ -1,10 +1,13 @@ -using FruitBank.Common.Interfaces; +using AyCode.Core.Extensions; +using FruitBank.Common.Interfaces; using Mango.Nop.Core.Dtos; +using Mango.Nop.Core.Interfaces; +using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Orders; namespace FruitBank.Common.Dtos; -public class OrderDto : MgOrderDto, IOrderDto +public class OrderDto : MgOrderDto, IOrderDto { public OrderDto() :base() { } diff --git a/FruitBank.Common/Dtos/OrderItemDto.cs b/FruitBank.Common/Dtos/OrderItemDto.cs new file mode 100644 index 0000000..3c932dd --- /dev/null +++ b/FruitBank.Common/Dtos/OrderItemDto.cs @@ -0,0 +1,35 @@ +using FruitBank.Common.Entities; +using FruitBank.Common.Interfaces; +using Mango.Nop.Core.Dtos; +using Nop.Core.Domain.Orders; + +namespace FruitBank.Common.Dtos; + +public class OrderItemDto : MgOrderItemDto, IOrderItemDto +{ + public List OrderItemPallets { get; set; } + + public OrderItemDto() : base() + { + } + + public OrderItemDto(int orderItemId) : base(orderItemId) + { + } + + public OrderItemDto(OrderItem orderItem) : base(orderItem) + { + } + + public void CopyEntityValuesToDto(OrderItem entity, ProductDto productDto, List orderItemPallets) + { + base.CopyEntityValuesToDto(entity, productDto); + + InitializeOrderItemPallets(orderItemPallets); + } + + public void InitializeOrderItemPallets(List orderItemPallets) + { + OrderItemPallets = orderItemPallets; + } +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs index e7518f0..dfc0893 100644 --- a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs +++ b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs @@ -1,8 +1,11 @@ -using Mango.Nop.Core.Models; +using FruitBank.Common.Dtos; +using Mango.Nop.Core.Models; namespace FruitBank.Common.Interfaces; public interface ICustomOrderSignalREndpointCommon { - //Task GetPendingOrderModels(); + Task?> GetAllOrderDtos(); + Task GetOrderDtoById(int orderId); + Task?> GetPendingOrderDtos(); } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IOrderDto.cs b/FruitBank.Common/Interfaces/IOrderDto.cs index eb359b6..393571f 100644 --- a/FruitBank.Common/Interfaces/IOrderDto.cs +++ b/FruitBank.Common/Interfaces/IOrderDto.cs @@ -1,8 +1,10 @@ -using Mango.Nop.Core.Interfaces; +using FruitBank.Common.Dtos; +using Mango.Nop.Core.Dtos; +using Mango.Nop.Core.Interfaces; namespace FruitBank.Common.Interfaces; -public interface IOrderDto : IMgOrderDto +public interface IOrderDto : IMgOrderDto { } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IOrderItemDto.cs b/FruitBank.Common/Interfaces/IOrderItemDto.cs new file mode 100644 index 0000000..7775a35 --- /dev/null +++ b/FruitBank.Common/Interfaces/IOrderItemDto.cs @@ -0,0 +1,13 @@ +using FruitBank.Common.Dtos; +using FruitBank.Common.Entities; +using Mango.Nop.Core.Dtos; +using Mango.Nop.Core.Interfaces; +using Nop.Core.Domain.Catalog; + +namespace FruitBank.Common.Interfaces; + +public interface IOrderItemDto : IMgOrderItemDto +{ + public List OrderItemPallets { get; set; } + public void InitializeOrderItemPallets(List orderItemPallets); +} \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index 3bd2360..958f01c 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -45,7 +45,9 @@ public class SignalRTags : AcSignalRTags public const int AddOrUpdateMeasuredShippingItemPallet = 97; public const int AddOrUpdateMeasuredShippingItemPallets = 98; - public const int GetPendingOrderModels = 115; + public const int GetAllOrderDtos = 111; + public const int GetOrderDtoById = 112; + public const int GetPendingOrderDtos = 115; public const int AuthenticateUser = 160; public const int RefreshToken = 200; diff --git a/FruitBankHybrid.Shared.Tests/OrderClientTests.cs b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs new file mode 100644 index 0000000..5fa1ced --- /dev/null +++ b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs @@ -0,0 +1,59 @@ +using AyCode.Core.Enums; +using AyCode.Core.Loggers; +using FruitBank.Common.Loggers; +using FruitBankHybrid.Shared.Services.SignalRs; +using Nop.Core.Domain.Orders; + +namespace FruitBankHybrid.Shared.Tests; + +[TestClass] +public sealed class OrderClientTests +{ + private const int CustomerIdAasdDsserverCom = 6; //aasd@dsserver.com + + private FruitBankSignalRClient _signalRClient = null!; + + [TestInitialize] + public void TestInit() + { + _signalRClient = new FruitBankSignalRClient(new List + { + //new ConsoleLogWriter(AppType.TestUnit, LogLevel.Detail, nameof(FruitBankClientTests)), + new SignaRClientLogItemWriter(AppType.TestUnit, LogLevel.Detail, nameof(FruitBankClientTests)) + }); + } + + + [TestMethod] + public async Task GetAllOrderDtos() + { + var orderDtos = await _signalRClient.GetAllOrderDtos(); + + Assert.IsNotNull(orderDtos); + Assert.IsTrue(orderDtos.Count != 0); + } + + [TestMethod] + public async Task GetPendingOrderDtos() + { + var pendingOrderDtos = await _signalRClient.GetPendingOrderDtos(); + + Assert.IsNotNull(pendingOrderDtos); + + Assert.IsTrue(pendingOrderDtos.All(o => o.OrderStatus == OrderStatus.Pending)); + Assert.IsTrue(pendingOrderDtos.Count != 0); + } + + [TestMethod] + [DataRow(1)] + [DataRow(2)] + [DataRow(3)] + public async Task GetOrderDtoById(int orderId) + { + var orderDto = await _signalRClient.GetOrderDtoById(orderId); + + Assert.IsNotNull(orderDto); + Assert.IsTrue(orderDto.OrderStatusId >= 10); + //Assert.IsTrue(orderDto.CustomOrderNumber == orderId.ToString()); + } +} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs index 30d62e0..e8f3dab 100644 --- a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs +++ b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs @@ -15,7 +15,7 @@ using Nop.Core.Domain.Customers; namespace FruitBankHybrid.Shared.Services.SignalRs { - public class FruitBankSignalRClient : AcSignalRClientBase, IFruitBankDataControllerClient + public class FruitBankSignalRClient : AcSignalRClientBase, IFruitBankDataControllerClient, ICustomOrderSignalREndpointClient { public FruitBankSignalRClient( /*IServiceProvider serviceProvider, */ IEnumerable logWriters) : base($"{FruitBankConstClient.BaseUrl}/{FruitBankConstClient.DefaultHubName}", new LoggerClient(nameof(FruitBankSignalRClient), logWriters.ToArray())) { @@ -123,5 +123,16 @@ namespace FruitBankHybrid.Shared.Services.SignalRs public Task LoginMeasuringUser(MgLoginModelRequest loginModelRequest) => PostDataAsync(SignalRTags.AuthenticateUser, loginModelRequest); #endregion Authenticate + + #region Orders + public Task?> GetAllOrderDtos() + => GetAllAsync>(SignalRTags.GetAllOrderDtos); + + public Task GetOrderDtoById(int orderId) + => GetByIdAsync(SignalRTags.GetOrderDtoById, orderId); + + public Task?> GetPendingOrderDtos() + => GetAllAsync>(SignalRTags.GetPendingOrderDtos); + #endregion Orders } }