From de04ab8cf17141e9c9878db69dab9353ae14b2a0 Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 7 Mar 2022 15:03:12 +0300 Subject: [PATCH 01/47] Added list orders and its unit test Added list orders for Admin UI. --- .../Orders/GetOrdersInput.cs | 7 +++ .../Orders/IOrderAppService.cs | 1 + .../Orders/OrderAppService.cs | 9 ++- .../Orders/IOrderRepository.cs | 5 ++ .../Orders/EfCoreOrderRepository.cs | 12 ++++ .../OrderClientProxy.Generated.cs | 63 ++++++++++--------- .../ordering-generate-proxy.json | 37 +++++++++++ .../Orders/OrderApplication_Tests.cs | 32 +++++++--- 8 files changed, 127 insertions(+), 39 deletions(-) create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/GetOrdersInput.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/GetOrdersInput.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/GetOrdersInput.cs new file mode 100644 index 00000000..8be79fd0 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/GetOrdersInput.cs @@ -0,0 +1,7 @@ +namespace EShopOnAbp.OrderingService.Orders +{ + public class GetOrdersInput + { + public string Filter { get; set; } + } +} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs index 61282b4d..38cb1c94 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs @@ -10,5 +10,6 @@ public interface IOrderAppService : IApplicationService Task CreateAsync(OrderCreateDto input); Task GetAsync(Guid id); Task> GetMyOrdersAsync(GetMyOrdersInput input); + Task> GetOrdersAsync(GetOrdersInput input); Task GetByOrderNoAsync(int orderNo); } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 19c0701a..a152e801 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -34,9 +34,14 @@ public class OrderAppService : ApplicationService, IOrderAppService public async Task> GetMyOrdersAsync(GetMyOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); - var orders = await _orderRepository.GetOrdersByUserId(CurrentUser.GetId(), specification, true); - + return CreateOrderDtoMapping(orders); + } + + public async Task> GetOrdersAsync(GetOrdersInput input) + { + ISpecification specification = SpecificationFactory.Create(input.Filter); + var orders = await _orderRepository.GetOrders(specification, true); return CreateOrderDtoMapping(orders); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs index a9494c97..c031ea4f 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs @@ -15,6 +15,11 @@ public interface IOrderRepository : IRepository bool includeDetails = true, CancellationToken cancellationToken = default); + Task> GetOrders( + ISpecification spec, + bool includeDetails = true, + CancellationToken cancellationToken = default); + Task GetByOrderNoAsync(int orderNo, bool includeDetails = true, CancellationToken cancellationToken = default); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs index 45ef6948..c1fbe930 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs @@ -42,6 +42,18 @@ public class EfCoreOrderRepository : EfCoreRepository> GetOrders( + ISpecification spec, + bool includeDetails = false, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails(includeDetails) + .Where(spec.ToExpression()) + .OrderByDescending(o => o.OrderDate) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public async Task GetByOrderNoAsync( int orderNo, bool includeDetails = true, diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs index 34926156..0a1c3b5b 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs @@ -10,42 +10,49 @@ using EShopOnAbp.OrderingService.Orders; using System.Collections.Generic; // ReSharper disable once CheckNamespace -namespace EShopOnAbp.OrderingService.Orders.ClientProxies +namespace EShopOnAbp.OrderingService.Orders.ClientProxies; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IOrderAppService), typeof(OrderClientProxy))] +public partial class OrderClientProxy : ClientProxyBase, IOrderAppService { - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(IOrderAppService), typeof(OrderClientProxy))] - public partial class OrderClientProxy : ClientProxyBase, IOrderAppService + public virtual async Task GetAsync(Guid id) { - public virtual async Task GetAsync(Guid id) + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue { - return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue - { - { typeof(Guid), id } - }); - } + { typeof(Guid), id } + }); + } - public virtual async Task> GetMyOrdersAsync(GetMyOrdersInput input) + public virtual async Task> GetMyOrdersAsync(GetMyOrdersInput input) + { + return await RequestAsync>(nameof(GetMyOrdersAsync), new ClientProxyRequestTypeValue { - return await RequestAsync>(nameof(GetMyOrdersAsync), new ClientProxyRequestTypeValue - { - { typeof(GetMyOrdersInput), input } - }); - } + { typeof(GetMyOrdersInput), input } + }); + } - public virtual async Task GetByOrderNoAsync(int orderNo) + public virtual async Task> GetOrdersAsync(GetOrdersInput input) + { + return await RequestAsync>(nameof(GetOrdersAsync), new ClientProxyRequestTypeValue { - return await RequestAsync(nameof(GetByOrderNoAsync), new ClientProxyRequestTypeValue - { - { typeof(int), orderNo } - }); - } + { typeof(GetOrdersInput), input } + }); + } - public virtual async Task CreateAsync(OrderCreateDto input) + public virtual async Task GetByOrderNoAsync(int orderNo) + { + return await RequestAsync(nameof(GetByOrderNoAsync), new ClientProxyRequestTypeValue + { + { typeof(int), orderNo } + }); + } + + public virtual async Task CreateAsync(OrderCreateDto input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue { - return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue - { - { typeof(OrderCreateDto), input } - }); - } + { typeof(OrderCreateDto), input } + }); } } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json index ecfb20cf..edadeb72 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json @@ -97,6 +97,43 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, + "GetOrdersAsyncByInput": { + "uniqueName": "GetOrdersAsyncByInput", + "name": "GetOrdersAsync", + "httpMethod": "GET", + "url": "api/ordering/order/orders", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.GetOrdersInput, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.GetOrdersInput", + "typeSimple": "EShopOnAbp.OrderingService.Orders.GetOrdersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Collections.Generic.List", + "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderDto]" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, "GetByOrderNoAsyncByOrderNo": { "uniqueName": "GetByOrderNoAsyncByOrderNo", "name": "GetByOrderNoAsync", diff --git a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs index 247737af..589b1d99 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs @@ -1,15 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using NSubstitute; using Shouldly; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.Users; using Xunit; namespace EShopOnAbp.OrderingService.Orders; -public class OrderApplication_Tests:OrderingServiceApplicationTestBase +public class OrderApplication_Tests : OrderingServiceApplicationTestBase { private readonly IOrderAppService _orderAppService; private readonly TestData _testData; @@ -38,8 +38,12 @@ public class OrderApplication_Tests:OrderingServiceApplicationTestBase { new OrderItemCreateDto() { - Discount = 0, Units = 2, PictureUrl = "", ProductCode = "Test-001", ProductId = Guid.NewGuid(), - ProductName = "Test product", UnitPrice = 150 + Discount = 0, + Units = 2, PictureUrl = string.Empty, + ProductCode = "Test-001", + ProductId = Guid.NewGuid(), + ProductName = "Test product", + UnitPrice = 150 } }; @@ -48,14 +52,24 @@ public class OrderApplication_Tests:OrderingServiceApplicationTestBase PaymentMethod = "paypal", Address = new OrderAddressDto() { - City = "Test City", Country = "Test Country", Description = "No Description", Street = "Test Street", + City = "Test City", + Country = "Test Country", + Description = "No Description", + Street = "Test Street", ZipCode = "Test ZipCode" }, Products = orderItems }); - + // Get Order by OrderNo; var myOrder = await _orderAppService.GetByOrderNoAsync(placedOrder.OrderNo); myOrder.ShouldNotBeNull(); + + // Get all orders + var orders = await _orderAppService.GetOrdersAsync(new GetOrdersInput() + { + Filter = string.Empty, + }); + orders.ShouldNotBeNull(); } } \ No newline at end of file From 418f060507c868e7650e962a70b3f636f6b706b3 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 8 Mar 2022 15:10:26 +0300 Subject: [PATCH 02/47] Added SetOrder for different situation Still need the improvement --- .../Orders/IOrderAppService.cs | 1 + .../Orders/OrderDto.cs | 2 +- .../Orders/UpdateOrderDto.cs | 7 +++ .../Orders/OrderAppService.cs | 17 ++++-- .../Orders/Order.cs | 21 +++++-- .../Orders/OrderStatus.cs | 7 ++- .../OrderClientProxy.Generated.cs | 9 +++ .../ordering-generate-proxy.json | 57 +++++++++++++++++++ .../Orders/OrderApplication_Tests.cs | 12 +++- 9 files changed, 119 insertions(+), 14 deletions(-) create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs index 38cb1c94..7812d9a7 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs @@ -12,4 +12,5 @@ public interface IOrderAppService : IApplicationService Task> GetMyOrdersAsync(GetMyOrdersInput input); Task> GetOrdersAsync(GetOrdersInput input); Task GetByOrderNoAsync(int orderNo); + Task UpdateAsync(Guid id, UpdateOrderDto input); } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 29ca1943..a946b377 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -7,7 +7,7 @@ namespace EShopOnAbp.OrderingService.Orders; public class OrderDto : EntityDto { public DateTime OrderDate { get; set; } - public int OrderNo {get;set;} + public int OrderNo { get; set; } public int OrderStatusId { get; set; } public string OrderStatus { get; set; } public string PaymentMethod { get; set; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs new file mode 100644 index 00000000..c907dea9 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs @@ -0,0 +1,7 @@ +namespace EShopOnAbp.OrderingService.Orders +{ + public class UpdateOrderDto + { + public int OrderStatusId { get; set; } + } +} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index a152e801..40911bf2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -1,9 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Localization; +using EShopOnAbp.OrderingService.Localization; using EShopOnAbp.OrderingService.Orders.Specifications; using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Specifications; using Volo.Abp.Users; @@ -52,6 +52,15 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(order); } + public async Task UpdateAsync(Guid id, UpdateOrderDto input) + { + var order = await _orderRepository.GetAsync(id); + order.SetOrder(input.OrderStatusId); + await _orderRepository.UpdateAsync(order); + return CreateOrderDtoMapping(order); + + } + public async Task CreateAsync(OrderCreateDto input) { var orderItems = GetProductListTuple(input.Products); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index 989208a0..085d6b56 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -1,8 +1,8 @@ -using System; +using EShopOnAbp.PaymentService.PaymentRequests; +using JetBrains.Annotations; +using System; using System.Collections.Generic; using System.Linq; -using EShopOnAbp.PaymentService.PaymentRequests; -using JetBrains.Annotations; using Volo.Abp; using Volo.Abp.Domain.Entities; @@ -25,7 +25,7 @@ public class Order : AggregateRoot { } - internal Order(Guid id, Buyer buyer, Address address, [NotNull]string paymentMethod, Guid? paymentRequestId = null) : base(id) + internal Order(Guid id, Buyer buyer, Address address, [NotNull] string paymentMethod, Guid? paymentRequestId = null) : base(id) { _orderStatusId = OrderStatus.Placed.Id; OrderDate = DateTime.UtcNow; @@ -33,7 +33,7 @@ public class Order : AggregateRoot Buyer = buyer; Address = address; PaymentRequestId = paymentRequestId; - PaymentMethod = Check.NotNullOrEmpty(paymentMethod,nameof(paymentMethod),maxLength:OrderConstants.OrderPaymentMethodNameMaxLength); + PaymentMethod = Check.NotNullOrEmpty(paymentMethod, nameof(paymentMethod), maxLength: OrderConstants.OrderPaymentMethodNameMaxLength); PaymentStatus = PaymentRequestState.Waiting.ToString(); // From PaymentService.Domain.Shared OrderItems = new List(); } @@ -87,4 +87,15 @@ public class Order : AggregateRoot { return OrderItems.Sum(o => o.Units * o.UnitPrice); } + + public Order SetOrder(int orderStatus) + { + if (orderStatus == OrderStatus.Cancelled.Id) + { + return this; + } + //TODO no enough to update the object. + _orderStatusId = orderStatus; + return this; + } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs index dcd06c06..93c4efdb 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs @@ -5,6 +5,7 @@ using Volo.Abp; namespace EShopOnAbp.OrderingService.Orders; +//TODO will use enum instead of Enumeration public class OrderStatus : Enumeration { public static OrderStatus Placed = new OrderStatus(1, nameof(Placed).ToLowerInvariant()); @@ -22,12 +23,12 @@ public class OrderStatus : Enumeration public static OrderStatus FromName(string name) { var state = List() - .SingleOrDefault(s => String.Equals(s.Name, name, StringComparison.CurrentCultureIgnoreCase)); + .SingleOrDefault(s => string.Equals(s.Name, name, StringComparison.CurrentCultureIgnoreCase)); if (state == null) { throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); + .WithData("OrderStatus", string.Join(",", List().Select(s => s.Name))); } return state; @@ -40,7 +41,7 @@ public class OrderStatus : Enumeration if (state == null) { throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); + .WithData("OrderStatus", string.Join(",", List().Select(s => s.Name))); } return state; diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs index 0a1c3b5b..e6ff5ec0 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs @@ -48,6 +48,15 @@ public partial class OrderClientProxy : ClientProxyBase, IOrde }); } + public virtual async Task UpdateAsync(Guid id, UpdateOrderDto input) + { + return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id }, + { typeof(UpdateOrderDto), input } + }); + } + public virtual async Task CreateAsync(OrderCreateDto input) { return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json index edadeb72..9e8c75e3 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json @@ -171,6 +171,63 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/ordering/order/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "EShopOnAbp.OrderingService.Orders.OrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, "CreateAsyncByInput": { "uniqueName": "CreateAsyncByInput", "name": "CreateAsync", diff --git a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs index 589b1d99..531fae8f 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs @@ -39,7 +39,8 @@ public class OrderApplication_Tests : OrderingServiceApplicationTestBase new OrderItemCreateDto() { Discount = 0, - Units = 2, PictureUrl = string.Empty, + Units = 2, + PictureUrl = string.Empty, ProductCode = "Test-001", ProductId = Guid.NewGuid(), ProductName = "Test product", @@ -65,6 +66,15 @@ public class OrderApplication_Tests : OrderingServiceApplicationTestBase var myOrder = await _orderAppService.GetByOrderNoAsync(placedOrder.OrderNo); myOrder.ShouldNotBeNull(); + + var cancelledMyOrder = await _orderAppService.UpdateAsync(placedOrder.Id, new UpdateOrderDto() + { + OrderStatusId = OrderStatus.Cancelled.Id, + }); + //TODO - temp value - it should be Cancelled + cancelledMyOrder.OrderStatus.ShouldBe(OrderStatus.Placed.ToString()); + + // Get all orders var orders = await _orderAppService.GetOrdersAsync(new GetOrdersInput() { From f66839e5685b53d6fcfceee8fabf3b7d168b9c79 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 10 Mar 2022 17:33:30 +0300 Subject: [PATCH 03/47] feat: generate angular project for ordering --- apps/angular/angular.json | 31 + apps/angular/projects/ordering/README.md | 24 + .../projects/ordering/config/enums/index.ts | 2 + .../ordering/config/enums/policy-names.ts | 7 + .../ordering/config/enums/route-names.ts | 4 + .../config/order-config-routing.module.ts | 10 + .../ordering/config/order-config.module.ts | 13 + .../ordering/config/providers/index.ts | 1 + .../config/providers/route.provider.ts | 23 + .../projects/ordering/config/public-api.ts | 3 + apps/angular/projects/ordering/karma.conf.js | 44 + .../angular/projects/ordering/ng-package.json | 7 + apps/angular/projects/ordering/package.json | 11 + .../ordering/src/lib/ordering.service.spec.ts | 16 + .../ordering/src/lib/ordering.service.ts | 9 + .../projects/ordering/src/lib/proxy/README.md | 17 + .../src/lib/proxy/generate-proxy.json | 2206 +++++++++++++++++ .../projects/ordering/src/lib/proxy/index.ts | 2 + .../ordering/src/lib/proxy/orders/index.ts | 2 + .../ordering/src/lib/proxy/orders/models.ts | 62 + .../src/lib/proxy/orders/order.service.ts | 59 + .../ordering/src/ordering-routing.module.ts | 13 + .../projects/ordering/src/ordering.module.ts | 13 + .../projects/ordering/src/pages/index.ts | 1 + .../ordering/src/pages/orders/index.ts | 3 + .../src/pages/orders/orders-routing.module.ts | 11 + .../src/pages/orders/orders.component.css | 0 .../src/pages/orders/orders.component.html | 1 + .../src/pages/orders/orders.component.spec.ts | 25 + .../src/pages/orders/orders.component.ts | 15 + .../src/pages/orders/orders.module.ts | 17 + .../projects/ordering/src/public-api.ts | 7 + apps/angular/projects/ordering/src/test.ts | 28 + .../projects/ordering/tsconfig.lib.json | 20 + .../projects/ordering/tsconfig.lib.prod.json | 10 + .../projects/ordering/tsconfig.spec.json | 17 + apps/angular/src/app/app-routing.module.ts | 4 + apps/angular/src/environments/environment.ts | 4 + apps/angular/tsconfig.json | 4 + 39 files changed, 2746 insertions(+) create mode 100644 apps/angular/projects/ordering/README.md create mode 100644 apps/angular/projects/ordering/config/enums/index.ts create mode 100644 apps/angular/projects/ordering/config/enums/policy-names.ts create mode 100644 apps/angular/projects/ordering/config/enums/route-names.ts create mode 100644 apps/angular/projects/ordering/config/order-config-routing.module.ts create mode 100644 apps/angular/projects/ordering/config/order-config.module.ts create mode 100644 apps/angular/projects/ordering/config/providers/index.ts create mode 100644 apps/angular/projects/ordering/config/providers/route.provider.ts create mode 100644 apps/angular/projects/ordering/config/public-api.ts create mode 100644 apps/angular/projects/ordering/karma.conf.js create mode 100644 apps/angular/projects/ordering/ng-package.json create mode 100644 apps/angular/projects/ordering/package.json create mode 100644 apps/angular/projects/ordering/src/lib/ordering.service.spec.ts create mode 100644 apps/angular/projects/ordering/src/lib/ordering.service.ts create mode 100644 apps/angular/projects/ordering/src/lib/proxy/README.md create mode 100644 apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json create mode 100644 apps/angular/projects/ordering/src/lib/proxy/index.ts create mode 100644 apps/angular/projects/ordering/src/lib/proxy/orders/index.ts create mode 100644 apps/angular/projects/ordering/src/lib/proxy/orders/models.ts create mode 100644 apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts create mode 100644 apps/angular/projects/ordering/src/ordering-routing.module.ts create mode 100644 apps/angular/projects/ordering/src/ordering.module.ts create mode 100644 apps/angular/projects/ordering/src/pages/index.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/index.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders-routing.module.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.component.css create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.component.html create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.component.spec.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.component.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.module.ts create mode 100644 apps/angular/projects/ordering/src/public-api.ts create mode 100644 apps/angular/projects/ordering/src/test.ts create mode 100644 apps/angular/projects/ordering/tsconfig.lib.json create mode 100644 apps/angular/projects/ordering/tsconfig.lib.prod.json create mode 100644 apps/angular/projects/ordering/tsconfig.spec.json diff --git a/apps/angular/angular.json b/apps/angular/angular.json index 9c0d2921..51220794 100644 --- a/apps/angular/angular.json +++ b/apps/angular/angular.json @@ -187,6 +187,37 @@ } } } + }, + "ordering": { + "projectType": "library", + "root": "projects/ordering", + "sourceRoot": "projects/ordering/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "project": "projects/ordering/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ordering/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "projects/ordering/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ordering/src/test.ts", + "tsConfig": "projects/ordering/tsconfig.spec.json", + "karmaConfig": "projects/ordering/karma.conf.js" + } + } + } } }, "defaultProject": "EShopOnAbp", diff --git a/apps/angular/projects/ordering/README.md b/apps/angular/projects/ordering/README.md new file mode 100644 index 00000000..c9c1adf8 --- /dev/null +++ b/apps/angular/projects/ordering/README.md @@ -0,0 +1,24 @@ +# Ordering + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.0. + +## Code scaffolding + +Run `ng generate component component-name --project ordering` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ordering`. +> Note: Don't forget to add `--project ordering` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ordering` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ordering`, go to the dist folder `cd dist/ordering` and run `npm publish`. + +## Running unit tests + +Run `ng test ordering` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/apps/angular/projects/ordering/config/enums/index.ts b/apps/angular/projects/ordering/config/enums/index.ts new file mode 100644 index 00000000..4a7a6a0e --- /dev/null +++ b/apps/angular/projects/ordering/config/enums/index.ts @@ -0,0 +1,2 @@ +export * from './policy-names'; +export * from './route-names'; diff --git a/apps/angular/projects/ordering/config/enums/policy-names.ts b/apps/angular/projects/ordering/config/enums/policy-names.ts new file mode 100644 index 00000000..6ddc7800 --- /dev/null +++ b/apps/angular/projects/ordering/config/enums/policy-names.ts @@ -0,0 +1,7 @@ +export const enum eOrderingPolicyNames { + Ordering = 'CatalogService.Products', + + ProductManagementCreate = 'CatalogService.Products.Create', + ProductManagementUpdate = 'CatalogService.Products.Update', + ProductManagementDelete = 'CatalogService.Products.Delete', +} diff --git a/apps/angular/projects/ordering/config/enums/route-names.ts b/apps/angular/projects/ordering/config/enums/route-names.ts new file mode 100644 index 00000000..764ca296 --- /dev/null +++ b/apps/angular/projects/ordering/config/enums/route-names.ts @@ -0,0 +1,4 @@ +export const enum eOrderingRouteNames { + Ordering = 'CatalogService::Menu:CatalogManagement', + Orders = 'CatalogService::Menu:Products', +} diff --git a/apps/angular/projects/ordering/config/order-config-routing.module.ts b/apps/angular/projects/ordering/config/order-config-routing.module.ts new file mode 100644 index 00000000..b82cfada --- /dev/null +++ b/apps/angular/projects/ordering/config/order-config-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class OrderConfigRoutingModule { } diff --git a/apps/angular/projects/ordering/config/order-config.module.ts b/apps/angular/projects/ordering/config/order-config.module.ts new file mode 100644 index 00000000..039f0675 --- /dev/null +++ b/apps/angular/projects/ordering/config/order-config.module.ts @@ -0,0 +1,13 @@ +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { ORDERING_ROUTE_PROVIDERS } from './providers/route.provider'; + + +@NgModule() +export class OrderConfigModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: OrderConfigModule, + providers: [ORDERING_ROUTE_PROVIDERS], + }; + } +} diff --git a/apps/angular/projects/ordering/config/providers/index.ts b/apps/angular/projects/ordering/config/providers/index.ts new file mode 100644 index 00000000..fe08efba --- /dev/null +++ b/apps/angular/projects/ordering/config/providers/index.ts @@ -0,0 +1 @@ +export * from './route.provider'; diff --git a/apps/angular/projects/ordering/config/providers/route.provider.ts b/apps/angular/projects/ordering/config/providers/route.provider.ts new file mode 100644 index 00000000..42f5e37d --- /dev/null +++ b/apps/angular/projects/ordering/config/providers/route.provider.ts @@ -0,0 +1,23 @@ +import { eLayoutType, RoutesService } from '@abp/ng.core'; +import { APP_INITIALIZER } from '@angular/core'; +import { eOrderingPolicyNames } from '../enums/policy-names'; +import { eOrderingRouteNames} from '../enums/route-names'; + +export const ORDERING_ROUTE_PROVIDERS = [ + { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true }, +]; + +export function configureRoutes(routesService: RoutesService) { + return () => { + routesService.add([ + { + path: '/ordering', + name: eOrderingRouteNames.Ordering, + layout: eLayoutType.application, + parentName: null, + iconClass: 'bi bi-collection-fill', + requiredPolicy: eOrderingPolicyNames.Ordering, + }, + ]); + }; +} diff --git a/apps/angular/projects/ordering/config/public-api.ts b/apps/angular/projects/ordering/config/public-api.ts new file mode 100644 index 00000000..c0d0e091 --- /dev/null +++ b/apps/angular/projects/ordering/config/public-api.ts @@ -0,0 +1,3 @@ +export * from './enums'; +export * from './providers'; +export * from './order-config.module' \ No newline at end of file diff --git a/apps/angular/projects/ordering/karma.conf.js b/apps/angular/projects/ordering/karma.conf.js new file mode 100644 index 00000000..89eb35c4 --- /dev/null +++ b/apps/angular/projects/ordering/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, '../../coverage/ordering'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/apps/angular/projects/ordering/ng-package.json b/apps/angular/projects/ordering/ng-package.json new file mode 100644 index 00000000..71266c4e --- /dev/null +++ b/apps/angular/projects/ordering/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ordering", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/apps/angular/projects/ordering/package.json b/apps/angular/projects/ordering/package.json new file mode 100644 index 00000000..d3fc1318 --- /dev/null +++ b/apps/angular/projects/ordering/package.json @@ -0,0 +1,11 @@ +{ + "name": "@eshoponabp/ordering", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^12.2.0", + "@angular/core": "^12.2.0" + }, + "dependencies": { + "tslib": "^2.3.0" + } +} \ No newline at end of file diff --git a/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts b/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts new file mode 100644 index 00000000..187fa810 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { OrderingService } from './ordering.service'; + +describe('OrderingService', () => { + let service: OrderingService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(OrderingService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/apps/angular/projects/ordering/src/lib/ordering.service.ts b/apps/angular/projects/ordering/src/lib/ordering.service.ts new file mode 100644 index 00000000..fd106cf5 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/ordering.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class OrderingService { + + constructor() { } +} diff --git a/apps/angular/projects/ordering/src/lib/proxy/README.md b/apps/angular/projects/ordering/src/lib/proxy/README.md new file mode 100644 index 00000000..767dfd0f --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/README.md @@ -0,0 +1,17 @@ +# Proxy Generation Output + +This directory includes the output of the latest proxy generation. +The files and folders in it will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in this folder. + +In addition, `generate-proxy.json` works like a lock file. +It includes information used by the proxy generator, so please do not delete or modify it. + +Finally, the name of the files and folders should not be changed for two reasons: +- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content. +- ABP Suite generates files which include imports from this folder. + +> **Important Notice:** If you are building a module and are planning to publish to npm, +> some of the generated proxies are likely to be exported from public-api.ts file. In such a case, +> please make sure you export files directly and not from barrel exports. In other words, +> do not include index.ts exports in your public-api.ts exports. diff --git a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json new file mode 100644 index 00000000..1f441a49 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json @@ -0,0 +1,2206 @@ +{ + "generated": [ + "ordering" + ], + "modules": { + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "controllerGroupName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "controllerGroupName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController" + } + } + } + } + }, + "ordering": { + "rootPath": "ordering", + "remoteServiceName": "Ordering", + "controllers": { + "EShopOnAbp.OrderingService.Orders.OrderAppService": { + "controllerName": "Order", + "controllerGroupName": "Order", + "type": "EShopOnAbp.OrderingService.Orders.OrderAppService", + "interfaces": [ + { + "type": "Volo.Abp.Validation.IValidationEnabled" + }, + { + "type": "Volo.Abp.Auditing.IAuditingEnabled" + }, + { + "type": "Volo.Abp.GlobalFeatures.IGlobalFeatureCheckingEnabled" + }, + { + "type": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/ordering/order/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "EShopOnAbp.OrderingService.Orders.OrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "GetMyOrdersAsyncByInput": { + "uniqueName": "GetMyOrdersAsyncByInput", + "name": "GetMyOrdersAsync", + "httpMethod": "GET", + "url": "api/ordering/order/my-orders", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.GetMyOrdersInput, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.GetMyOrdersInput", + "typeSimple": "EShopOnAbp.OrderingService.Orders.GetMyOrdersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Collections.Generic.List", + "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderDto]" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "GetOrdersAsyncByInput": { + "uniqueName": "GetOrdersAsyncByInput", + "name": "GetOrdersAsync", + "httpMethod": "GET", + "url": "api/ordering/order/orders", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.GetOrdersInput, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.GetOrdersInput", + "typeSimple": "EShopOnAbp.OrderingService.Orders.GetOrdersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Collections.Generic.List", + "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderDto]" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "GetByOrderNoAsyncByOrderNo": { + "uniqueName": "GetByOrderNoAsyncByOrderNo", + "name": "GetByOrderNoAsync", + "httpMethod": "GET", + "url": "api/ordering/order/by-order-no", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "orderNo", + "typeAsString": "System.Int32, System.Private.CoreLib", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "orderNo", + "name": "orderNo", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "EShopOnAbp.OrderingService.Orders.OrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/ordering/order/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "EShopOnAbp.OrderingService.Orders.OrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/ordering/order", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.OrderCreateDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.OrderCreateDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.OrderCreateDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "EShopOnAbp.OrderingService.Orders.OrderDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + }, + "allowAnonymous": null, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + } + } + } + } + } + }, + "types": { + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Localization", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto", + "isRequired": false + }, + { + "name": "Auth", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto", + "isRequired": false + }, + { + "name": "Setting", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto", + "isRequired": false + }, + { + "name": "CurrentUser", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto", + "isRequired": false + }, + { + "name": "Features", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto", + "isRequired": false + }, + { + "name": "MultiTenancy", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto", + "isRequired": false + }, + { + "name": "CurrentTenant", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto", + "isRequired": false + }, + { + "name": "Timing", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto", + "isRequired": false + }, + { + "name": "Clock", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto", + "isRequired": false + }, + { + "name": "ObjectExtensions", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "jsonName": null, + "type": "{System.String:System.Collections.Generic.Dictionary}", + "typeSimple": "{string:System.Collections.Generic.Dictionary}", + "isRequired": false + }, + { + "name": "Languages", + "jsonName": null, + "type": "[Volo.Abp.Localization.LanguageInfo]", + "typeSimple": "[Volo.Abp.Localization.LanguageInfo]", + "isRequired": false + }, + { + "name": "CurrentCulture", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto", + "isRequired": false + }, + { + "name": "DefaultResourceName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "LanguagesMap", + "jsonName": null, + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}", + "isRequired": false + }, + { + "name": "LanguageFilesMap", + "jsonName": null, + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}", + "isRequired": false + } + ] + }, + "Volo.Abp.Localization.LanguageInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CultureName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "UiCultureName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DisplayName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "FlagIcon", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DisplayName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "EnglishName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ThreeLetterIsoLanguageName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TwoLetterIsoLanguageName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsRightToLeft", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "CultureName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "NativeName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DateTimeFormat", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CalendarAlgorithmType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DateTimeFormatLong", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ShortDatePattern", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "FullDateTimePattern", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DateSeparator", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ShortTimePattern", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "LongTimePattern", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.NameValue": { + "baseType": "Volo.Abp.NameValue", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.NameValue": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Value", + "jsonName": null, + "type": "T", + "typeSimple": "T", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Policies", + "jsonName": null, + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}", + "isRequired": false + }, + { + "name": "GrantedPolicies", + "jsonName": null, + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "jsonName": null, + "type": "{System.String:System.String}", + "typeSimple": "{string:string}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAuthenticated", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "Id", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isRequired": false + }, + { + "name": "TenantId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isRequired": false + }, + { + "name": "ImpersonatorUserId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isRequired": false + }, + { + "name": "ImpersonatorTenantId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isRequired": false + }, + { + "name": "ImpersonatorUserName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ImpersonatorTenantName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "UserName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "SurName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Email", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "EmailVerified", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "PhoneNumber", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "PhoneNumberVerified", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "Roles", + "jsonName": null, + "type": "[System.String]", + "typeSimple": "[string]", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "jsonName": null, + "type": "{System.String:System.String}", + "typeSimple": "{string:string}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsEnabled", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isRequired": false + }, + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsAvailable", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZone", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Iana", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone", + "isRequired": false + }, + { + "name": "Windows", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Kind", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "jsonName": null, + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}", + "isRequired": false + }, + { + "name": "Enums", + "jsonName": null, + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Entities", + "jsonName": null, + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}", + "isRequired": false + }, + { + "name": "Configuration", + "jsonName": null, + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Properties", + "jsonName": null, + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}", + "isRequired": false + }, + { + "name": "Configuration", + "jsonName": null, + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DisplayName", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto", + "isRequired": false + }, + { + "name": "Api", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto", + "isRequired": false + }, + { + "name": "Ui", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto", + "isRequired": false + }, + { + "name": "Attributes", + "jsonName": null, + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]", + "isRequired": false + }, + { + "name": "Configuration", + "jsonName": null, + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}", + "isRequired": false + }, + { + "name": "DefaultValue", + "jsonName": null, + "type": "System.Object", + "typeSimple": "object", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Resource", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnGet", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto", + "isRequired": false + }, + { + "name": "OnCreate", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto", + "isRequired": false + }, + { + "name": "OnUpdate", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnTable", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto", + "isRequired": false + }, + { + "name": "OnCreateForm", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "isRequired": false + }, + { + "name": "OnEditForm", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "isRequired": false + }, + { + "name": "Lookup", + "jsonName": null, + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Url", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ResultListPropertyName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DisplayPropertyName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ValuePropertyName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "FilterParamName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Config", + "jsonName": null, + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Fields", + "jsonName": null, + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]", + "isRequired": false + }, + { + "name": "LocalizationResource", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Value", + "jsonName": null, + "type": "System.Object", + "typeSimple": "object", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IncludeTypes", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "jsonName": null, + "type": "{System.String:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}", + "isRequired": false + }, + { + "name": "Types", + "jsonName": null, + "type": "{System.String:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ModuleApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RootPath", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "RemoteServiceName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Controllers", + "jsonName": null, + "type": "{System.String:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ControllerName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ControllerGroupName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Interfaces", + "jsonName": null, + "type": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]", + "isRequired": false + }, + { + "name": "Actions", + "jsonName": null, + "type": "{System.String:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ActionApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UniqueName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "HttpMethod", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Url", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "SupportedVersions", + "jsonName": null, + "type": "[System.String]", + "typeSimple": "[string]", + "isRequired": false + }, + { + "name": "ParametersOnMethod", + "jsonName": null, + "type": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]", + "isRequired": false + }, + { + "name": "Parameters", + "jsonName": null, + "type": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]", + "isRequired": false + }, + { + "name": "ReturnValue", + "jsonName": null, + "type": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel", + "isRequired": false + }, + { + "name": "AllowAnonymous", + "jsonName": null, + "type": "System.Boolean?", + "typeSimple": "boolean?", + "isRequired": false + }, + { + "name": "ImplementFrom", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeAsString", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsOptional", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "DefaultValue", + "jsonName": null, + "type": "System.Object", + "typeSimple": "object", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "NameOnMethod", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "JsonName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsOptional", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "DefaultValue", + "jsonName": null, + "type": "System.Object", + "typeSimple": "object", + "isRequired": false + }, + { + "name": "ConstraintTypes", + "jsonName": null, + "type": "[System.String]", + "typeSimple": "[string]", + "isRequired": false + }, + { + "name": "BindingSourceId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "DescriptorName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.TypeApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "BaseType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsEnum", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + }, + { + "name": "EnumNames", + "jsonName": null, + "type": "[System.String]", + "typeSimple": "[string]", + "isRequired": false + }, + { + "name": "EnumValues", + "jsonName": null, + "type": "[System.Object]", + "typeSimple": "[object]", + "isRequired": false + }, + { + "name": "GenericArguments", + "jsonName": null, + "type": "[System.String]", + "typeSimple": "[string]", + "isRequired": false + }, + { + "name": "Properties", + "jsonName": null, + "type": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]", + "isRequired": false + } + ] + }, + "Volo.Abp.Http.Modeling.PropertyApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "JsonName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Type", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "TypeSimple", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "IsRequired", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.OrderDto": { + "baseType": "Volo.Abp.Application.Dtos.EntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OrderDate", + "jsonName": null, + "type": "System.DateTime", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "OrderNo", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "OrderStatusId", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "OrderStatus", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "PaymentMethod", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Buyer", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.BuyerDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.BuyerDto", + "isRequired": false + }, + { + "name": "Address", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.OrderAddressDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderAddressDto", + "isRequired": false + }, + { + "name": "Items", + "jsonName": null, + "type": "[EShopOnAbp.OrderingService.Orders.OrderItemDto]", + "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderItemDto]", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.EntityDto": { + "baseType": "Volo.Abp.Application.Dtos.EntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TKey" + ], + "properties": [ + { + "name": "Id", + "jsonName": null, + "type": "TKey", + "typeSimple": "TKey", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.EntityDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "EShopOnAbp.OrderingService.Orders.BuyerDto": { + "baseType": "Volo.Abp.Application.Dtos.EntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Email", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.OrderAddressDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Description", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Street", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": true + }, + { + "name": "City", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": true + }, + { + "name": "Country", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": true + }, + { + "name": "ZipCode", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": true + } + ] + }, + "EShopOnAbp.OrderingService.Orders.OrderItemDto": { + "baseType": "Volo.Abp.Application.Dtos.EntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ProductId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ProductName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "PictureUrl", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "UnitPrice", + "jsonName": null, + "type": "System.Decimal", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "Discount", + "jsonName": null, + "type": "System.Decimal", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "Units", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.GetMyOrdersInput": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.GetOrdersInput": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.UpdateOrderDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OrderStatusId", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.OrderCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "PaymentMethod", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "Address", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.OrderAddressDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderAddressDto", + "isRequired": false + }, + { + "name": "Products", + "jsonName": null, + "type": "[EShopOnAbp.OrderingService.Orders.OrderItemCreateDto]", + "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderItemCreateDto]", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.OrderItemCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ProductId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ProductCode", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "ProductName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "PictureUrl", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "UnitPrice", + "jsonName": null, + "type": "System.Decimal", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "Discount", + "jsonName": null, + "type": "System.Decimal", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "Units", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + } + ] + } + } +} \ No newline at end of file diff --git a/apps/angular/projects/ordering/src/lib/proxy/index.ts b/apps/angular/projects/ordering/src/lib/proxy/index.ts new file mode 100644 index 00000000..4939e1de --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/index.ts @@ -0,0 +1,2 @@ +import * as Orders from './orders'; +export { Orders }; diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts new file mode 100644 index 00000000..d6641f7d --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts @@ -0,0 +1,2 @@ +export * from './models'; +export * from './order.service'; diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts new file mode 100644 index 00000000..071bbefe --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts @@ -0,0 +1,62 @@ +import type { EntityDto } from '@abp/ng.core'; + +export interface BuyerDto extends EntityDto { + name?: string; + email?: string; +} + +export interface GetMyOrdersInput { + filter?: string; +} + +export interface GetOrdersInput { + filter?: string; +} + +export interface OrderAddressDto { + description?: string; + street: string; + city: string; + country: string; + zipCode: string; +} + +export interface OrderCreateDto { + paymentMethod?: string; + address: OrderAddressDto; + products: OrderItemCreateDto[]; +} + +export interface OrderDto extends EntityDto { + orderDate?: string; + orderNo: number; + orderStatusId: number; + orderStatus?: string; + paymentMethod?: string; + buyer: BuyerDto; + address: OrderAddressDto; + items: OrderItemDto[]; +} + +export interface OrderItemCreateDto { + productId?: string; + productCode?: string; + productName?: string; + pictureUrl?: string; + unitPrice: number; + discount: number; + units: number; +} + +export interface OrderItemDto extends EntityDto { + productId?: string; + productName?: string; + pictureUrl?: string; + unitPrice: number; + discount: number; + units: number; +} + +export interface UpdateOrderDto { + orderStatusId: number; +} diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts new file mode 100644 index 00000000..5ea19fdf --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts @@ -0,0 +1,59 @@ +import type { GetMyOrdersInput, GetOrdersInput, OrderCreateDto, OrderDto, UpdateOrderDto } from './models'; +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class OrderService { + apiName = 'Ordering'; + + create = (input: OrderCreateDto) => + this.restService.request({ + method: 'POST', + url: '/api/ordering/order', + body: input, + }, + { apiName: this.apiName }); + + get = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/ordering/order/${id}`, + }, + { apiName: this.apiName }); + + getByOrderNo = (orderNo: number) => + this.restService.request({ + method: 'GET', + url: '/api/ordering/order/by-order-no', + params: { orderNo }, + }, + { apiName: this.apiName }); + + getMyOrders = (input: GetMyOrdersInput) => + this.restService.request({ + method: 'GET', + url: '/api/ordering/order/my-orders', + params: { filter: input.filter }, + }, + { apiName: this.apiName }); + + getOrders = (input: GetOrdersInput) => + this.restService.request({ + method: 'GET', + url: '/api/ordering/order/orders', + params: { filter: input.filter }, + }, + { apiName: this.apiName }); + + update = (id: string, input: UpdateOrderDto) => + this.restService.request({ + method: 'PUT', + url: `/api/ordering/order/${id}`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/apps/angular/projects/ordering/src/ordering-routing.module.ts b/apps/angular/projects/ordering/src/ordering-routing.module.ts new file mode 100644 index 00000000..3ed73a9a --- /dev/null +++ b/apps/angular/projects/ordering/src/ordering-routing.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = [ + { path: '', redirectTo: 'orders', pathMatch: 'full' }, + { path: 'orders', loadChildren: () => import('./pages/orders/orders.module').then(m => m.OrdersModule) }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class OrderingRoutingModule {} diff --git a/apps/angular/projects/ordering/src/ordering.module.ts b/apps/angular/projects/ordering/src/ordering.module.ts new file mode 100644 index 00000000..7c7702f5 --- /dev/null +++ b/apps/angular/projects/ordering/src/ordering.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { OrderingRoutingModule } from './ordering-routing.module'; + + +@NgModule({ + declarations: [], + imports: [ + OrderingRoutingModule + ], + exports: [] +}) +export class OrderingModule { +} diff --git a/apps/angular/projects/ordering/src/pages/index.ts b/apps/angular/projects/ordering/src/pages/index.ts new file mode 100644 index 00000000..66f41a6a --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/index.ts @@ -0,0 +1 @@ +export * from './orders'; diff --git a/apps/angular/projects/ordering/src/pages/orders/index.ts b/apps/angular/projects/ordering/src/pages/orders/index.ts new file mode 100644 index 00000000..56501c17 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/index.ts @@ -0,0 +1,3 @@ +export * from './orders-routing.module'; +export * from './orders.component'; +export * from './orders.module'; diff --git a/apps/angular/projects/ordering/src/pages/orders/orders-routing.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders-routing.module.ts new file mode 100644 index 00000000..58e8f8a7 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/orders-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { OrdersComponent } from './orders.component'; + +const routes: Routes = [{ path: '', component: OrdersComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class OrdersRoutingModule { } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.css b/apps/angular/projects/ordering/src/pages/orders/orders.component.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html new file mode 100644 index 00000000..66000b4f --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -0,0 +1 @@ +

orders works!

diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.spec.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.spec.ts new file mode 100644 index 00000000..63136e07 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OrdersComponent } from './orders.component'; + +describe('OrdersComponent', () => { + let component: OrdersComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ OrdersComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(OrdersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts new file mode 100644 index 00000000..a07554f1 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'lib-orders', + templateUrl: './orders.component.html', + styleUrls: ['./orders.component.css'] +}) +export class OrdersComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts new file mode 100644 index 00000000..0b6e8a06 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { OrdersRoutingModule } from './orders-routing.module'; +import { OrdersComponent } from './orders.component'; + + +@NgModule({ + declarations: [ + OrdersComponent + ], + imports: [ + CommonModule, + OrdersRoutingModule + ] +}) +export class OrdersModule { } diff --git a/apps/angular/projects/ordering/src/public-api.ts b/apps/angular/projects/ordering/src/public-api.ts new file mode 100644 index 00000000..c36799d1 --- /dev/null +++ b/apps/angular/projects/ordering/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of ordering + */ + +export * from './pages/index'; +export * from './ordering.module'; +export * from './lib/proxy/index'; diff --git a/apps/angular/projects/ordering/src/test.ts b/apps/angular/projects/ordering/src/test.ts new file mode 100644 index 00000000..b84c0c21 --- /dev/null +++ b/apps/angular/projects/ordering/src/test.ts @@ -0,0 +1,28 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js'; +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), + { teardown: { destroyAfterEach: true }}, +); + +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/apps/angular/projects/ordering/tsconfig.lib.json b/apps/angular/projects/ordering/tsconfig.lib.json new file mode 100644 index 00000000..1407202d --- /dev/null +++ b/apps/angular/projects/ordering/tsconfig.lib.json @@ -0,0 +1,20 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/apps/angular/projects/ordering/tsconfig.lib.prod.json b/apps/angular/projects/ordering/tsconfig.lib.prod.json new file mode 100644 index 00000000..06de549e --- /dev/null +++ b/apps/angular/projects/ordering/tsconfig.lib.prod.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": { + "compilationMode": "partial" + } +} diff --git a/apps/angular/projects/ordering/tsconfig.spec.json b/apps/angular/projects/ordering/tsconfig.spec.json new file mode 100644 index 00000000..715dd0a5 --- /dev/null +++ b/apps/angular/projects/ordering/tsconfig.spec.json @@ -0,0 +1,17 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/apps/angular/src/app/app-routing.module.ts b/apps/angular/src/app/app-routing.module.ts index 22f64039..53e402d8 100644 --- a/apps/angular/src/app/app-routing.module.ts +++ b/apps/angular/src/app/app-routing.module.ts @@ -29,6 +29,10 @@ const routes: Routes = [ path: 'catalog', loadChildren: () => import('@eshoponabp/catalog').then(m => m.CatalogModule), }, + { + path: 'ordering', + loadChildren: () => import('@eshoponabp/ordering').then(m => m.OrderingModule), + }, ]; @NgModule({ diff --git a/apps/angular/src/environments/environment.ts b/apps/angular/src/environments/environment.ts index 78d67435..b9654b01 100644 --- a/apps/angular/src/environments/environment.ts +++ b/apps/angular/src/environments/environment.ts @@ -25,5 +25,9 @@ export const environment = { url: 'https://localhost:44354', rootNamespace: 'EShopOnAbp.CatalogService', }, + Ordering:{ + url: "https://localhost:44356", + rootNamespace: 'EShopOnAbp.OrderingService', + } }, } as Environment; diff --git a/apps/angular/tsconfig.json b/apps/angular/tsconfig.json index 8b1f5709..13998410 100644 --- a/apps/angular/tsconfig.json +++ b/apps/angular/tsconfig.json @@ -22,6 +22,10 @@ "node_modules/@eshoponabp/catalog", "projects/catalog/src/public-api.ts", ], + "@eshoponabp/ordering": [ + "node_modules/@eshoponabp/ordering", + "projects/ordering/src/public-api.ts", + ], } }, "angularCompilerOptions": { From c6ad45023d82d34ac6cfe9dff43f1454b129cca8 Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 10 Mar 2022 18:41:36 +0300 Subject: [PATCH 04/47] Added cancel processes It will been continued enhancement. --- .../Orders/UpdateOrderDto.cs | 6 ++++- .../Orders/OrderAppService.cs | 13 +++++++--- .../Orders/OrderCancelledEto.cs | 16 ++++++++++++ .../Orders/Order.cs | 13 ++++++++-- .../Orders/OrderManager.cs | 24 +++++++++++++++++ .../Orders/OrderApplication_Tests.cs | 4 +-- .../EShopOnAbp.PaymentService.Domain.csproj | 4 +++ .../OrderCancelledEventHandler.cs | 26 +++++++++++++++++++ 8 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs create mode 100644 services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs index c907dea9..adf69220 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs @@ -1,7 +1,11 @@ -namespace EShopOnAbp.OrderingService.Orders +using System; + +namespace EShopOnAbp.OrderingService.Orders { public class UpdateOrderDto { public int OrderStatusId { get; set; } + public Guid PaymentRequestId { get; set; } + public string PaymentRequestStatus { get; set; } } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 40911bf2..29bae4f0 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -55,10 +55,17 @@ public class OrderAppService : ApplicationService, IOrderAppService public async Task UpdateAsync(Guid id, UpdateOrderDto input) { var order = await _orderRepository.GetAsync(id); - order.SetOrder(input.OrderStatusId); - await _orderRepository.UpdateAsync(order); - return CreateOrderDtoMapping(order); + if (input.OrderStatusId == OrderStatus.Shipped.Id) + { + order.SetOrderAsShipped(input.OrderStatusId); + await _orderRepository.UpdateAsync(order); + } + else if (input.OrderStatusId == OrderStatus.Cancelled.Id) + { + await _orderManager.CancelOrderAsync(id, input.PaymentRequestId, input.PaymentRequestStatus); + } + return CreateOrderDtoMapping(order); } public async Task CreateAsync(OrderCreateDto input) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs new file mode 100644 index 00000000..62e221fd --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Events.Distributed; +using Volo.Abp.EventBus; + +namespace EShopOnAbp.OrderingService.Orders; + +[EventName("EShopOnAbp.Order.Cancelled")] +public class OrderCancelledEto : EtoBase +{ + public Guid OrderId { get; set; } + public int OrderNo { get; set; } + public DateTime OrderDate { get; set; } + public BuyerEto Buyer { get; set; } + public List Items { get; set; } = new(); +} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index 085d6b56..802ec1a9 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -59,6 +59,15 @@ public class Order : AggregateRoot return this; } + public Order SetOrderCancelled(Guid paymentRequestId, string paymentRequestStatus) + { + PaymentRequestId = paymentRequestId; + PaymentStatus = paymentRequestStatus; + OrderStatus = OrderStatus.Cancelled; + + return this; + } + public Order AddOrderItem(Guid id, Guid productId, string productName, string productCode, decimal unitPrice, decimal discount, string pictureUrl, int units = 1) { @@ -88,14 +97,14 @@ public class Order : AggregateRoot return OrderItems.Sum(o => o.Units * o.UnitPrice); } - public Order SetOrder(int orderStatus) + public Order SetOrderAsShipped(int orderStatus) { if (orderStatus == OrderStatus.Cancelled.Id) { return this; } //TODO no enough to update the object. - _orderStatusId = orderStatus; + _orderStatusId = OrderStatus.Shipped.Id; return this; } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs index 60e2c41d..37da005a 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs @@ -91,6 +91,30 @@ public class OrderManager : DomainService return await _orderRepository.UpdateAsync(order, autoSave: true); } + public async Task CancelOrderAsync(Guid orderId, Guid paymentRequestId, string paymentRequestStatus) + { + var order = await _orderRepository.GetAsync(orderId); + if (order == null) + { + throw new BusinessException(OrderingServiceErrorCodes.OrderWithIdNotFound) + .WithData("OrderId", orderId); + } + + order.SetOrderCancelled(paymentRequestId, paymentRequestStatus); + + // Publish order cancelled event + await _distributedEventBus.PublishAsync(new OrderCancelledEto + { + OrderId = order.Id, + OrderDate = order.OrderDate, + OrderNo = order.OrderNo, + Buyer = GetBuyerEto(order.Buyer), + Items = GetProductItemEtoList(order.OrderItems) + }); + + return await _orderRepository.UpdateAsync(order, autoSave: true); + } + private BuyerEto GetBuyerEto(Buyer buyer) { return new BuyerEto diff --git a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs index 531fae8f..b6543bfe 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs @@ -69,9 +69,9 @@ public class OrderApplication_Tests : OrderingServiceApplicationTestBase var cancelledMyOrder = await _orderAppService.UpdateAsync(placedOrder.Id, new UpdateOrderDto() { - OrderStatusId = OrderStatus.Cancelled.Id, + OrderStatusId = OrderStatus.Shipped.Id, }); - //TODO - temp value - it should be Cancelled + //TODO - temp value - it should be Shipped cancelledMyOrder.OrderStatus.ShouldBe(OrderStatus.Placed.ToString()); diff --git a/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj b/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj index 36f90232..a1af97d7 100644 --- a/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj +++ b/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs new file mode 100644 index 00000000..9f1d781f --- /dev/null +++ b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs @@ -0,0 +1,26 @@ +using EShopOnAbp.OrderingService.Orders; +using EShopOnAbp.PaymentService.PaymentRequests; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Uow; + +namespace EShopOnAbp.PaymentService.EventHandlers +{ + public class OrderCancelledEventHandler : IDistributedEventHandler, ITransientDependency + { + private readonly IPaymentRequestRepository _paymentRepository; + + public OrderCancelledEventHandler(IPaymentRequestRepository paymenRepository) + { + _paymentRepository = paymenRepository; + } + + [UnitOfWork] + public async Task HandleEventAsync(OrderCancelledEto eventData) + { + var payment = await _paymentRepository.GetAsync(eventData.Buyer.BuyerId.GetValueOrDefault()); + await _paymentRepository.DeleteAsync(payment); + } + } +} From 1bccf5ea2fc715312c5cdd12f66d0ffdcb0ed4d3 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Fri, 11 Mar 2022 09:30:47 +0300 Subject: [PATCH 05/47] feat: add orders that in ordering module routing and show the page --- apps/angular/projects/ordering/config/ng-package.json | 7 +++++++ .../projects/ordering/config/{ => src}/enums/index.ts | 0 .../ordering/config/{ => src}/enums/policy-names.ts | 0 .../ordering/config/{ => src}/enums/route-names.ts | 2 +- .../config/{ => src}/order-config-routing.module.ts | 0 .../ordering-config.module.ts} | 6 +++--- .../projects/ordering/config/{ => src}/providers/index.ts | 0 .../ordering/config/{ => src}/providers/route.provider.ts | 1 - .../projects/ordering/config/{ => src}/public-api.ts | 2 +- apps/angular/src/app/app.module.ts | 4 +++- apps/angular/tsconfig.json | 4 ++++ 11 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 apps/angular/projects/ordering/config/ng-package.json rename apps/angular/projects/ordering/config/{ => src}/enums/index.ts (100%) rename apps/angular/projects/ordering/config/{ => src}/enums/policy-names.ts (100%) rename apps/angular/projects/ordering/config/{ => src}/enums/route-names.ts (60%) rename apps/angular/projects/ordering/config/{ => src}/order-config-routing.module.ts (100%) rename apps/angular/projects/ordering/config/{order-config.module.ts => src/ordering-config.module.ts} (61%) rename apps/angular/projects/ordering/config/{ => src}/providers/index.ts (100%) rename apps/angular/projects/ordering/config/{ => src}/providers/route.provider.ts (92%) rename apps/angular/projects/ordering/config/{ => src}/public-api.ts (56%) diff --git a/apps/angular/projects/ordering/config/ng-package.json b/apps/angular/projects/ordering/config/ng-package.json new file mode 100644 index 00000000..a3725f87 --- /dev/null +++ b/apps/angular/projects/ordering/config/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ordering/config", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/apps/angular/projects/ordering/config/enums/index.ts b/apps/angular/projects/ordering/config/src/enums/index.ts similarity index 100% rename from apps/angular/projects/ordering/config/enums/index.ts rename to apps/angular/projects/ordering/config/src/enums/index.ts diff --git a/apps/angular/projects/ordering/config/enums/policy-names.ts b/apps/angular/projects/ordering/config/src/enums/policy-names.ts similarity index 100% rename from apps/angular/projects/ordering/config/enums/policy-names.ts rename to apps/angular/projects/ordering/config/src/enums/policy-names.ts diff --git a/apps/angular/projects/ordering/config/enums/route-names.ts b/apps/angular/projects/ordering/config/src/enums/route-names.ts similarity index 60% rename from apps/angular/projects/ordering/config/enums/route-names.ts rename to apps/angular/projects/ordering/config/src/enums/route-names.ts index 764ca296..4a594fc3 100644 --- a/apps/angular/projects/ordering/config/enums/route-names.ts +++ b/apps/angular/projects/ordering/config/src/enums/route-names.ts @@ -1,4 +1,4 @@ export const enum eOrderingRouteNames { - Ordering = 'CatalogService::Menu:CatalogManagement', + Ordering = 'OrderingService::Menu:Orders', Orders = 'CatalogService::Menu:Products', } diff --git a/apps/angular/projects/ordering/config/order-config-routing.module.ts b/apps/angular/projects/ordering/config/src/order-config-routing.module.ts similarity index 100% rename from apps/angular/projects/ordering/config/order-config-routing.module.ts rename to apps/angular/projects/ordering/config/src/order-config-routing.module.ts diff --git a/apps/angular/projects/ordering/config/order-config.module.ts b/apps/angular/projects/ordering/config/src/ordering-config.module.ts similarity index 61% rename from apps/angular/projects/ordering/config/order-config.module.ts rename to apps/angular/projects/ordering/config/src/ordering-config.module.ts index 039f0675..cfe437fe 100644 --- a/apps/angular/projects/ordering/config/order-config.module.ts +++ b/apps/angular/projects/ordering/config/src/ordering-config.module.ts @@ -3,10 +3,10 @@ import { ORDERING_ROUTE_PROVIDERS } from './providers/route.provider'; @NgModule() -export class OrderConfigModule { - static forRoot(): ModuleWithProviders { +export class OrderingConfigModule { + static forRoot(): ModuleWithProviders { return { - ngModule: OrderConfigModule, + ngModule: OrderingConfigModule, providers: [ORDERING_ROUTE_PROVIDERS], }; } diff --git a/apps/angular/projects/ordering/config/providers/index.ts b/apps/angular/projects/ordering/config/src/providers/index.ts similarity index 100% rename from apps/angular/projects/ordering/config/providers/index.ts rename to apps/angular/projects/ordering/config/src/providers/index.ts diff --git a/apps/angular/projects/ordering/config/providers/route.provider.ts b/apps/angular/projects/ordering/config/src/providers/route.provider.ts similarity index 92% rename from apps/angular/projects/ordering/config/providers/route.provider.ts rename to apps/angular/projects/ordering/config/src/providers/route.provider.ts index 42f5e37d..9a9848b5 100644 --- a/apps/angular/projects/ordering/config/providers/route.provider.ts +++ b/apps/angular/projects/ordering/config/src/providers/route.provider.ts @@ -16,7 +16,6 @@ export function configureRoutes(routesService: RoutesService) { layout: eLayoutType.application, parentName: null, iconClass: 'bi bi-collection-fill', - requiredPolicy: eOrderingPolicyNames.Ordering, }, ]); }; diff --git a/apps/angular/projects/ordering/config/public-api.ts b/apps/angular/projects/ordering/config/src/public-api.ts similarity index 56% rename from apps/angular/projects/ordering/config/public-api.ts rename to apps/angular/projects/ordering/config/src/public-api.ts index c0d0e091..964dd051 100644 --- a/apps/angular/projects/ordering/config/public-api.ts +++ b/apps/angular/projects/ordering/config/src/public-api.ts @@ -1,3 +1,3 @@ export * from './enums'; export * from './providers'; -export * from './order-config.module' \ No newline at end of file +export * from './ordering-config.module'; diff --git a/apps/angular/src/app/app.module.ts b/apps/angular/src/app/app.module.ts index ab26db42..9efb99a0 100644 --- a/apps/angular/src/app/app.module.ts +++ b/apps/angular/src/app/app.module.ts @@ -16,6 +16,7 @@ import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { APP_ROUTE_PROVIDER } from './route.provider'; +import { OrderingConfigModule } from '@eshoponabp/ordering/config'; @NgModule({ imports: [ @@ -34,7 +35,8 @@ import { APP_ROUTE_PROVIDER } from './route.provider'; ThemeLeptonXModule.forRoot(), SideMenuLayoutModule.forRoot(), AccountLayoutModule.forRoot(), - CatalogConfigModule.forRoot() + CatalogConfigModule.forRoot(), + OrderingConfigModule.forRoot() ], declarations: [AppComponent], providers: [APP_ROUTE_PROVIDER], diff --git a/apps/angular/tsconfig.json b/apps/angular/tsconfig.json index 13998410..17d477b3 100644 --- a/apps/angular/tsconfig.json +++ b/apps/angular/tsconfig.json @@ -22,6 +22,10 @@ "node_modules/@eshoponabp/catalog", "projects/catalog/src/public-api.ts", ], + "@eshoponabp/ordering/config": [ + "node_modules/@eshoponabp/ordering/config", + "projects/ordering/config/src/public-api.ts", + ], "@eshoponabp/ordering": [ "node_modules/@eshoponabp/ordering", "projects/ordering/src/public-api.ts", From 955bf46c6f2a84c46d65d3825c27e74ba612edee Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 14 Mar 2022 11:25:52 +0300 Subject: [PATCH 06/47] Configured permission and language Added permission for orders on the Admin side --- .../OrderingServicePermissionDefinitionProvider.cs | 3 ++- .../Permissions/OrderingServicePermissions.cs | 7 ++++++- .../Orders/OrderAppService.cs | 3 +++ .../Localization/OrderingService/en.json | 6 ++++-- .../Localization/OrderingService/tr.json | 6 ++++-- .../Localization/OrderingService/zh-Hans.json | 4 +++- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs index b1aeeee3..9c0cc3ba 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs @@ -8,7 +8,8 @@ namespace EShopOnAbp.OrderingService.Permissions { public override void Define(IPermissionDefinitionContext context) { - var myGroup = context.AddGroup(OrderingServicePermissions.GroupName, L("Permission:OrderingService")); + var orderManagmentGroup = context.AddGroup(OrderingServicePermissions.GroupName, L("Permission:OrderingService")); + orderManagmentGroup.AddPermission(OrderingServicePermissions.Orders.Default, L("Permission:Orders")); } private static LocalizableString L(string name) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs index 779f1a41..da35c204 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs @@ -2,10 +2,15 @@ namespace EShopOnAbp.OrderingService.Permissions { - public class OrderingServicePermissions + public static class OrderingServicePermissions { public const string GroupName = "OrderingService"; + public static class Orders + { + public const string Default = GroupName + ".Orders"; + } + public static string[] GetAll() { return ReflectionHelper.GetPublicConstantsRecursively(typeof(OrderingServicePermissions)); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 29bae4f0..0cd8e2e1 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -1,5 +1,7 @@ using EShopOnAbp.OrderingService.Localization; using EShopOnAbp.OrderingService.Orders.Specifications; +using EShopOnAbp.OrderingService.Permissions; +using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; @@ -38,6 +40,7 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } + [Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetOrdersAsync(GetOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index 14797854..0bd8ffc3 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -1,12 +1,14 @@ { "culture": "en", "texts": { - "MyAccount": "My account", + "MyAccount": "My account", "SamplePageMessage": "A sample page for the OrderingService module", "Ordering:00001": "Possible values for Order status: {OrderStatus}", "Ordering:00002": "Invalid number of units", "Ordering:00003": "Invalid discount", "Ordering:00004": "The total of order item is lower than applied discount", - "Ordering:01001": "Order with {0} id could not be found!" + "Ordering:01001": "Order with {0} id could not be found!", + "Permission:Orders": "Orders", + "Permission:OrderingService": "Ordering Service" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json index 23ae9a65..11018c22 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json @@ -1,12 +1,14 @@ { "culture": "tr", "texts": { - "MyAccount": "Hesabım", + "MyAccount": "Hesabım", "SamplePageMessage": "OrderingService modulünden örnek bir sayfa", "Ordering:00001": "Muhtemel Sipariş durum değerleri: {OrderStatus}", "Ordering:00002": "Ürün adedi negatif olamaz", "Ordering:00003": "Geçersiz indirim", "Ordering:00004": "Ürünlerin toplam bedeli, uygulanan indirimden daha az olamaz", - "Ordering:01001": "{0} ID numaralı ürün bulunamadı!" + "Ordering:01001": "{0} ID numaralı ürün bulunamadı!", + "Permission:Orders": "Siparişler", + "Permission:OrderingService": "Sipariş Servisi" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json index bd0af3eb..1ea05073 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json @@ -8,6 +8,8 @@ "Ordering:00002": "无效的单位数量", "Ordering:00003": "无效的折扣", "Ordering:00004": "订单项的总额低于申请的折扣", - "Ordering:01001": "无法找到 id 为 {0} 的订单!" + "Ordering:01001": "无法找到 id 为 {0} 的订单!", + "Permission:Orders": "命令", + "Permission:OrderingService": "订购服务" } } \ No newline at end of file From a8ccc7eff2f2c6de3288d4005aed834c5e750dc9 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Mon, 14 Mar 2022 11:44:37 +0300 Subject: [PATCH 07/47] feat: add order detail modal template to ordering page --- .../ordering/src/lib/ordering.service.spec.ts | 16 -------- .../ordering/src/lib/ordering.service.ts | 9 ----- .../order-detail/order-detail.component.html | 17 ++++++++ .../order-detail/order-detail.component.ts | 22 ++++++++++ .../src/pages/orders/orders.component.html | 40 ++++++++++++++++++- .../src/pages/orders/orders.component.ts | 11 +++-- .../src/pages/orders/orders.module.ts | 10 ++++- 7 files changed, 94 insertions(+), 31 deletions(-) delete mode 100644 apps/angular/projects/ordering/src/lib/ordering.service.spec.ts delete mode 100644 apps/angular/projects/ordering/src/lib/ordering.service.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html create mode 100644 apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts diff --git a/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts b/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts deleted file mode 100644 index 187fa810..00000000 --- a/apps/angular/projects/ordering/src/lib/ordering.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { OrderingService } from './ordering.service'; - -describe('OrderingService', () => { - let service: OrderingService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(OrderingService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/apps/angular/projects/ordering/src/lib/ordering.service.ts b/apps/angular/projects/ordering/src/lib/ordering.service.ts deleted file mode 100644 index fd106cf5..00000000 --- a/apps/angular/projects/ordering/src/lib/ordering.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root' -}) -export class OrderingService { - - constructor() { } -} diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html new file mode 100644 index 00000000..f1398c61 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html @@ -0,0 +1,17 @@ + + + + +

Modal Title

+
+ + +

Modal content

+
+ + + + +
diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts new file mode 100644 index 00000000..cbd0d0b9 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts @@ -0,0 +1,22 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { OrderDto } from '../../../lib/proxy/orders'; + +@Component({ + selector: 'lib-order-detail', + templateUrl: './order-detail.component.html' +}) +export class OrderDetailComponent implements OnInit { + + @Input() + visible: boolean; + @Input() + order: OrderDto | undefined; + + @Output() readonly visibleChange = new EventEmitter(); + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index 66000b4f..1e66c318 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -1 +1,39 @@ -

orders works!

+ + +
+
+
+
+
{{ 'AbpCatalog::Products' | abpLocalization }}
+
+
+ +
+
+
+
+ + + + + + + {{ value | date }} + + + + + + + {{ 'AbpCatalog::Detail' | abpLocalization }} + + + + + + + + + +
+
diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index a07554f1..cf83d309 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import { OrderDto, OrderService } from '../../lib/proxy/orders'; @Component({ selector: 'lib-orders', @@ -6,10 +7,14 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./orders.component.css'] }) export class OrdersComponent implements OnInit { + constructor(private orderService: OrderService) { } + list$ = this.orderService.getOrders({}); + selectedOrder: OrderDto | undefined; + isModalVisible = false; + ngOnInit(): void {} - constructor() { } - ngOnInit(): void { + openModal(id: string) { + this.isModalVisible = true; } - } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts index 0b6e8a06..78ea50b9 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -3,15 +3,21 @@ import { CommonModule } from '@angular/common'; import { OrdersRoutingModule } from './orders-routing.module'; import { OrdersComponent } from './orders.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { CoreModule } from '@abp/ng.core'; +import { OrderDetailComponent } from './order-detail/order-detail.component'; @NgModule({ declarations: [ - OrdersComponent + OrdersComponent, + OrderDetailComponent ], imports: [ CommonModule, - OrdersRoutingModule + OrdersRoutingModule, + ThemeSharedModule, + CoreModule, ] }) export class OrdersModule { } From 6a8f2767155ceb427d2d3b13882034053ca76e87 Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 14 Mar 2022 14:01:10 +0300 Subject: [PATCH 08/47] Added some configurations for Order permission Added configuration of Order MS into administration MS and Identity MS --- ...rationServiceApplicationContractsModule.cs | 4 ++- ...rationService.Application.Contracts.csproj | 2 ++ .../DbMigrations/IdentityServerDataSeeder.cs | 33 +++++++++++-------- .../Localization/OrderingService/en.json | 4 ++- .../Localization/OrderingService/tr.json | 4 ++- .../Localization/OrderingService/zh-Hans.json | 4 ++- .../appsettings.json | 2 +- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/AdministrationServiceApplicationContractsModule.cs b/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/AdministrationServiceApplicationContractsModule.cs index 51972266..bba3badb 100644 --- a/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/AdministrationServiceApplicationContractsModule.cs +++ b/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/AdministrationServiceApplicationContractsModule.cs @@ -2,6 +2,7 @@ using Volo.Abp.PermissionManagement; using Volo.Abp.SettingManagement; using EShopOnAbp.CatalogService; +using EShopOnAbp.OrderingService; namespace EShopOnAbp.AdministrationService { @@ -9,7 +10,8 @@ namespace EShopOnAbp.AdministrationService typeof(CatalogServiceApplicationContractsModule), typeof(AdministrationServiceDomainSharedModule), typeof(AbpPermissionManagementApplicationContractsModule), - typeof(AbpSettingManagementApplicationContractsModule) + typeof(AbpSettingManagementApplicationContractsModule), + typeof(OrderingServiceApplicationContractsModule) )] public class AdministrationServiceApplicationContractsModule : AbpModule { diff --git a/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/EShopOnAbp.AdministrationService.Application.Contracts.csproj b/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/EShopOnAbp.AdministrationService.Application.Contracts.csproj index 0c66122a..68c19a35 100644 --- a/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/EShopOnAbp.AdministrationService.Application.Contracts.csproj +++ b/services/administration/src/EShopOnAbp.AdministrationService.Application.Contracts/EShopOnAbp.AdministrationService.Application.Contracts.csproj @@ -8,6 +8,8 @@ + + diff --git a/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/DbMigrations/IdentityServerDataSeeder.cs b/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/DbMigrations/IdentityServerDataSeeder.cs index a6d736cc..8d3a833d 100644 --- a/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/DbMigrations/IdentityServerDataSeeder.cs +++ b/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/DbMigrations/IdentityServerDataSeeder.cs @@ -108,9 +108,13 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen await CreateWebGatewaySwaggerClientAsync("WebGateway", new[] { - "AccountService", "IdentityService", "AdministrationService", - "CatalogService", "BasketService", - "PaymentService", "OrderingService" + "AccountService", + "IdentityService", + "AdministrationService", + "CatalogService", + "BasketService", + "PaymentService", + "OrderingService" }); } @@ -125,7 +129,7 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen "phone", "address" }; - scopes ??= new[] {name}; + scopes ??= new[] { name }; // Swagger Client var swaggerClientId = $"{name}_Swagger"; @@ -144,7 +148,7 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen await CreateClientAsync( name: swaggerClientId, scopes: commonScopes.Union(scopes), - grantTypes: new[] {"authorization_code"}, + grantTypes: new[] { "authorization_code" }, secret: "1q2w3e*".Sha256(), requireClientSecret: false, redirectUris: new List @@ -245,12 +249,12 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen "PaymentService", "OrderingService" }), - grantTypes: new[] {"hybrid"}, + grantTypes: new[] { "hybrid" }, secret: "1q2w3e*".Sha256(), - redirectUris: new List{ $"{publicWebClientRootUrl}signin-oidc" }, + redirectUris: new List { $"{publicWebClientRootUrl}signin-oidc" }, postLogoutRedirectUri: $"{publicWebClientRootUrl}signout-callback-oidc", frontChannelLogoutUri: $"{publicWebClientRootUrl}Account/FrontChannelLogout", - corsOrigins: new[] {publicWebClientRootUrl.RemovePostFix("/")} + corsOrigins: new[] { publicWebClientRootUrl.RemovePostFix("/") } ); //Angular Client @@ -263,15 +267,16 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen "AccountService", "IdentityService", "AdministrationService", - "CatalogService" + "CatalogService", + "OrderingService" }), - grantTypes: new[] {"authorization_code", "LinkLogin", "password"}, + grantTypes: new[] { "authorization_code", "LinkLogin", "password" }, secret: "1q2w3e*".Sha256(), requirePkce: true, requireClientSecret: false, - redirectUris: new List{ $"{angularClientRootUrl}" }, + redirectUris: new List { $"{angularClientRootUrl}" }, postLogoutRedirectUri: $"{angularClientRootUrl}", - corsOrigins: new[] {angularClientRootUrl} + corsOrigins: new[] { angularClientRootUrl } ); //Administration Service Client @@ -281,9 +286,9 @@ public class IdentityServerDataSeeder : IDataSeedContributor, ITransientDependen { "IdentityService" }), - grantTypes: new[] {"client_credentials"}, + grantTypes: new[] { "client_credentials" }, secret: "1q2w3e*".Sha256(), - permissions: new[] {IdentityPermissions.Users.Default} + permissions: new[] { IdentityPermissions.Users.Default } ); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index 0bd8ffc3..e4b05899 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -9,6 +9,8 @@ "Ordering:00004": "The total of order item is lower than applied discount", "Ordering:01001": "Order with {0} id could not be found!", "Permission:Orders": "Orders", - "Permission:OrderingService": "Ordering Service" + "Permission:OrderingService": "Ordering Service", + "Menu:Orders": "Orders", + "Menu:OrderManagement": "Ordering Service" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json index 11018c22..de8f0965 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json @@ -9,6 +9,8 @@ "Ordering:00004": "Ürünlerin toplam bedeli, uygulanan indirimden daha az olamaz", "Ordering:01001": "{0} ID numaralı ürün bulunamadı!", "Permission:Orders": "Siparişler", - "Permission:OrderingService": "Sipariş Servisi" + "Permission:OrderingService": "Sipariş Servisi", + "Menu:Orders": "Siparişler", + "Menu:OrderManagement": "Sipariş Yönetimi" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json index 1ea05073..62a5805b 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json @@ -10,6 +10,8 @@ "Ordering:00004": "订单项的总额低于申请的折扣", "Ordering:01001": "无法找到 id 为 {0} 的订单!", "Permission:Orders": "命令", - "Permission:OrderingService": "订购服务" + "Permission:OrderingService": "订购服务", + "Menu:Orders": "命令", + "Menu:OrderManagement": "订单管理" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json index c3fabcdc..817f4dce 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json @@ -1,7 +1,7 @@ { "App": { "SelfUrl": "https://localhost:44356", - "CorsOrigins": "https://localhost:44372,https://localhost:44373" + "CorsOrigins": "https://localhost:44372,https://localhost:44373,http://localhost:4200,https://localhost:4200" }, "AuthServer": { "Authority": "https://localhost:44330", From 71e7ef0e5febb4da57ecf688b5981c346b07ac19 Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 14 Mar 2022 18:21:59 +0300 Subject: [PATCH 09/47] Splitted Update action 2 separate actions Splitted as 2 actions - SetAsCancelled - SetAsShipped configured its language and permission. Also added GetListPagedAsync --- .../Orders/IOrderAppService.cs | 6 +- ...UpdateOrderDto.cs => SetAsCancelledDto.cs} | 2 +- .../Orders/SetAsShippedDto.cs | 9 ++ ...ringServicePermissionDefinitionProvider.cs | 5 +- .../Permissions/OrderingServicePermissions.cs | 2 + .../Orders/OrderAppService.cs | 49 ++++-- .../Localization/OrderingService/en.json | 4 +- .../Localization/OrderingService/tr.json | 4 +- .../Localization/OrderingService/zh-Hans.json | 4 +- .../OrderClientProxy.Generated.cs | 23 ++- .../ordering-generate-proxy.json | 146 ++++++++++++++++-- .../Orders/OrderApplication_Tests.cs | 2 +- 12 files changed, 218 insertions(+), 38 deletions(-) rename services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/{UpdateOrderDto.cs => SetAsCancelledDto.cs} (86%) create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs index 7812d9a7..d04e7685 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace EShopOnAbp.OrderingService.Orders; @@ -12,5 +13,8 @@ public interface IOrderAppService : IApplicationService Task> GetMyOrdersAsync(GetMyOrdersInput input); Task> GetOrdersAsync(GetOrdersInput input); Task GetByOrderNoAsync(int orderNo); - Task UpdateAsync(Guid id, UpdateOrderDto input); + Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input); + Task SetAsShippedAsync(Guid id, SetAsShippedDto input); + Task> GetListPagedAsync(PagedAndSortedResultRequestDto input); + } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs similarity index 86% rename from services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs rename to services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs index adf69220..4f61d28a 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/UpdateOrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs @@ -2,7 +2,7 @@ namespace EShopOnAbp.OrderingService.Orders { - public class UpdateOrderDto + public class SetAsCancelledDto { public int OrderStatusId { get; set; } public Guid PaymentRequestId { get; set; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs new file mode 100644 index 00000000..ff6eb986 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs @@ -0,0 +1,9 @@ +using System; + +namespace EShopOnAbp.OrderingService.Orders +{ + public class SetAsShippedDto + { + public int OrderStatusId { get; set; } + } +} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs index 9c0cc3ba..f06acec2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissionDefinitionProvider.cs @@ -9,7 +9,10 @@ namespace EShopOnAbp.OrderingService.Permissions public override void Define(IPermissionDefinitionContext context) { var orderManagmentGroup = context.AddGroup(OrderingServicePermissions.GroupName, L("Permission:OrderingService")); - orderManagmentGroup.AddPermission(OrderingServicePermissions.Orders.Default, L("Permission:Orders")); + var oders = orderManagmentGroup.AddPermission(OrderingServicePermissions.Orders.Default, L("Permission:Orders")); + oders.AddChild(OrderingServicePermissions.Orders.SetAsCancelled, L("Permission:Orders.SetAsCancelled")); + oders.AddChild(OrderingServicePermissions.Orders.SetAsShipped, L("Permission:Orders.SetAsShipped")); + } private static LocalizableString L(string name) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs index da35c204..30005b60 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Permissions/OrderingServicePermissions.cs @@ -9,6 +9,8 @@ namespace EShopOnAbp.OrderingService.Permissions public static class Orders { public const string Default = GroupName + ".Orders"; + public const string SetAsCancelled = GroupName + ".SetAsCancelled"; + public const string SetAsShipped = GroupName + ".SetAsShipped"; } public static string[] GetAll() diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 0cd8e2e1..ea4faeef 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -5,7 +5,10 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Specifications; using Volo.Abp.Users; @@ -48,6 +51,26 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } + [Authorize(OrderingServicePermissions.Orders.Default)] + public async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) + { + var queryable = await _orderRepository.GetQueryableAsync(); + + var orders = await AsyncExecuter.ToListAsync( + queryable + .OrderBy(input.Sorting ?? "OrderDate") + .Skip(input.SkipCount) + .Take(input.MaxResultCount) + ); + + var totalCount = await _orderRepository.GetCountAsync(); + //TODO Refactor Order Status + return new PagedResultDto( + totalCount, + CreateOrderDtoMapping(orders) + ); + } + public async Task GetByOrderNoAsync(int orderNo) { var order = await _orderRepository.GetByOrderNoAsync(orderNo); @@ -55,20 +78,18 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(order); } - public async Task UpdateAsync(Guid id, UpdateOrderDto input) + [Authorize(OrderingServicePermissions.Orders.SetAsCancelled)] + public async Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input) { - var order = await _orderRepository.GetAsync(id); - if (input.OrderStatusId == OrderStatus.Shipped.Id) - { - order.SetOrderAsShipped(input.OrderStatusId); - await _orderRepository.UpdateAsync(order); - } - else if (input.OrderStatusId == OrderStatus.Cancelled.Id) - { - await _orderManager.CancelOrderAsync(id, input.PaymentRequestId, input.PaymentRequestStatus); - } + await _orderManager.CancelOrderAsync(id, input.PaymentRequestId, input.PaymentRequestStatus); + } - return CreateOrderDtoMapping(order); + [Authorize(OrderingServicePermissions.Orders.SetAsShipped)] + public async Task SetAsShippedAsync(Guid id, SetAsShippedDto input) + { + var order = await _orderRepository.GetAsync(id); + order.SetOrderAsShipped(input.OrderStatusId); + await _orderRepository.UpdateAsync(order); } public async Task CreateAsync(OrderCreateDto input) @@ -130,8 +151,8 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus.Name, - OrderStatusId = order.OrderStatus.Id, + OrderStatus = order.OrderStatus?.Name, + OrderStatusId = order.OrderStatus?.Id ?? 0, PaymentMethod = order.PaymentMethod }; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index e4b05899..e6d127d4 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -11,6 +11,8 @@ "Permission:Orders": "Orders", "Permission:OrderingService": "Ordering Service", "Menu:Orders": "Orders", - "Menu:OrderManagement": "Ordering Service" + "Menu:OrderManagement": "Ordering Service", + "Permission:Orders.SetAsCancelled": "Set As Cancelled", + "Permission:Orders.SetAsShipped": "Set As Shipped" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json index de8f0965..b618ca81 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json @@ -11,6 +11,8 @@ "Permission:Orders": "Siparişler", "Permission:OrderingService": "Sipariş Servisi", "Menu:Orders": "Siparişler", - "Menu:OrderManagement": "Sipariş Yönetimi" + "Menu:OrderManagement": "Sipariş Yönetimi", + "Permission:Orders.SetAsCancelled": "İptal Edildi Olarak İşaretle", + "Permission:Orders.SetAsShipped": "Sevk Edildi Olarak İşaretle" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json index 62a5805b..2aaafa54 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/zh-Hans.json @@ -12,6 +12,8 @@ "Permission:Orders": "命令", "Permission:OrderingService": "订购服务", "Menu:Orders": "命令", - "Menu:OrderManagement": "订单管理" + "Menu:OrderManagement": "订单管理", + "Permission:Orders.SetAsCancelled": "设置为取消", + "Permission:Orders.SetAsShipped": "设置为发货" } } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs index e6ff5ec0..466eb65e 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs @@ -40,6 +40,14 @@ public partial class OrderClientProxy : ClientProxyBase, IOrde }); } + public virtual async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) + { + return await RequestAsync>(nameof(GetListPagedAsync), new ClientProxyRequestTypeValue + { + { typeof(PagedAndSortedResultRequestDto), input } + }); + } + public virtual async Task GetByOrderNoAsync(int orderNo) { return await RequestAsync(nameof(GetByOrderNoAsync), new ClientProxyRequestTypeValue @@ -48,12 +56,21 @@ public partial class OrderClientProxy : ClientProxyBase, IOrde }); } - public virtual async Task UpdateAsync(Guid id, UpdateOrderDto input) + public virtual async Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input) + { + await RequestAsync(nameof(SetAsCancelledAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id }, + { typeof(SetAsCancelledDto), input } + }); + } + + public virtual async Task SetAsShippedAsync(Guid id, SetAsShippedDto input) { - return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + await RequestAsync(nameof(SetAsShippedAsync), new ClientProxyRequestTypeValue { { typeof(Guid), id }, - { typeof(UpdateOrderDto), input } + { typeof(SetAsShippedDto), input } }); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json index 9e8c75e3..3e8f9f1c 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json @@ -131,7 +131,68 @@ "type": "System.Collections.Generic.List", "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderDto]" }, - "allowAnonymous": null, + "allowAnonymous": false, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "GetListPagedAsyncByInput": { + "uniqueName": "GetListPagedAsyncByInput", + "name": "GetListPagedAsync", + "httpMethod": "GET", + "url": "api/ordering/order/paged", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, "GetByOrderNoAsyncByOrderNo": { @@ -171,11 +232,11 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, - "UpdateAsyncByIdAndInput": { - "uniqueName": "UpdateAsyncByIdAndInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/ordering/order/{id}", + "SetAsCancelledAsyncByIdAndInput": { + "uniqueName": "SetAsCancelledAsyncByIdAndInput", + "name": "SetAsCancelledAsync", + "httpMethod": "POST", + "url": "api/ordering/order/{id}/set-as-cancelled", "supportedVersions": [], "parametersOnMethod": [ { @@ -188,9 +249,9 @@ }, { "name": "input", - "typeAsString": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto, EShopOnAbp.OrderingService.Application.Contracts", - "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", "isOptional": false, "defaultValue": null } @@ -212,8 +273,8 @@ "nameOnMethod": "input", "name": "input", "jsonName": null, - "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -222,10 +283,67 @@ } ], "returnValue": { - "type": "EShopOnAbp.OrderingService.Orders.OrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + "type": "System.Void", + "typeSimple": "System.Void" }, - "allowAnonymous": null, + "allowAnonymous": false, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "SetAsShippedAsyncByIdAndInput": { + "uniqueName": "SetAsShippedAsyncByIdAndInput", + "name": "SetAsShippedAsync", + "httpMethod": "POST", + "url": "api/ordering/order/{id}/set-as-shipped", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, "CreateAsyncByInput": { diff --git a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs index b6543bfe..2d581037 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs @@ -67,7 +67,7 @@ public class OrderApplication_Tests : OrderingServiceApplicationTestBase myOrder.ShouldNotBeNull(); - var cancelledMyOrder = await _orderAppService.UpdateAsync(placedOrder.Id, new UpdateOrderDto() + var cancelledMyOrder = await _orderAppService.SetAsCancelledAsync(placedOrder.Id, new SetAsCancelledDto() { OrderStatusId = OrderStatus.Shipped.Id, }); From edcc3688cbdee0cae46fcf78fcd93b32702be43f Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 15 Mar 2022 10:21:58 +0300 Subject: [PATCH 10/47] Removed SetAsShippedDto After separating the Update action it was unnecessary, so removed it and its dependencies --- .../Orders/IOrderAppService.cs | 2 +- .../Orders/SetAsCancelledDto.cs | 1 - .../Orders/SetAsShippedDto.cs | 9 ------- .../Orders/OrderAppService.cs | 4 ++-- .../Orders/Order.cs | 6 +---- .../OrderClientProxy.Generated.cs | 5 ++-- .../ordering-generate-proxy.json | 24 ++----------------- 7 files changed, 8 insertions(+), 43 deletions(-) delete mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs index d04e7685..90dd07f2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs @@ -14,7 +14,7 @@ public interface IOrderAppService : IApplicationService Task> GetOrdersAsync(GetOrdersInput input); Task GetByOrderNoAsync(int orderNo); Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input); - Task SetAsShippedAsync(Guid id, SetAsShippedDto input); + Task SetAsShippedAsync(Guid id); Task> GetListPagedAsync(PagedAndSortedResultRequestDto input); } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs index 4f61d28a..f0cd0783 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs @@ -4,7 +4,6 @@ namespace EShopOnAbp.OrderingService.Orders { public class SetAsCancelledDto { - public int OrderStatusId { get; set; } public Guid PaymentRequestId { get; set; } public string PaymentRequestStatus { get; set; } } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs deleted file mode 100644 index ff6eb986..00000000 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsShippedDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace EShopOnAbp.OrderingService.Orders -{ - public class SetAsShippedDto - { - public int OrderStatusId { get; set; } - } -} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index ea4faeef..6ba22894 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -85,10 +85,10 @@ public class OrderAppService : ApplicationService, IOrderAppService } [Authorize(OrderingServicePermissions.Orders.SetAsShipped)] - public async Task SetAsShippedAsync(Guid id, SetAsShippedDto input) + public async Task SetAsShippedAsync(Guid id) { var order = await _orderRepository.GetAsync(id); - order.SetOrderAsShipped(input.OrderStatusId); + order.SetOrderAsShipped(); await _orderRepository.UpdateAsync(order); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index 802ec1a9..2be38367 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -97,12 +97,8 @@ public class Order : AggregateRoot return OrderItems.Sum(o => o.Units * o.UnitPrice); } - public Order SetOrderAsShipped(int orderStatus) + public Order SetOrderAsShipped() { - if (orderStatus == OrderStatus.Cancelled.Id) - { - return this; - } //TODO no enough to update the object. _orderStatusId = OrderStatus.Shipped.Id; return this; diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs index 466eb65e..f51841db 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs @@ -65,12 +65,11 @@ public partial class OrderClientProxy : ClientProxyBase, IOrde }); } - public virtual async Task SetAsShippedAsync(Guid id, SetAsShippedDto input) + public virtual async Task SetAsShippedAsync(Guid id) { await RequestAsync(nameof(SetAsShippedAsync), new ClientProxyRequestTypeValue { - { typeof(Guid), id }, - { typeof(SetAsShippedDto), input } + { typeof(Guid), id } }); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json index 3e8f9f1c..f437165f 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json @@ -289,8 +289,8 @@ "allowAnonymous": false, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, - "SetAsShippedAsyncByIdAndInput": { - "uniqueName": "SetAsShippedAsyncByIdAndInput", + "SetAsShippedAsyncById": { + "uniqueName": "SetAsShippedAsyncById", "name": "SetAsShippedAsync", "httpMethod": "POST", "url": "api/ordering/order/{id}/set-as-shipped", @@ -303,14 +303,6 @@ "typeSimple": "string", "isOptional": false, "defaultValue": null - }, - { - "name": "input", - "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto, EShopOnAbp.OrderingService.Application.Contracts", - "type": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", - "isOptional": false, - "defaultValue": null } ], "parameters": [ @@ -325,18 +317,6 @@ "constraintTypes": [], "bindingSourceId": "Path", "descriptorName": "" - }, - { - "nameOnMethod": "input", - "name": "input", - "jsonName": null, - "type": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsShippedDto", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", - "descriptorName": "" } ], "returnValue": { From 608f51ae3356ca727cb15d1fbb66abbd080a1a3b Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 15 Mar 2022 10:45:36 +0300 Subject: [PATCH 11/47] Included detail into GetListPagedAsync --- .../Orders/OrderAppService.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 6ba22894..1e9191de 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -54,7 +54,7 @@ public class OrderAppService : ApplicationService, IOrderAppService [Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) { - var queryable = await _orderRepository.GetQueryableAsync(); + var queryable = await _orderRepository.WithDetailsAsync(); var orders = await AsyncExecuter.ToListAsync( queryable @@ -64,7 +64,6 @@ public class OrderAppService : ApplicationService, IOrderAppService ); var totalCount = await _orderRepository.GetCountAsync(); - //TODO Refactor Order Status return new PagedResultDto( totalCount, CreateOrderDtoMapping(orders) @@ -151,8 +150,8 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus?.Name, - OrderStatusId = order.OrderStatus?.Id ?? 0, + OrderStatus = order.OrderStatus.Name, + OrderStatusId = order.OrderStatus.Id, PaymentMethod = order.PaymentMethod }; } From cc5bd21211fff849b6f8caa8a882c419d6659968 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Tue, 15 Mar 2022 15:35:39 +0300 Subject: [PATCH 12/47] Added OrderingService scope request to angular oidc configuration --- apps/angular/src/environments/environment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/angular/src/environments/environment.ts b/apps/angular/src/environments/environment.ts index b9654b01..d95bd122 100644 --- a/apps/angular/src/environments/environment.ts +++ b/apps/angular/src/environments/environment.ts @@ -13,7 +13,7 @@ export const environment = { redirectUri: baseUrl, clientId: 'Web', //responseType: 'code', - scope: 'offline_access openid profile email phone AccountService IdentityService AdministrationService CatalogService', + scope: 'offline_access openid profile email phone AccountService IdentityService AdministrationService CatalogService OrderingService', //requireHttps: true, }, apis: { From 01ab01009fb6aabd8c5d0320309f57c7177385b4 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 15 Mar 2022 17:57:58 +0300 Subject: [PATCH 13/47] feat: add order page --- .../projects/ordering/src/lib/index.ts | 3 + .../ordering/src/lib/order-view-model.ts | 5 ++ .../ordering/src/lib/to-order-view-model.ts | 8 +++ .../order-detail-item.component.ts | 21 ++++++ .../order-detail/order-detail.component.html | 63 +++++++++++++++-- .../order-detail/order-detail.component.ts | 19 ++---- .../src/pages/orders/orders.component.html | 59 +++++++++++----- .../src/pages/orders/orders.component.ts | 67 +++++++++++++++++-- .../src/pages/orders/orders.module.ts | 6 +- .../src/environments/environment.prod.ts | 10 +-- apps/angular/src/environments/environment.ts | 9 ++- .../src/environments/my-environment.ts | 5 ++ .../Components/UserOrders/Default.cshtml | 2 +- .../Orders/OrderAppService.cs | 2 +- 14 files changed, 227 insertions(+), 52 deletions(-) create mode 100644 apps/angular/projects/ordering/src/lib/index.ts create mode 100644 apps/angular/projects/ordering/src/lib/order-view-model.ts create mode 100644 apps/angular/projects/ordering/src/lib/to-order-view-model.ts create mode 100644 apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts create mode 100644 apps/angular/src/environments/my-environment.ts diff --git a/apps/angular/projects/ordering/src/lib/index.ts b/apps/angular/projects/ordering/src/lib/index.ts new file mode 100644 index 00000000..0186f742 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/index.ts @@ -0,0 +1,3 @@ +export * from './order-view-model'; +export * from './proxy'; +export * from './to-order-view-model'; diff --git a/apps/angular/projects/ordering/src/lib/order-view-model.ts b/apps/angular/projects/ordering/src/lib/order-view-model.ts new file mode 100644 index 00000000..0fee9573 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/order-view-model.ts @@ -0,0 +1,5 @@ +import { OrderDto } from './proxy/orders'; + +export interface OrderViewModel extends OrderDto { + orderTotal: number; +} diff --git a/apps/angular/projects/ordering/src/lib/to-order-view-model.ts b/apps/angular/projects/ordering/src/lib/to-order-view-model.ts new file mode 100644 index 00000000..eadb2605 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/to-order-view-model.ts @@ -0,0 +1,8 @@ +import { OrderDto } from './proxy/orders'; +import { OrderViewModel } from './order-view-model'; + +const mapItem = (x: OrderDto): OrderViewModel => { + const orderTotal = x.items?.reduce((acc, curr) => ( acc + (curr.unitPrice * curr.units)), 0) || 0; + return {...x, orderTotal}; +}; +export const toOrderViewModel = (orders: OrderDto[]) => orders.map(mapItem); diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts new file mode 100644 index 00000000..e6152131 --- /dev/null +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts @@ -0,0 +1,21 @@ +import { Component, Input } from '@angular/core'; + +@Component({ + selector: 'lib-order-detail-item', + template: ` +
+
+ {{label}} +
+ + + +
+ `, + styles: [] +}) +export class OrderDetailItemComponent { + + @Input() + label = ''; +} diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html index f1398c61..d802e87e 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html @@ -1,16 +1,67 @@ - - - + -

Modal Title

+

Order Detail

-

Modal content

+ +
+
+ #{{order.orderNo}} + {{order.orderStatus}} + {{order.buyer.name}} + {{order.buyer.email}} + + + + {{address.description}}
+ {{address.street}}
+ {{address.zipCode}}
+ {{address.city}} / {{address.country}}
+
+
+ {{order.paymentMethod}} + {{order.orderTotal | currency}} + +
+


+ + + + + + + + + + + + + + {{value | currency }} + + + + + + + {{value }} % + + + + + {{(row.units * row.unitPrice) | currency }} + + + + + +
+ - diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts index cbd0d0b9..0cda0a8f 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts @@ -1,22 +1,17 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { OrderDto } from '../../../lib/proxy/orders'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { OrderViewModel } from '../../../lib/order-view-model'; +import { environment } from '../../../../../../src/environments/environment'; @Component({ selector: 'lib-order-detail', templateUrl: './order-detail.component.html' }) -export class OrderDetailComponent implements OnInit { - +export class OrderDetailComponent { + modalOption = { size: 'xl' } @Input() visible: boolean; @Input() - order: OrderDto | undefined; - + order: OrderViewModel | undefined; + mediaServerUrl = environment.mediaServerUrl; @Output() readonly visibleChange = new EventEmitter(); - - constructor() { } - - ngOnInit(): void { - } - } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index 1e66c318..0501af0c 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -4,36 +4,63 @@
-
{{ 'AbpCatalog::Products' | abpLocalization }}
-
-
- +
{{ 'AbpOrdering::Orders' | abpLocalization }}
+
+ + +
+ +
+ + +
+
+
+
- - {{ value | date }} + {{ value | date }} - - - - - {{ 'AbpCatalog::Detail' | abpLocalization }} - + + + {{ value | currency }} - -
+ - - + +
+ + + + + diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index cf83d309..3fb843c2 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -1,20 +1,73 @@ import { Component, OnInit } from '@angular/core'; -import { OrderDto, OrderService } from '../../lib/proxy/orders'; +import { OrderService } from '../../lib/proxy/orders'; +import { OrderViewModel, toOrderViewModel } from '../../lib'; +import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared'; +import { ListService } from '@abp/ng.core'; @Component({ selector: 'lib-orders', templateUrl: './orders.component.html', - styleUrls: ['./orders.component.css'] + styleUrls: ['./orders.component.css'], + providers: [ListService], }) export class OrdersComponent implements OnInit { - constructor(private orderService: OrderService) { } - list$ = this.orderService.getOrders({}); - selectedOrder: OrderDto | undefined; + constructor(private service: OrderService, + public list: ListService, + private confirmationService: ConfirmationService) { } + selectedOrder: OrderViewModel | undefined; isModalVisible = false; - ngOnInit(): void {} + items: OrderViewModel[]; + count = 0; + ngOnInit(): void { - openModal(id: string) { + const ordersStreamCreator = query => this.service.getListPaged(query); + + this.list.hookToQuery(ordersStreamCreator).subscribe(response => { + this.items = toOrderViewModel(response.items); + this.count = response.totalCount; + }); + } + + openModal(order: OrderViewModel) { + if (!order){ + return; + } + this.selectedOrder = order; this.isModalVisible = true; } + + closeModal(isVisible: boolean){ + if (isVisible){ + return; + } + this.selectedOrder = null; + this.isModalVisible = false; + } + + setAsShipped(row: OrderViewModel) { + this.confirmationService + .warn('AbpOrdering::WillSetAsShipped', { key: '::AreYouSure', defaultValue: 'Are you sure?' }) + .subscribe((status) => { + if (status !== Confirmation.Status.confirm) { + return; + } + this.service.setAsShipped(row.id).subscribe(() => { + this.list.get(); + }); + }); + } + setAsCancelled(row: OrderViewModel){ + this.confirmationService + .warn('AbpOrdering::WillSetAsCancelled', { key: '::AreYouSure', defaultValue: 'Are you sure?' }) + .subscribe((status``) => { + if (status !== Confirmation.Status.confirm) { + return; + } + this.service.setAsCancelled(row.id, { paymentRequestId: undefined, paymentRequestStatus: undefined}).subscribe(() => { + this.list.get(); + }); + }) + ; + } } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts index 78ea50b9..fcc888c4 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -6,15 +6,19 @@ import { OrdersComponent } from './orders.component'; import { ThemeSharedModule } from '@abp/ng.theme.shared'; import { CoreModule } from '@abp/ng.core'; import { OrderDetailComponent } from './order-detail/order-detail.component'; +import { OrderDetailItemComponent } from './order-detail/order-detail-item/order-detail-item.component'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; @NgModule({ declarations: [ OrdersComponent, - OrderDetailComponent + OrderDetailComponent, + OrderDetailItemComponent ], imports: [ CommonModule, + NgbDropdownModule, OrdersRoutingModule, ThemeSharedModule, CoreModule, diff --git a/apps/angular/src/environments/environment.prod.ts b/apps/angular/src/environments/environment.prod.ts index 9cc0851e..d54bc574 100644 --- a/apps/angular/src/environments/environment.prod.ts +++ b/apps/angular/src/environments/environment.prod.ts @@ -1,4 +1,4 @@ -import { Environment } from '@abp/ng.core'; +import { MyEnvironment } from './my-environment'; const baseUrl = 'http://localhost:4200'; @@ -22,8 +22,8 @@ export const environment = { rootNamespace: 'EShopOnAbp', }, }, - remoteEnv:{ - url: "/getEnvConfig", - mergeStrategy:'deepmerge' + remoteEnv: { + url: '/getEnvConfig', + mergeStrategy: 'deepmerge' } -} as Environment; +} as MyEnvironment; diff --git a/apps/angular/src/environments/environment.ts b/apps/angular/src/environments/environment.ts index d95bd122..23de1afb 100644 --- a/apps/angular/src/environments/environment.ts +++ b/apps/angular/src/environments/environment.ts @@ -1,4 +1,4 @@ -import { Environment } from '@abp/ng.core'; +import { MyEnvironment } from './my-environment'; const baseUrl = 'http://localhost:4200'; @@ -25,9 +25,12 @@ export const environment = { url: 'https://localhost:44354', rootNamespace: 'EShopOnAbp.CatalogService', }, - Ordering:{ + Ordering: { url: "https://localhost:44356", rootNamespace: 'EShopOnAbp.OrderingService', } }, -} as Environment; + mediaServerUrl:'https://localhost:44335' +} as MyEnvironment; + + diff --git a/apps/angular/src/environments/my-environment.ts b/apps/angular/src/environments/my-environment.ts new file mode 100644 index 00000000..5bae69f1 --- /dev/null +++ b/apps/angular/src/environments/my-environment.ts @@ -0,0 +1,5 @@ +import { Environment } from '@abp/ng.core'; + +export interface MyEnvironment extends Environment{ + mediaServerUrl?: string; +} diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml b/apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml index 4b0bcd39..344b969e 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/Components/UserOrders/Default.cshtml @@ -13,7 +13,7 @@ @foreach (var order in Model.UserOrders) { - var orderTotalString = order.Items.Sum(q => q.UnitPrice).ToString("C", new CultureInfo("en-US")); + var orderTotalString = order.Items.Sum(q => q.UnitPrice * q.Units).ToString("C", new CultureInfo("en-US")); string addressString = $"{order.Address.Street} {order.Address.ZipCode} \n {order.Address.City}/{order.Address.Country}";
diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 1e9191de..213aac33 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -43,7 +43,7 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } - [Authorize(OrderingServicePermissions.Orders.Default)] + //[Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetOrdersAsync(GetOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); From 56b4cba0044d161f9baeae3be1365b90ac8311d8 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 15 Mar 2022 17:59:52 +0300 Subject: [PATCH 14/47] feat: add order detail modal template to ordering page --- .../src/lib/proxy/generate-proxy.json | 233 ++++++++++++++++-- .../ordering/src/lib/proxy/orders/models.ts | 5 +- .../src/lib/proxy/orders/order.service.ts | 26 +- .../src/pages/orders/orders.component.html | 19 +- .../src/pages/orders/orders.component.ts | 3 +- 5 files changed, 255 insertions(+), 31 deletions(-) diff --git a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json index 1f441a49..ee7eda0d 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json +++ b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json @@ -215,6 +215,67 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, + "GetListPagedAsyncByInput": { + "uniqueName": "GetListPagedAsyncByInput", + "name": "GetListPagedAsync", + "httpMethod": "GET", + "url": "api/ordering/order/paged", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, "GetByOrderNoAsyncByOrderNo": { "uniqueName": "GetByOrderNoAsyncByOrderNo", "name": "GetByOrderNoAsync", @@ -252,11 +313,11 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, - "UpdateAsyncByIdAndInput": { - "uniqueName": "UpdateAsyncByIdAndInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/ordering/order/{id}", + "SetAsCancelledAsyncByIdAndInput": { + "uniqueName": "SetAsCancelledAsyncByIdAndInput", + "name": "SetAsCancelledAsync", + "httpMethod": "POST", + "url": "api/ordering/order/{id}/set-as-cancelled", "supportedVersions": [], "parametersOnMethod": [ { @@ -269,9 +330,9 @@ }, { "name": "input", - "typeAsString": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto, EShopOnAbp.OrderingService.Application.Contracts", - "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto, EShopOnAbp.OrderingService.Application.Contracts", + "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", "isOptional": false, "defaultValue": null } @@ -293,8 +354,8 @@ "nameOnMethod": "input", "name": "input", "jsonName": null, - "type": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.UpdateOrderDto", + "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", + "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -303,10 +364,47 @@ } ], "returnValue": { - "type": "EShopOnAbp.OrderingService.Orders.OrderDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderDto" + "type": "System.Void", + "typeSimple": "System.Void" }, - "allowAnonymous": null, + "allowAnonymous": false, + "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" + }, + "SetAsShippedAsyncById": { + "uniqueName": "SetAsShippedAsyncById", + "name": "SetAsShippedAsync", + "httpMethod": "POST", + "url": "api/ordering/order/{id}/set-as-shipped", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, "CreateAsyncByInput": { @@ -2098,7 +2196,39 @@ } ] }, - "EShopOnAbp.OrderingService.Orders.UpdateOrderDto": { + "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.LimitedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.LimitedResultRequestDto": { "baseType": null, "isEnum": false, "enumNames": null, @@ -2106,11 +2236,84 @@ "genericArguments": null, "properties": [ { - "name": "OrderStatusId", + "name": "DefaultMaxResultCount", "jsonName": null, "type": "System.Int32", "typeSimple": "number", "isRequired": false + }, + { + "name": "MaxMaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + }, + { + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultDto": { + "baseType": "Volo.Abp.Application.Dtos.ListResultDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "TotalCount", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isRequired": false + } + ] + }, + "Volo.Abp.Application.Dtos.ListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Items", + "jsonName": null, + "type": "[T]", + "typeSimple": "[T]", + "isRequired": false + } + ] + }, + "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "PaymentRequestId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isRequired": false + }, + { + "name": "PaymentRequestStatus", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false } ] }, diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts index 071bbefe..da2b3c9a 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts @@ -57,6 +57,7 @@ export interface OrderItemDto extends EntityDto { units: number; } -export interface UpdateOrderDto { - orderStatusId: number; +export interface SetAsCancelledDto { + paymentRequestId?: string; + paymentRequestStatus?: string; } diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts index 5ea19fdf..6b4e5b94 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts @@ -1,5 +1,6 @@ -import type { GetMyOrdersInput, GetOrdersInput, OrderCreateDto, OrderDto, UpdateOrderDto } from './models'; +import type { GetMyOrdersInput, GetOrdersInput, OrderCreateDto, OrderDto, SetAsCancelledDto } from './models'; import { RestService } from '@abp/ng.core'; +import type { PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core'; import { Injectable } from '@angular/core'; @Injectable({ @@ -31,6 +32,14 @@ export class OrderService { }, { apiName: this.apiName }); + getListPaged = (input: PagedAndSortedResultRequestDto) => + this.restService.request>({ + method: 'GET', + url: '/api/ordering/order/paged', + params: { sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, + }, + { apiName: this.apiName }); + getMyOrders = (input: GetMyOrdersInput) => this.restService.request({ method: 'GET', @@ -47,13 +56,20 @@ export class OrderService { }, { apiName: this.apiName }); - update = (id: string, input: UpdateOrderDto) => - this.restService.request({ - method: 'PUT', - url: `/api/ordering/order/${id}`, + setAsCancelled = (id: string, input: SetAsCancelledDto) => + this.restService.request({ + method: 'POST', + url: `/api/ordering/order/${id}/set-as-cancelled`, body: input, }, { apiName: this.apiName }); + setAsShipped = (id: string) => + this.restService.request({ + method: 'POST', + url: `/api/ordering/order/${id}/set-as-shipped`, + }, + { apiName: this.apiName }); + constructor(private restService: RestService) {} } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index 0501af0c..f747ef32 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -10,7 +10,7 @@
- + @@ -27,16 +27,22 @@ + +
@@ -53,9 +59,6 @@ - - - @@ -63,4 +66,4 @@ - + diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 3fb843c2..9a180d7d 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -29,6 +29,7 @@ export class OrdersComponent implements OnInit { }); } + openModal(order: OrderViewModel) { if (!order){ return; @@ -60,7 +61,7 @@ export class OrdersComponent implements OnInit { setAsCancelled(row: OrderViewModel){ this.confirmationService .warn('AbpOrdering::WillSetAsCancelled', { key: '::AreYouSure', defaultValue: 'Are you sure?' }) - .subscribe((status``) => { + .subscribe((status) => { if (status !== Confirmation.Status.confirm) { return; } From 880e2acd232118c5a4d467ee0f0f8ea955e826c3 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 16 Mar 2022 09:53:02 +0300 Subject: [PATCH 15/47] Add solution of SSL Error --- README.md | 13 +++++++++++++ docs/images/ssl-error.png | Bin 0 -> 170500 bytes 2 files changed, 13 insertions(+) create mode 100644 docs/images/ssl-error.png diff --git a/README.md b/README.md index 672fdcd1..2e357580 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,19 @@ You can either run in Visual Studio, or using [Microsoft Tye](https://github.com yarn start ``` +### Certificate Expiration +If the cerficiate is expired you'll see following error: + + + + +Generating a new certificate will fix that issue. To generate new one, + +- Remove `etc/dev-cert/localhost.pfx` + +- Manually execute `create-certificate.ps1` **or** re-run solution with `run-tye.ps1` + + ## Roadmap - [x] New blank micro-service solution ✔️ diff --git a/docs/images/ssl-error.png b/docs/images/ssl-error.png new file mode 100644 index 0000000000000000000000000000000000000000..f16403f98e21fe70bd8f55ddf9c06b09d8fd2651 GIT binary patch literal 170500 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 z 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 literal 0 HcmV?d00001 From cd6b3962a1dc5c3c042cb817895be2ef15ea6e6b Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 16 Mar 2022 10:25:01 +0300 Subject: [PATCH 16/47] Added log once consuming the cancelling event Removed the business logic and added the log to improve it in the future --- .../EShopOnAbp.PaymentService.Domain.csproj | 1 + .../EventHandlers/OrderCancelledEventHandler.cs | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj b/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj index a1af97d7..c87f3bb4 100644 --- a/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj +++ b/services/payment/src/EShopOnAbp.PaymentService.Domain/EShopOnAbp.PaymentService.Domain.csproj @@ -14,6 +14,7 @@ + diff --git a/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs index 9f1d781f..a4e3837c 100644 --- a/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs +++ b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs @@ -1,9 +1,10 @@ using EShopOnAbp.OrderingService.Orders; using EShopOnAbp.PaymentService.PaymentRequests; +using Serilog; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus.Distributed; -using Volo.Abp.Uow; + namespace EShopOnAbp.PaymentService.EventHandlers { @@ -16,11 +17,10 @@ namespace EShopOnAbp.PaymentService.EventHandlers _paymentRepository = paymenRepository; } - [UnitOfWork] public async Task HandleEventAsync(OrderCancelledEto eventData) { var payment = await _paymentRepository.GetAsync(eventData.Buyer.BuyerId.GetValueOrDefault()); - await _paymentRepository.DeleteAsync(payment); + Log.Information($"Cancelled the order: {payment.OrderId} payment:{payment.Id}"); } } } From d019752d7abe7b4efb6f73c86152976407b58dea Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 16 Mar 2022 13:33:16 +0300 Subject: [PATCH 17/47] feat: add orders page localization --- .../ordering/config/src/enums/route-names.ts | 3 +-- .../src/pages/orders/orders.component.html | 14 +++++++------- .../Localization/OrderingService/en.json | 7 ++++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/angular/projects/ordering/config/src/enums/route-names.ts b/apps/angular/projects/ordering/config/src/enums/route-names.ts index 4a594fc3..4d3606c8 100644 --- a/apps/angular/projects/ordering/config/src/enums/route-names.ts +++ b/apps/angular/projects/ordering/config/src/enums/route-names.ts @@ -1,4 +1,3 @@ export const enum eOrderingRouteNames { - Ordering = 'OrderingService::Menu:Orders', - Orders = 'CatalogService::Menu:Products', + Ordering = 'OrderingService::Menu:OrderManagement' } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index f747ef32..56eb9405 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -28,37 +28,37 @@ class="dropdown-item" (click)='openModal(row)' > - {{ 'AbpOrdering::Detail' | abpLocalization }} + {{ 'AbpUi::Edit' | abpLocalization }} - - + + {{ value | date }} - + {{ value | currency }} - + diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index e6d127d4..57abdfc2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -11,7 +11,12 @@ "Permission:Orders": "Orders", "Permission:OrderingService": "Ordering Service", "Menu:Orders": "Orders", - "Menu:OrderManagement": "Ordering Service", + "Menu:OrderManagement": "Order Management", + + "DisplayName:OrderNo": "Order No", + "DisplayName:OrderDate": "Order Date", + "DisplayName:OrderTotal": "Total", + "DisplayName:OrderStatus": "Order Status", "Permission:Orders.SetAsCancelled": "Set As Cancelled", "Permission:Orders.SetAsShipped": "Set As Shipped" } From 98662a1a968e378d427e03498ea797e9d9ea2219 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 16 Mar 2022 14:26:00 +0300 Subject: [PATCH 18/47] feat: add order detail page localization and permission --- .../ordering/config/src/enums/policy-names.ts | 9 +++-- .../ordering/config/src/enums/route-names.ts | 2 +- .../config/src/providers/route.provider.ts | 3 +- .../order-detail/order-detail.component.html | 34 +++++++++---------- .../src/pages/orders/orders.component.html | 9 +++-- .../src/pages/orders/orders.component.ts | 6 ++++ .../Localization/OrderingService/en.json | 15 +++++++- 7 files changed, 49 insertions(+), 29 deletions(-) diff --git a/apps/angular/projects/ordering/config/src/enums/policy-names.ts b/apps/angular/projects/ordering/config/src/enums/policy-names.ts index 6ddc7800..28b6edd3 100644 --- a/apps/angular/projects/ordering/config/src/enums/policy-names.ts +++ b/apps/angular/projects/ordering/config/src/enums/policy-names.ts @@ -1,7 +1,6 @@ export const enum eOrderingPolicyNames { - Ordering = 'CatalogService.Products', - - ProductManagementCreate = 'CatalogService.Products.Create', - ProductManagementUpdate = 'CatalogService.Products.Update', - ProductManagementDelete = 'CatalogService.Products.Delete', + ordering = 'OrderingService.Orders', + detail = 'OrderingService.Orders.Orders', + setAsShipped = 'OrderingService.Orders.SetAsShipped', + setAsCancelled = 'OrderingService.Products.SetAsCancelled', } diff --git a/apps/angular/projects/ordering/config/src/enums/route-names.ts b/apps/angular/projects/ordering/config/src/enums/route-names.ts index 4d3606c8..6dc09b1f 100644 --- a/apps/angular/projects/ordering/config/src/enums/route-names.ts +++ b/apps/angular/projects/ordering/config/src/enums/route-names.ts @@ -1,3 +1,3 @@ export const enum eOrderingRouteNames { - Ordering = 'OrderingService::Menu:OrderManagement' + ordering = 'OrderingService::Menu:OrderManagement' } diff --git a/apps/angular/projects/ordering/config/src/providers/route.provider.ts b/apps/angular/projects/ordering/config/src/providers/route.provider.ts index 9a9848b5..1e892f2d 100644 --- a/apps/angular/projects/ordering/config/src/providers/route.provider.ts +++ b/apps/angular/projects/ordering/config/src/providers/route.provider.ts @@ -12,8 +12,9 @@ export function configureRoutes(routesService: RoutesService) { routesService.add([ { path: '/ordering', - name: eOrderingRouteNames.Ordering, + name: eOrderingRouteNames.ordering, layout: eLayoutType.application, + requiredPolicy: eOrderingPolicyNames.ordering, parentName: null, iconClass: 'bi bi-collection-fill', }, diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html index d802e87e..55a26904 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html @@ -1,18 +1,18 @@ -

Order Detail

+

{{"OrderingService::ModalTitle" | abpLocalization }}

- #{{order.orderNo}} - {{order.orderStatus}} - {{order.buyer.name}} - {{order.buyer.email}} + #{{order.orderNo}} + {{order.orderStatus}} + {{order.buyer.name}} + {{order.buyer.email}} - + {{address.description}}
{{address.street}}
@@ -20,35 +20,33 @@ {{address.city}} / {{address.country}}
- {{order.paymentMethod}} - {{order.orderTotal | currency}} - + {{order.paymentMethod}} + {{order.orderTotal | currency}}



- - + + - + - - + + {{value | currency }} - - - + + {{value }} % - + {{(row.units * row.unitPrice) | currency }} diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index 56eb9405..e50f6daf 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -27,21 +27,24 @@
diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 9a180d7d..723d6bd9 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -3,6 +3,7 @@ import { OrderService } from '../../lib/proxy/orders'; import { OrderViewModel, toOrderViewModel } from '../../lib'; import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared'; import { ListService } from '@abp/ng.core'; +import { eOrderingPolicyNames } from '@eshoponabp/ordering/config'; @Component({ selector: 'lib-orders', @@ -18,6 +19,11 @@ export class OrdersComponent implements OnInit { isModalVisible = false; items: OrderViewModel[]; count = 0; + permissions = { + detail: eOrderingPolicyNames.ordering, + setAsShipped: eOrderingPolicyNames.setAsShipped, + setAsCancelled: eOrderingPolicyNames.setAsCancelled, + }; ngOnInit(): void { diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index 57abdfc2..1d50a6c6 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -15,8 +15,21 @@ "DisplayName:OrderNo": "Order No", "DisplayName:OrderDate": "Order Date", - "DisplayName:OrderTotal": "Total", + "DisplayName:OrderTotal": "Order Total", "DisplayName:OrderStatus": "Order Status", + + "DisplayName:ProductId": "Product Id", + "DisplayName:ProductName": "Product Name", + "DisplayName:PictureUrl": "Picture", + "DisplayName:Units": "Unit", + "DisplayName:UnitPrice": "Unit Price", + "DisplayName:Discount": "Discount", + "DisplayName:TotalPrice": "Total Price", + "DisplayName:BuyerName": "Buyer Name", + "DisplayName:BuyerEmail": "Buyer E-mail", + "DisplayName:Address": "Address", + "DisplayName:PaymentMethod": "Payment Method", + "DisplayName:Total": "Total", "Permission:Orders.SetAsCancelled": "Set As Cancelled", "Permission:Orders.SetAsShipped": "Set As Shipped" } From 597c7b61932ba38aa5d259f7b358a7e323b3dd15 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 16 Mar 2022 15:03:44 +0300 Subject: [PATCH 19/47] add forgotten codes --- .../Orders/OrderAppService.cs | 2 +- .../Localization/OrderingService/en.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 213aac33..1e9191de 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -43,7 +43,7 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } - //[Authorize(OrderingServicePermissions.Orders.Default)] + [Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetOrdersAsync(GetOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index 1d50a6c6..c1bbf183 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -12,7 +12,8 @@ "Permission:OrderingService": "Ordering Service", "Menu:Orders": "Orders", "Menu:OrderManagement": "Order Management", - + "ModalTitle":"Order Detail", + "DisplayName:OrderNo": "Order No", "DisplayName:OrderDate": "Order Date", "DisplayName:OrderTotal": "Order Total", From 029be2c8406cbad3f9b4ee8c600fa3aacef390b4 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 16 Mar 2022 16:26:19 +0300 Subject: [PATCH 20/47] Removed case for update action in unit test --- .../Orders/OrderApplication_Tests.cs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs index 2d581037..5adf2e5e 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.Application.Tests/Orders/OrderApplication_Tests.cs @@ -66,15 +66,6 @@ public class OrderApplication_Tests : OrderingServiceApplicationTestBase var myOrder = await _orderAppService.GetByOrderNoAsync(placedOrder.OrderNo); myOrder.ShouldNotBeNull(); - - var cancelledMyOrder = await _orderAppService.SetAsCancelledAsync(placedOrder.Id, new SetAsCancelledDto() - { - OrderStatusId = OrderStatus.Shipped.Id, - }); - //TODO - temp value - it should be Shipped - cancelledMyOrder.OrderStatus.ShouldBe(OrderStatus.Placed.ToString()); - - // Get all orders var orders = await _orderAppService.GetOrdersAsync(new GetOrdersInput() { From 749c7789ea508c1d17251d02055b62a50560f136 Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 17 Mar 2022 16:17:51 +0300 Subject: [PATCH 21/47] Removed OrderStatus table and added it as a column Returned back enum approach instead of Enumeration --- .../Orders/OrderDto.cs | 3 +- .../Orders/OrderAppService.cs | 15 +- .../Orders/Order.cs | 12 +- .../Orders/OrderStatus.cs | 51 +---- .../OrderServiceDataSeedContributor.cs | 37 ---- .../OrderingServiceDbContext.cs | 39 ++-- ...123922_RemovedOrderStatusTable.Designer.cs | 182 ++++++++++++++++++ .../20220317123922_RemovedOrderStatusTable.cs | 73 +++++++ .../OrderingServiceDbContextModelSnapshot.cs | 36 +--- .../Orders/EfCoreOrderRepository.cs | 14 +- .../Orders/OrderEfCoreQueryableExtensions.cs | 3 +- .../Orders/OrderRepository_Tests.cs | 19 +- 12 files changed, 301 insertions(+), 183 deletions(-) delete mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 29ca1943..70dbf254 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -7,8 +7,7 @@ namespace EShopOnAbp.OrderingService.Orders; public class OrderDto : EntityDto { public DateTime OrderDate { get; set; } - public int OrderNo {get;set;} - public int OrderStatusId { get; set; } + public int OrderNo { get; set; } public string OrderStatus { get; set; } public string PaymentMethod { get; set; } public BuyerDto Buyer { get; set; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 19c0701a..f33288ed 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -1,9 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Localization; +using EShopOnAbp.OrderingService.Localization; using EShopOnAbp.OrderingService.Orders.Specifications; using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Specifications; using Volo.Abp.Users; @@ -34,9 +34,9 @@ public class OrderAppService : ApplicationService, IOrderAppService public async Task> GetMyOrdersAsync(GetMyOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); - + var orders = await _orderRepository.GetOrdersByUserId(CurrentUser.GetId(), specification, true); - + return CreateOrderDtoMapping(orders); } @@ -106,8 +106,7 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus.Name, - OrderStatusId = order.OrderStatus.Id, + OrderStatus = order.OrderStatus.ToString(), PaymentMethod = order.PaymentMethod }; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index 989208a0..8e159007 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -1,8 +1,8 @@ -using System; +using EShopOnAbp.PaymentService.PaymentRequests; +using JetBrains.Annotations; +using System; using System.Collections.Generic; using System.Linq; -using EShopOnAbp.PaymentService.PaymentRequests; -using JetBrains.Annotations; using Volo.Abp; using Volo.Abp.Domain.Entities; @@ -10,7 +10,6 @@ namespace EShopOnAbp.OrderingService.Orders; public class Order : AggregateRoot { - private int _orderStatusId; public DateTime OrderDate { get; private set; } public int OrderNo { get; private set; } public string PaymentMethod { get; private set; } @@ -25,15 +24,14 @@ public class Order : AggregateRoot { } - internal Order(Guid id, Buyer buyer, Address address, [NotNull]string paymentMethod, Guid? paymentRequestId = null) : base(id) + internal Order(Guid id, Buyer buyer, Address address, [NotNull] string paymentMethod, Guid? paymentRequestId = null) : base(id) { - _orderStatusId = OrderStatus.Placed.Id; OrderDate = DateTime.UtcNow; OrderNo = GenerateOrderNo(id); Buyer = buyer; Address = address; PaymentRequestId = paymentRequestId; - PaymentMethod = Check.NotNullOrEmpty(paymentMethod,nameof(paymentMethod),maxLength:OrderConstants.OrderPaymentMethodNameMaxLength); + PaymentMethod = Check.NotNullOrEmpty(paymentMethod, nameof(paymentMethod), maxLength: OrderConstants.OrderPaymentMethodNameMaxLength); PaymentStatus = PaymentRequestState.Waiting.ToString(); // From PaymentService.Domain.Shared OrderItems = new List(); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs index dcd06c06..b3f464d2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs @@ -1,48 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Volo.Abp; +namespace EShopOnAbp.OrderingService.Orders; -namespace EShopOnAbp.OrderingService.Orders; - -public class OrderStatus : Enumeration +public enum OrderStatus { - public static OrderStatus Placed = new OrderStatus(1, nameof(Placed).ToLowerInvariant()); - public static OrderStatus Paid = new OrderStatus(2, nameof(Paid).ToLowerInvariant()); - public static OrderStatus Shipped = new OrderStatus(3, nameof(Shipped).ToLowerInvariant()); - public static OrderStatus Cancelled = new OrderStatus(4, nameof(Cancelled).ToLowerInvariant()); - - public OrderStatus(int id, string name) : base(id, name) - { - } - - public static IEnumerable List() => - new[] {Placed, Paid, Shipped, Cancelled}; - - public static OrderStatus FromName(string name) - { - var state = List() - .SingleOrDefault(s => String.Equals(s.Name, name, StringComparison.CurrentCultureIgnoreCase)); - - if (state == null) - { - throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); - } - - return state; - } - - public static OrderStatus From(int id) - { - var state = List().SingleOrDefault(s => s.Id == id); - - if (state == null) - { - throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); - } - - return state; - } + Placed, + Paid, + Shipped, + Cancelled } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs deleted file mode 100644 index 2ebd3abd..00000000 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Orders; -using Microsoft.EntityFrameworkCore; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; - -namespace EShopOnAbp.OrderingService.EntityFrameworkCore; - -/// -/// DataSeedContributor for seeding pre-exist order status data. -/// This is a sample for seeding data without DbSet (non-aggregate data), without using repository. -/// -public class OrderServiceDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IOrderingServiceDbContext _dbContext; - - public OrderServiceDataSeedContributor(IOrderingServiceDbContext dbContext) - { - _dbContext = dbContext; - } - - public async Task SeedAsync(DataSeedContext context) - { - await SeedOrderStatusAsync(); - } - - private async Task SeedOrderStatusAsync() - { - if (!await _dbContext.Set().AnyAsync()) - { - await _dbContext.Set().AddRangeAsync(OrderStatus.List()); - await _dbContext.SaveChangesAsync(); - } - } -} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs index d4b2d864..812eb22a 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs @@ -1,6 +1,9 @@ -using System; -using EShopOnAbp.OrderingService.Orders; +using EShopOnAbp.OrderingService.Orders; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using System; +using System.Data; +using System.Reflection.Emit; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -38,15 +41,17 @@ public class OrderingServiceDbContext : AbpDbContext, b.OwnsOne(o => o.Address, a => { a.WithOwner(); }); b.OwnsOne(o => o.Buyer, a => { a.WithOwner(); }); - b.Property("_orderStatusId").UsePropertyAccessMode(PropertyAccessMode.Field) - .HasColumnName("OrderStatusId") - .IsRequired(); - - b.HasOne(q => q.OrderStatus).WithMany().HasForeignKey("_orderStatusId"); - b.Navigation(q => q.OrderItems).UsePropertyAccessMode(PropertyAccessMode.Property); + + b.Property(q => q.OrderStatus).HasConversion(); + + //b.Property(e => e.OrderStatus).HasConversion( + // v => v.ToString(), + // v => (OrderStatus)Enum.Parse(typeof(OrderStatus), v)); }); + + builder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderItems", @@ -62,23 +67,5 @@ public class OrderingServiceDbContext : AbpDbContext, b.Property(q => q.Units).IsRequired(); b.Property(q => q.PictureUrl).IsRequired(false); }); - - builder.Entity(b => - { - b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderStatus", - OrderingServiceDbProperties.DbSchema); - b.ConfigureByConvention(); //auto configure for the base class props - - b.HasKey(q => q.Id); - - b.Property(q => q.Id) - .HasDefaultValue(1) - .ValueGeneratedNever() - .IsRequired(); - - b.Property(o => o.Name) - .HasMaxLength(OrderConstants.OrderStatusNameMaxLength) - .IsRequired(); - }); } } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs new file mode 100644 index 00000000..a0089c22 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs @@ -0,0 +1,182 @@ +// +using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + [DbContext(typeof(OrderingServiceDbContext))] + [Migration("20220317123922_RemovedOrderStatusTable")] + partial class RemovedOrderStatusTable + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("OrderDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OrderNo") + .HasColumnType("integer"); + + b.Property("OrderStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentMethod") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("PaymentStatus") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.ToTable("Orders", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Discount") + .HasColumnType("numeric"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("PictureUrl") + .HasColumnType("text"); + + b.Property("ProductCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("ProductName") + .IsRequired() + .HasColumnType("text"); + + b.Property("UnitPrice") + .HasColumnType("numeric"); + + b.Property("Units") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderItems", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 => + { + b1.Property("OrderId") + .HasColumnType("uuid"); + + b1.Property("City") + .HasColumnType("text"); + + b1.Property("Country") + .HasColumnType("text"); + + b1.Property("Description") + .HasColumnType("text"); + + b1.Property("Street") + .HasColumnType("text"); + + b1.Property("ZipCode") + .HasColumnType("text"); + + b1.HasKey("OrderId"); + + b1.ToTable("Orders"); + + b1.WithOwner() + .HasForeignKey("OrderId"); + }); + + b.OwnsOne("EShopOnAbp.OrderingService.Orders.Buyer", "Buyer", b1 => + { + b1.Property("OrderId") + .HasColumnType("uuid"); + + b1.Property("Email") + .HasColumnType("text"); + + b1.Property("Id") + .HasColumnType("uuid"); + + b1.Property("Name") + .HasColumnType("text"); + + b1.HasKey("OrderId"); + + b1.ToTable("Orders"); + + b1.WithOwner() + .HasForeignKey("OrderId"); + }); + + b.Navigation("Address"); + + b.Navigation("Buyer"); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.HasOne("EShopOnAbp.OrderingService.Orders.Order", null) + .WithMany("OrderItems") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Navigation("OrderItems"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs new file mode 100644 index 00000000..f856edbc --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs @@ -0,0 +1,73 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + public partial class RemovedOrderStatusTable : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Orders_OrderStatus_OrderStatusId", + table: "Orders"); + + migrationBuilder.DropTable( + name: "OrderStatus"); + + migrationBuilder.DropIndex( + name: "IX_Orders_OrderStatusId", + table: "Orders"); + + migrationBuilder.DropColumn( + name: "OrderStatusId", + table: "Orders"); + + migrationBuilder.AddColumn( + name: "OrderStatus", + table: "Orders", + type: "text", + nullable: false, + defaultValue: ""); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "OrderStatus", + table: "Orders"); + + migrationBuilder.AddColumn( + name: "OrderStatusId", + table: "Orders", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "OrderStatus", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false, defaultValue: 1), + Name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OrderStatus", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Orders_OrderStatusId", + table: "Orders", + column: "OrderStatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_Orders_OrderStatus_OrderStatusId", + table: "Orders", + column: "OrderStatusId", + principalTable: "OrderStatus", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs index d1a7946a..1652602c 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace EShopOnAbp.OrderingService.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) - .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("ProductVersion", "6.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -45,6 +45,10 @@ namespace EShopOnAbp.OrderingService.Migrations b.Property("OrderNo") .HasColumnType("integer"); + b.Property("OrderStatus") + .IsRequired() + .HasColumnType("text"); + b.Property("PaymentMethod") .IsRequired() .HasMaxLength(128) @@ -57,14 +61,8 @@ namespace EShopOnAbp.OrderingService.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); - b.Property("_orderStatusId") - .HasColumnType("integer") - .HasColumnName("OrderStatusId"); - b.HasKey("Id"); - b.HasIndex("_orderStatusId"); - b.ToTable("Orders", (string)null); }); @@ -106,30 +104,8 @@ namespace EShopOnAbp.OrderingService.Migrations b.ToTable("OrderItems", (string)null); }); - modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderStatus", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasDefaultValue(1); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.ToTable("OrderStatus", (string)null); - }); - modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => { - b.HasOne("EShopOnAbp.OrderingService.Orders.OrderStatus", "OrderStatus") - .WithMany() - .HasForeignKey("_orderStatusId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 => { b1.Property("OrderId") @@ -183,8 +159,6 @@ namespace EShopOnAbp.OrderingService.Migrations b.Navigation("Address"); b.Navigation("Buyer"); - - b.Navigation("OrderStatus"); }); modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs index 45ef6948..74bde613 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs @@ -1,11 +1,11 @@ -using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading; using System.Threading.Tasks; -using EShopOnAbp.OrderingService.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; @@ -20,14 +20,6 @@ public class EfCoreOrderRepository : EfCoreRepository InsertAsync(Order entity, bool autoSave = false, - CancellationToken cancellationToken = default) - { - var newEntity = await base.InsertAsync(entity, autoSave, GetCancellationToken(cancellationToken)); - await EnsurePropertyLoadedAsync(newEntity, o => o.OrderStatus, GetCancellationToken(cancellationToken)); - return newEntity; - } - public async Task> GetOrdersByUserId( Guid userId, ISpecification spec, diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs index cecca583..fef4878c 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs @@ -15,7 +15,6 @@ public static class OrderEfCoreQueryableExtensions return queryable .Include(x => x.Address) .Include(x => x.Buyer) - .Include(x => x.OrderItems) - .Include(x => x.OrderStatus); + .Include(x => x.OrderItems); } } \ No newline at end of file diff --git a/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs index 580b80e4..902cf2a7 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Orders; +using EShopOnAbp.OrderingService.Orders; using EShopOnAbp.OrderingService.Orders.Specifications; using EShopOnAbp.OrderingService.Samples; -using Microsoft.EntityFrameworkCore; using Shouldly; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Xunit; namespace EShopOnAbp.OrderingService.EntityFrameworkCore.Orders; @@ -26,14 +25,6 @@ public class OrderRepository_Tests : SampleRepository_Tests(); } - [Fact] - public async Task Should_Get_OrderStatus() - { - var dbSet = _dbContext.Set(); - var statusList = await dbSet.ToListAsync(); - statusList.Count.ShouldNotBe(0); - } - [Fact] public async Task Should_Get_User_Orders() { From f5372ccd222936a204372d79208a46735ee6f104 Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 17 Mar 2022 17:51:24 +0300 Subject: [PATCH 22/47] Removed OrderStatus string definitions --- .../Orders/OrderDto.cs | 2 +- .../Orders/OrderAppService.cs | 2 +- .../Orders/OrderStatus.cs | 0 .../OrderingServiceDbContext.cs | 20 ++++++------------- 4 files changed, 8 insertions(+), 16 deletions(-) rename services/ordering/src/{EShopOnAbp.OrderingService.Domain => EShopOnAbp.OrderingService.Domain.Shared}/Orders/OrderStatus.cs (100%) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 70dbf254..2cb13fca 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -8,7 +8,7 @@ public class OrderDto : EntityDto { public DateTime OrderDate { get; set; } public int OrderNo { get; set; } - public string OrderStatus { get; set; } + public OrderStatus OrderStatus { get; set; } public string PaymentMethod { get; set; } public BuyerDto Buyer { get; set; } public OrderAddressDto Address { get; set; } = new(); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index f33288ed..d39b0a15 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -106,7 +106,7 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus.ToString(), + OrderStatus = order.OrderStatus, PaymentMethod = order.PaymentMethod }; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderStatus.cs similarity index 100% rename from services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs rename to services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderStatus.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs index 812eb22a..146bfd8e 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs @@ -2,8 +2,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using System; -using System.Data; -using System.Reflection.Emit; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -20,17 +18,17 @@ public class OrderingServiceDbContext : AbpDbContext, { } - protected override void OnModelCreating(ModelBuilder builder) + protected override void OnModelCreating(ModelBuilder modelBuilder) { - base.OnModelCreating(builder); + base.OnModelCreating(modelBuilder); /* Include modules to your migration db context */ - builder.ConfigureOrderingService(); + modelBuilder.ConfigureOrderingService(); /* Configure your own tables/entities inside here */ - builder.Entity(b => + modelBuilder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "Orders", OrderingServiceDbProperties.DbSchema); b.ConfigureByConvention(); //auto configure for the base class props @@ -43,16 +41,10 @@ public class OrderingServiceDbContext : AbpDbContext, b.Navigation(q => q.OrderItems).UsePropertyAccessMode(PropertyAccessMode.Property); - b.Property(q => q.OrderStatus).HasConversion(); - - //b.Property(e => e.OrderStatus).HasConversion( - // v => v.ToString(), - // v => (OrderStatus)Enum.Parse(typeof(OrderStatus), v)); + b.Property(q => q.OrderStatus).HasConversion(new EnumToStringConverter()); }); - - - builder.Entity(b => + modelBuilder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderItems", OrderingServiceDbProperties.DbSchema); From f064bf041b4638aa9f930b89323122d9332b400a Mon Sep 17 00:00:00 2001 From: malik masis Date: Fri, 18 Mar 2022 09:35:59 +0300 Subject: [PATCH 23/47] To see PR changes - test --- .../Orders/OrderDto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 2cb13fca..8c0bdadd 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -6,7 +6,7 @@ namespace EShopOnAbp.OrderingService.Orders; public class OrderDto : EntityDto { - public DateTime OrderDate { get; set; } + public DateTime OrderDate { get; set; } public int OrderNo { get; set; } public OrderStatus OrderStatus { get; set; } public string PaymentMethod { get; set; } From b8d0820a52bfe50903976ccbe19c336a728ebde9 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Fri, 18 Mar 2022 16:24:20 +0300 Subject: [PATCH 24/47] Update policies, set status from enum. --- .../ordering/config/src/enums/policy-names.ts | 6 ++-- .../order-status/order-status.component.ts | 33 +++++++++++++++++++ .../src/lib/proxy/generate-proxy.json | 31 +++++++++++------ .../ordering/src/lib/proxy/orders/index.ts | 1 + .../ordering/src/lib/proxy/orders/models.ts | 4 +-- .../src/lib/proxy/orders/order-status.enum.ts | 10 ++++++ .../projects/ordering/src/ordering.module.ts | 9 +++-- .../src/pages/orders/orders.component.html | 16 +++++---- .../src/pages/orders/orders.component.ts | 2 ++ .../src/pages/orders/orders.module.ts | 16 +++++---- 10 files changed, 98 insertions(+), 30 deletions(-) create mode 100644 apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts create mode 100644 apps/angular/projects/ordering/src/lib/proxy/orders/order-status.enum.ts diff --git a/apps/angular/projects/ordering/config/src/enums/policy-names.ts b/apps/angular/projects/ordering/config/src/enums/policy-names.ts index 28b6edd3..6fd27f3c 100644 --- a/apps/angular/projects/ordering/config/src/enums/policy-names.ts +++ b/apps/angular/projects/ordering/config/src/enums/policy-names.ts @@ -1,6 +1,6 @@ export const enum eOrderingPolicyNames { ordering = 'OrderingService.Orders', - detail = 'OrderingService.Orders.Orders', - setAsShipped = 'OrderingService.Orders.SetAsShipped', - setAsCancelled = 'OrderingService.Products.SetAsCancelled', + detail = 'OrderingService.Orders', + setAsShipped = 'OrderingService.SetAsShipped', + setAsCancelled = 'OrderingService.SetAsCancelled', } diff --git a/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts b/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts new file mode 100644 index 00000000..85194f8a --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts @@ -0,0 +1,33 @@ +import {ChangeDetectionStrategy, Component, Input} from '@angular/core'; +import {orderStatusOptions} from '../../proxy/orders'; + +@Component({ + selector: 'lib-order-status', + template: ` + {{statusText}} + `, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class OrderStatusComponent { + + @Input() + set id(v: number) { + this.statusText = this.idToText(v); + } + + options = orderStatusOptions; + + statusText: string; + + private idToText(id: number): string | null { + console.log('hello', new Date().toLocalISOString()) + const item = this.options.find(x => x.value === id); + + if (!item) { + return null; + } + return item.key; + } + + +} diff --git a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json index ee7eda0d..9c464296 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json +++ b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json @@ -212,7 +212,7 @@ "type": "System.Collections.Generic.List", "typeSimple": "[EShopOnAbp.OrderingService.Orders.OrderDto]" }, - "allowAnonymous": null, + "allowAnonymous": false, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, "GetListPagedAsyncByInput": { @@ -1976,18 +1976,11 @@ "typeSimple": "number", "isRequired": false }, - { - "name": "OrderStatusId", - "jsonName": null, - "type": "System.Int32", - "typeSimple": "number", - "isRequired": false - }, { "name": "OrderStatus", "jsonName": null, - "type": "System.String", - "typeSimple": "string", + "type": "EShopOnAbp.OrderingService.Orders.OrderStatus", + "typeSimple": "EShopOnAbp.OrderingService.Orders.OrderStatus", "isRequired": false }, { @@ -2046,6 +2039,24 @@ "genericArguments": null, "properties": [] }, + "EShopOnAbp.OrderingService.Orders.OrderStatus": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Placed", + "Paid", + "Shipped", + "Cancelled" + ], + "enumValues": [ + 0, + 1, + 2, + 3 + ], + "genericArguments": null, + "properties": null + }, "EShopOnAbp.OrderingService.Orders.BuyerDto": { "baseType": "Volo.Abp.Application.Dtos.EntityDto", "isEnum": false, diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts index d6641f7d..989de0e0 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/index.ts @@ -1,2 +1,3 @@ export * from './models'; +export * from './order-status.enum'; export * from './order.service'; diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts index da2b3c9a..31c23a05 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts @@ -1,4 +1,5 @@ import type { EntityDto } from '@abp/ng.core'; +import type { OrderStatus } from './order-status.enum'; export interface BuyerDto extends EntityDto { name?: string; @@ -30,8 +31,7 @@ export interface OrderCreateDto { export interface OrderDto extends EntityDto { orderDate?: string; orderNo: number; - orderStatusId: number; - orderStatus?: string; + orderStatus: OrderStatus; paymentMethod?: string; buyer: BuyerDto; address: OrderAddressDto; diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/order-status.enum.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/order-status.enum.ts new file mode 100644 index 00000000..d63bfc72 --- /dev/null +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/order-status.enum.ts @@ -0,0 +1,10 @@ +import { mapEnumToOptions } from '@abp/ng.core'; + +export enum OrderStatus { + Placed = 0, + Paid = 1, + Shipped = 2, + Cancelled = 3, +} + +export const orderStatusOptions = mapEnumToOptions(OrderStatus); diff --git a/apps/angular/projects/ordering/src/ordering.module.ts b/apps/angular/projects/ordering/src/ordering.module.ts index 7c7702f5..5d342ad0 100644 --- a/apps/angular/projects/ordering/src/ordering.module.ts +++ b/apps/angular/projects/ordering/src/ordering.module.ts @@ -1,13 +1,18 @@ import { NgModule } from '@angular/core'; import { OrderingRoutingModule } from './ordering-routing.module'; +import { OrderStatusComponent } from './lib/components/order-status/order-status.component'; @NgModule({ - declarations: [], + declarations: [ + OrderStatusComponent + ], imports: [ OrderingRoutingModule ], - exports: [] + exports: [ + OrderStatusComponent + ] }) export class OrderingModule { } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index e50f6daf..162a7297 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -13,7 +13,7 @@ - +
@@ -61,7 +61,11 @@ {{ value | currency }}
- + + + + +
diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 723d6bd9..b5fff269 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -25,8 +25,10 @@ export class OrdersComponent implements OnInit { setAsCancelled: eOrderingPolicyNames.setAsCancelled, }; + ngOnInit(): void { + console.log(this.permissions) const ordersStreamCreator = query => this.service.getListPaged(query); this.list.hookToQuery(ordersStreamCreator).subscribe(response => { diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts index fcc888c4..4397bc98 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -8,6 +8,7 @@ import { CoreModule } from '@abp/ng.core'; import { OrderDetailComponent } from './order-detail/order-detail.component'; import { OrderDetailItemComponent } from './order-detail/order-detail-item/order-detail-item.component'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import {OrderingModule} from "../../ordering.module"; @NgModule({ @@ -16,12 +17,13 @@ import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; OrderDetailComponent, OrderDetailItemComponent ], - imports: [ - CommonModule, - NgbDropdownModule, - OrdersRoutingModule, - ThemeSharedModule, - CoreModule, - ] + imports: [ + CommonModule, + NgbDropdownModule, + OrdersRoutingModule, + ThemeSharedModule, + CoreModule, + OrderingModule, + ] }) export class OrdersModule { } From 619bf7bc3d8c7f102893c68bb915c04909143a28 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Fri, 18 Mar 2022 17:05:52 +0300 Subject: [PATCH 25/47] Get value of OrderStatusEnum at localization --- .../order-status/order-status.component.ts | 33 ------------------- .../projects/ordering/src/ordering.module.ts | 7 +--- .../src/pages/orders/orders.component.html | 2 +- .../src/pages/orders/orders.module.ts | 2 -- .../Localization/OrderingService/en.json | 6 +++- 5 files changed, 7 insertions(+), 43 deletions(-) delete mode 100644 apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts diff --git a/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts b/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts deleted file mode 100644 index 85194f8a..00000000 --- a/apps/angular/projects/ordering/src/lib/components/order-status/order-status.component.ts +++ /dev/null @@ -1,33 +0,0 @@ -import {ChangeDetectionStrategy, Component, Input} from '@angular/core'; -import {orderStatusOptions} from '../../proxy/orders'; - -@Component({ - selector: 'lib-order-status', - template: ` - {{statusText}} - `, - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class OrderStatusComponent { - - @Input() - set id(v: number) { - this.statusText = this.idToText(v); - } - - options = orderStatusOptions; - - statusText: string; - - private idToText(id: number): string | null { - console.log('hello', new Date().toLocalISOString()) - const item = this.options.find(x => x.value === id); - - if (!item) { - return null; - } - return item.key; - } - - -} diff --git a/apps/angular/projects/ordering/src/ordering.module.ts b/apps/angular/projects/ordering/src/ordering.module.ts index 5d342ad0..75e1eb8b 100644 --- a/apps/angular/projects/ordering/src/ordering.module.ts +++ b/apps/angular/projects/ordering/src/ordering.module.ts @@ -1,18 +1,13 @@ import { NgModule } from '@angular/core'; import { OrderingRoutingModule } from './ordering-routing.module'; -import { OrderStatusComponent } from './lib/components/order-status/order-status.component'; - @NgModule({ declarations: [ - OrderStatusComponent ], imports: [ OrderingRoutingModule ], - exports: [ - OrderStatusComponent - ] + exports: [] }) export class OrderingModule { } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index 162a7297..cc116521 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -63,7 +63,7 @@ - + {{ "OrderingService::Enum:OrderStatus:" + value | abpLocalization }} diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts index 4397bc98..ee7f4aac 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -8,7 +8,6 @@ import { CoreModule } from '@abp/ng.core'; import { OrderDetailComponent } from './order-detail/order-detail.component'; import { OrderDetailItemComponent } from './order-detail/order-detail-item/order-detail-item.component'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; -import {OrderingModule} from "../../ordering.module"; @NgModule({ @@ -23,7 +22,6 @@ import {OrderingModule} from "../../ordering.module"; OrdersRoutingModule, ThemeSharedModule, CoreModule, - OrderingModule, ] }) export class OrdersModule { } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index c1bbf183..1166f1a6 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -32,6 +32,10 @@ "DisplayName:PaymentMethod": "Payment Method", "DisplayName:Total": "Total", "Permission:Orders.SetAsCancelled": "Set As Cancelled", - "Permission:Orders.SetAsShipped": "Set As Shipped" + "Permission:Orders.SetAsShipped": "Set As Shipped", + "Enum:OrderStatus:0":"Placed", + "Enum:OrderStatus:1":"Paid", + "Enum:OrderStatus:2":"Shipped", + "Enum:OrderStatus:3":"Cancelled" } } \ No newline at end of file From 6c9fee5864ee1002fa58cc2ac61c57da5582acdb Mon Sep 17 00:00:00 2001 From: malik masis Date: Fri, 18 Mar 2022 19:18:40 +0300 Subject: [PATCH 26/47] Added missed words for Turkish language --- .../Localization/OrderingService/en.json | 8 +++--- .../Localization/OrderingService/tr.json | 27 ++++++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json index 1166f1a6..f3484dd7 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json @@ -12,13 +12,13 @@ "Permission:OrderingService": "Ordering Service", "Menu:Orders": "Orders", "Menu:OrderManagement": "Order Management", + "ModalTitle":"Order Detail", "DisplayName:OrderNo": "Order No", "DisplayName:OrderDate": "Order Date", "DisplayName:OrderTotal": "Order Total", "DisplayName:OrderStatus": "Order Status", - "DisplayName:ProductId": "Product Id", "DisplayName:ProductName": "Product Name", "DisplayName:PictureUrl": "Picture", @@ -28,11 +28,13 @@ "DisplayName:TotalPrice": "Total Price", "DisplayName:BuyerName": "Buyer Name", "DisplayName:BuyerEmail": "Buyer E-mail", - "DisplayName:Address": "Address", - "DisplayName:PaymentMethod": "Payment Method", + "DisplayName:Address": "Address", + "DisplayName:PaymentMethod": "Payment Method", "DisplayName:Total": "Total", + "Permission:Orders.SetAsCancelled": "Set As Cancelled", "Permission:Orders.SetAsShipped": "Set As Shipped", + "Enum:OrderStatus:0":"Placed", "Enum:OrderStatus:1":"Paid", "Enum:OrderStatus:2":"Shipped", diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json index b618ca81..59f1b966 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/tr.json @@ -12,7 +12,32 @@ "Permission:OrderingService": "Sipariş Servisi", "Menu:Orders": "Siparişler", "Menu:OrderManagement": "Sipariş Yönetimi", + + "ModalTitle": "Sipariş Detayı", + + "DisplayName:OrderNo": "Sipariş Numarası", + "DisplayName:OrderDate": "Sipariş Tarihi", + "DisplayName:OrderTotal": "Sipariş Toplamı", + "DisplayName:OrderStatus": "Sipariş Durumu", + "DisplayName:ProductId": "Ürün Anahtarı", + "DisplayName:ProductName": "Ürün Adı", + "DisplayName:PictureUrl": "Resim", + "DisplayName:Units": "Adet", + "DisplayName:UnitPrice": "Adet Fiyatı", + "DisplayName:Discount": "İndirim", + "DisplayName:TotalPrice": "Toplam Fiyat", + "DisplayName:BuyerName": "Alan Kişi", + "DisplayName:BuyerEmail": "Alan Kişi Mail", + "DisplayName:Address": "Adres", + "DisplayName:PaymentMethod": "Ödeme Şekli", + "DisplayName:Total": "Toplam", + "Permission:Orders.SetAsCancelled": "İptal Edildi Olarak İşaretle", - "Permission:Orders.SetAsShipped": "Sevk Edildi Olarak İşaretle" + "Permission:Orders.SetAsShipped": "Sevk Edildi Olarak İşaretle", + + "Enum:OrderStatus:0": "Oluşturuldu", + "Enum:OrderStatus:1": "Ödendi", + "Enum:OrderStatus:2": "Sevk Edildi", + "Enum:OrderStatus:3": "İptal Edildi" } } \ No newline at end of file From e55ce11c4ee72256f8c7732221b502bc08959079 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Tue, 22 Mar 2022 01:40:36 +0300 Subject: [PATCH 27/47] Added yarp to shared gateway hosting --- .../EShopOnAbp.Shared.Hosting.Gateways.csproj | 1 + .../EShopOnAbpSharedHostingGatewaysModule.cs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj index 33dfe14e..6f653505 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj @@ -7,6 +7,7 @@ + diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs index 895cfabf..a28d8444 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs @@ -17,8 +17,8 @@ namespace EShopOnAbp.Shared.Hosting.Gateways { var configuration = context.Services.GetConfiguration(); - context.Services.AddOcelot(configuration) - .AddPolly(); + // context.Services.AddOcelot(configuration) + // .AddPolly(); } } } \ No newline at end of file From 0e73b9f16a3d2ecb8073d9e07eea58be298c4099 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Tue, 22 Mar 2022 01:40:59 +0300 Subject: [PATCH 28/47] added yarp to public-web gateway --- .../EShopOnAbpWebPublicGatewayModule.cs | 105 +++++++++++------- .../appsettings.json | 85 +++++++++++++- 2 files changed, 146 insertions(+), 44 deletions(-) diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs index a77e5660..00f4da4f 100644 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs @@ -7,6 +7,7 @@ using Ocelot.Middleware; using System.Collections.Generic; using System.Linq; using EShopOnAbp.Shared.Hosting.AspNetCore; +using Microsoft.AspNetCore.Http; using Volo.Abp; using Volo.Abp.Modularity; using Microsoft.AspNetCore.Rewrite; @@ -23,21 +24,24 @@ public class EShopOnAbpWebPublicGatewayModule : AbpModule var configuration = context.Services.GetConfiguration(); var hostingEnvironment = context.Services.GetHostingEnvironment(); - SwaggerConfigurationHelper.ConfigureWithAuth( - context: context, - authority: configuration["AuthServer:Authority"], - scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ - { - { "AccountService", "Account Service API" }, - { "IdentityService", "Identity Service API" }, - { "AdministrationService", "Administration Service API" }, - { "CatalogService", "Catalog Service API" }, - { "BasketService", "Basket Service API" }, - { "PaymentService", "Payment Service API" }, - { "OrderingService", "Ordering Service API" }, - }, - apiTitle: "WebPublic Gateway" - ); + // SwaggerConfigurationHelper.ConfigureWithAuth( + // context: context, + // authority: configuration["AuthServer:Authority"], + // scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ + // { + // { "AccountService", "Account Service API" }, + // { "IdentityService", "Identity Service API" }, + // { "AdministrationService", "Administration Service API" }, + // { "CatalogService", "Catalog Service API" }, + // { "BasketService", "Basket Service API" }, + // { "PaymentService", "Payment Service API" }, + // { "OrderingService", "Ordering Service API" }, + // }, + // apiTitle: "WebPublic Gateway" + // ); + + context.Services.AddReverseProxy() + .LoadFromConfig(configuration.GetSection("ReverseProxy")); } public override void OnApplicationInitialization(ApplicationInitializationContext context) @@ -52,35 +56,50 @@ public class EShopOnAbpWebPublicGatewayModule : AbpModule app.UseCorrelationId(); app.UseAbpSerilogEnrichers(); - app.UseSwagger(); - app.UseSwaggerUI(options => + // app.UseSwagger(); + // app.UseSwaggerUI(options => + // { + // var configuration = context.ServiceProvider.GetRequiredService(); + // var routes = configuration.GetSection("Routes").Get>(); + // var routedServices = routes + // .GroupBy(t => t.ServiceKey) + // .Select(r => r.First()) + // .Distinct(); + // + // foreach (var config in routedServices) + // { + // var url = + // $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; + // if (!env.IsDevelopment()) + // { + // url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}"; + // } + // + // options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); + // options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + // options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); + // } + // }); + // + // app.UseRewriter(new RewriteOptions() + // // Regex for "", "/" and "" (whitespace) + // .AddRedirect("^(|\\|\\s+)$", "/swagger")); + // + // app.UseOcelot().Wait(); + // app.MapWhen( + // ctx => ctx.Request.Path.ToString().TrimEnd('/').Equals(""), + // app2 => + // { + // app2.UseRouting(); + // // app2.UseConfiguredEndpoints(); + // app2.UseEndpoints(endpoints => endpoints.MapReverseProxy()); + // } + // ); + app.UseRouting(); + app.UseEndpoints(endpoints => { - var configuration = context.ServiceProvider.GetRequiredService(); - var routes = configuration.GetSection("Routes").Get>(); - var routedServices = routes - .GroupBy(t => t.ServiceKey) - .Select(r => r.First()) - .Distinct(); - - foreach (var config in routedServices) - { - var url = - $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; - if (!env.IsDevelopment()) - { - url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}"; - } - - options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); - options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); - } + endpoints.MapGet("", ctx => ctx.Response.WriteAsync("YAG")); + endpoints.MapReverseProxy(); }); - - app.UseRewriter(new RewriteOptions() - // Regex for "", "/" and "" (whitespace) - .AddRedirect("^(|\\|\\s+)$", "/swagger")); - - app.UseOcelot().Wait(); } } \ No newline at end of file diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json index dfe10330..924dbd44 100644 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json @@ -17,11 +17,94 @@ } }, "AllowedHosts": "*", - "Redis": { "Configuration": "localhost:6379" }, "ElasticSearch": { "Url": "http://localhost:9200" + }, + "ReverseProxy": { + "Routes": { + "account-route": { + "ClusterId": "account-cluster", + "Match": { + "Path": "/api/account/{**everything}" + } + }, + "administration-route": { + "ClusterId": "administration-cluster", + "Match": { + "Path": "/api/abp/{**everything}" + } + }, + "catalog-route": { + "ClusterId": "catalog-cluster", + "Match": { + "Path": "/api/catalog/{**everything}" + } + }, + "basket-route": { + "ClusterId": "basket-cluster", + "Match": { + "Path": "/api/basket/{**everything}" + } + }, + "ordering-route": { + "ClusterId": "ordering-cluster", + "Match": { + "Path": "/api/ordering/{**everything}" + } + }, + "payment-route": { + "ClusterId": "payment-cluster", + "Match": { + "Path": "/api/payment/{**everything}" + } + } + }, + "Clusters": { + "account-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44330" + } + } + }, + "administration-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + }, + "catalog-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44354" + } + } + }, + "basket-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44355" + } + } + }, + "ordering-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44356" + } + } + }, + "payment-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44357" + } + } + } + } } } From 671608331879b25f63b3510ec6343001196c0713 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 22 Mar 2022 11:31:25 +0300 Subject: [PATCH 29/47] Completed some requests of the reviewer Still need to work on some of them --- .../Orders/IOrderAppService.cs | 2 +- .../Orders/SetAsCancelledDto.cs | 10 -------- .../Orders/OrderAppService.cs | 6 ++--- .../Orders/OrderCancelledEto.cs | 1 + .../Orders/IOrderRepository.cs | 2 +- .../Orders/Order.cs | 7 ++---- .../Orders/OrderManager.cs | 5 ++-- .../Orders/EfCoreOrderRepository.cs | 2 +- .../OrderClientProxy.Generated.cs | 5 ++-- .../ordering-generate-proxy.json | 24 ++----------------- .../appsettings.json | 2 +- .../OrderCancelledEventHandler.cs | 2 +- 12 files changed, 18 insertions(+), 50 deletions(-) delete mode 100644 services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs index 90dd07f2..169ab68a 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/IOrderAppService.cs @@ -13,7 +13,7 @@ public interface IOrderAppService : IApplicationService Task> GetMyOrdersAsync(GetMyOrdersInput input); Task> GetOrdersAsync(GetOrdersInput input); Task GetByOrderNoAsync(int orderNo); - Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input); + Task SetAsCancelledAsync(Guid id); Task SetAsShippedAsync(Guid id); Task> GetListPagedAsync(PagedAndSortedResultRequestDto input); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs deleted file mode 100644 index f0cd0783..00000000 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/SetAsCancelledDto.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace EShopOnAbp.OrderingService.Orders -{ - public class SetAsCancelledDto - { - public Guid PaymentRequestId { get; set; } - public string PaymentRequestStatus { get; set; } - } -} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 516d7a5b..45fae33e 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -47,7 +47,7 @@ public class OrderAppService : ApplicationService, IOrderAppService public async Task> GetOrdersAsync(GetOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); - var orders = await _orderRepository.GetOrders(specification, true); + var orders = await _orderRepository.GetOrdersAsync(specification, true); return CreateOrderDtoMapping(orders); } @@ -78,9 +78,9 @@ public class OrderAppService : ApplicationService, IOrderAppService } [Authorize(OrderingServicePermissions.Orders.SetAsCancelled)] - public async Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input) + public async Task SetAsCancelledAsync(Guid id) { - await _orderManager.CancelOrderAsync(id, input.PaymentRequestId, input.PaymentRequestStatus); + await _orderManager.CancelOrderAsync(id); } [Authorize(OrderingServicePermissions.Orders.SetAsShipped)] diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs index 62e221fd..9eef325d 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderCancelledEto.cs @@ -8,6 +8,7 @@ namespace EShopOnAbp.OrderingService.Orders; [EventName("EShopOnAbp.Order.Cancelled")] public class OrderCancelledEto : EtoBase { + public Guid PaymentRequestId { get; set; } public Guid OrderId { get; set; } public int OrderNo { get; set; } public DateTime OrderDate { get; set; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs index c031ea4f..71ea87dc 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/IOrderRepository.cs @@ -15,7 +15,7 @@ public interface IOrderRepository : IRepository bool includeDetails = true, CancellationToken cancellationToken = default); - Task> GetOrders( + Task> GetOrdersAsync( ISpecification spec, bool includeDetails = true, CancellationToken cancellationToken = default); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index f942af8c..7ce801c6 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -57,12 +57,9 @@ public class Order : AggregateRoot return this; } - public Order SetOrderCancelled(Guid paymentRequestId, string paymentRequestStatus) + public Order SetOrderCancelled() { - PaymentRequestId = paymentRequestId; - PaymentStatus = paymentRequestStatus; OrderStatus = OrderStatus.Cancelled; - return this; } @@ -97,7 +94,7 @@ public class Order : AggregateRoot public Order SetOrderAsShipped() { - if(OrderStatus == OrderStatus.Cancelled) + if (OrderStatus == OrderStatus.Cancelled) { return this; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs index 37da005a..5bcd0dd0 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs @@ -91,7 +91,7 @@ public class OrderManager : DomainService return await _orderRepository.UpdateAsync(order, autoSave: true); } - public async Task CancelOrderAsync(Guid orderId, Guid paymentRequestId, string paymentRequestStatus) + public async Task CancelOrderAsync(Guid orderId) { var order = await _orderRepository.GetAsync(orderId); if (order == null) @@ -100,11 +100,12 @@ public class OrderManager : DomainService .WithData("OrderId", orderId); } - order.SetOrderCancelled(paymentRequestId, paymentRequestStatus); + order.SetOrderCancelled(); // Publish order cancelled event await _distributedEventBus.PublishAsync(new OrderCancelledEto { + PaymentRequestId = order.PaymentRequestId.GetValueOrDefault(), OrderId = order.Id, OrderDate = order.OrderDate, OrderNo = order.OrderNo, diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs index 9f6c1452..98349251 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs @@ -34,7 +34,7 @@ public class EfCoreOrderRepository : EfCoreRepository> GetOrders( + public async Task> GetOrdersAsync( ISpecification spec, bool includeDetails = false, CancellationToken cancellationToken = default) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs index f51841db..26616094 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/OrderClientProxy.Generated.cs @@ -56,12 +56,11 @@ public partial class OrderClientProxy : ClientProxyBase, IOrde }); } - public virtual async Task SetAsCancelledAsync(Guid id, SetAsCancelledDto input) + public virtual async Task SetAsCancelledAsync(Guid id) { await RequestAsync(nameof(SetAsCancelledAsync), new ClientProxyRequestTypeValue { - { typeof(Guid), id }, - { typeof(SetAsCancelledDto), input } + { typeof(Guid), id } }); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json index f437165f..37b59d11 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Client/ClientProxies/ordering-generate-proxy.json @@ -232,8 +232,8 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, - "SetAsCancelledAsyncByIdAndInput": { - "uniqueName": "SetAsCancelledAsyncByIdAndInput", + "SetAsCancelledAsyncById": { + "uniqueName": "SetAsCancelledAsyncById", "name": "SetAsCancelledAsync", "httpMethod": "POST", "url": "api/ordering/order/{id}/set-as-cancelled", @@ -246,14 +246,6 @@ "typeSimple": "string", "isOptional": false, "defaultValue": null - }, - { - "name": "input", - "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto, EShopOnAbp.OrderingService.Application.Contracts", - "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "isOptional": false, - "defaultValue": null } ], "parameters": [ @@ -268,18 +260,6 @@ "constraintTypes": [], "bindingSourceId": "Path", "descriptorName": "" - }, - { - "nameOnMethod": "input", - "name": "input", - "jsonName": null, - "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", - "descriptorName": "" } ], "returnValue": { diff --git a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json index 817f4dce..9def8b83 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json +++ b/services/ordering/src/EShopOnAbp.OrderingService.HttpApi.Host/appsettings.json @@ -1,7 +1,7 @@ { "App": { "SelfUrl": "https://localhost:44356", - "CorsOrigins": "https://localhost:44372,https://localhost:44373,http://localhost:4200,https://localhost:4200" + "CorsOrigins": "https://localhost:44372,https://localhost:44373,https://localhost:4200" }, "AuthServer": { "Authority": "https://localhost:44330", diff --git a/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs index a4e3837c..8940dc74 100644 --- a/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs +++ b/services/payment/src/EShopOnAbp.PaymentService.Domain/EventHandlers/OrderCancelledEventHandler.cs @@ -19,7 +19,7 @@ namespace EShopOnAbp.PaymentService.EventHandlers public async Task HandleEventAsync(OrderCancelledEto eventData) { - var payment = await _paymentRepository.GetAsync(eventData.Buyer.BuyerId.GetValueOrDefault()); + var payment = await _paymentRepository.GetAsync(eventData.PaymentRequestId); Log.Information($"Cancelled the order: {payment.OrderId} payment:{payment.Id}"); } } From 3ee37335f0063909df0a81f323377d066934ef59 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:05:30 +0300 Subject: [PATCH 30/47] remove unused Module --- .../ordering/config/src/order-config-routing.module.ts | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 apps/angular/projects/ordering/config/src/order-config-routing.module.ts diff --git a/apps/angular/projects/ordering/config/src/order-config-routing.module.ts b/apps/angular/projects/ordering/config/src/order-config-routing.module.ts deleted file mode 100644 index b82cfada..00000000 --- a/apps/angular/projects/ordering/config/src/order-config-routing.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -const routes: Routes = []; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class OrderConfigRoutingModule { } From 749cad94185c9ac4cbca0c89b0f28b3062dd93c3 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:23:41 +0300 Subject: [PATCH 31/47] add prettier to angular and format ordering classes --- apps/angular/package.json | 3 +- .../config/src/ordering-config.module.ts | 1 - .../config/src/providers/route.provider.ts | 4 +- .../projects/ordering/src/ordering.module.ts | 12 ++--- .../order-detail-item.component.ts | 11 ++--- .../order-detail/order-detail.component.ts | 6 +-- .../src/pages/orders/orders.component.ts | 48 +++++++++++-------- .../src/pages/orders/orders.module.ts | 17 ++----- 8 files changed, 47 insertions(+), 55 deletions(-) diff --git a/apps/angular/package.json b/apps/angular/package.json index 8643fb78..da420ecb 100644 --- a/apps/angular/package.json +++ b/apps/angular/package.json @@ -52,9 +52,10 @@ "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", "ng-packagr": "^12.2.2", + "prettier": "^2.6.0", "protractor": "~7.0.0", "ts-node": "~8.3.0", "tslint": "~6.1.0", "typescript": "~4.3.5" } -} \ No newline at end of file +} diff --git a/apps/angular/projects/ordering/config/src/ordering-config.module.ts b/apps/angular/projects/ordering/config/src/ordering-config.module.ts index cfe437fe..53537295 100644 --- a/apps/angular/projects/ordering/config/src/ordering-config.module.ts +++ b/apps/angular/projects/ordering/config/src/ordering-config.module.ts @@ -1,7 +1,6 @@ import { ModuleWithProviders, NgModule } from '@angular/core'; import { ORDERING_ROUTE_PROVIDERS } from './providers/route.provider'; - @NgModule() export class OrderingConfigModule { static forRoot(): ModuleWithProviders { diff --git a/apps/angular/projects/ordering/config/src/providers/route.provider.ts b/apps/angular/projects/ordering/config/src/providers/route.provider.ts index 1e892f2d..be624bc5 100644 --- a/apps/angular/projects/ordering/config/src/providers/route.provider.ts +++ b/apps/angular/projects/ordering/config/src/providers/route.provider.ts @@ -1,7 +1,7 @@ import { eLayoutType, RoutesService } from '@abp/ng.core'; import { APP_INITIALIZER } from '@angular/core'; import { eOrderingPolicyNames } from '../enums/policy-names'; -import { eOrderingRouteNames} from '../enums/route-names'; +import { eOrderingRouteNames } from '../enums/route-names'; export const ORDERING_ROUTE_PROVIDERS = [ { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true }, @@ -14,7 +14,7 @@ export function configureRoutes(routesService: RoutesService) { path: '/ordering', name: eOrderingRouteNames.ordering, layout: eLayoutType.application, - requiredPolicy: eOrderingPolicyNames.ordering, + requiredPolicy: eOrderingPolicyNames.ordering, parentName: null, iconClass: 'bi bi-collection-fill', }, diff --git a/apps/angular/projects/ordering/src/ordering.module.ts b/apps/angular/projects/ordering/src/ordering.module.ts index 75e1eb8b..724b0dfb 100644 --- a/apps/angular/projects/ordering/src/ordering.module.ts +++ b/apps/angular/projects/ordering/src/ordering.module.ts @@ -2,12 +2,8 @@ import { NgModule } from '@angular/core'; import { OrderingRoutingModule } from './ordering-routing.module'; @NgModule({ - declarations: [ - ], - imports: [ - OrderingRoutingModule - ], - exports: [] + declarations: [], + imports: [OrderingRoutingModule], + exports: [], }) -export class OrderingModule { -} +export class OrderingModule {} diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts index e6152131..22f931dd 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts @@ -3,19 +3,18 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'lib-order-detail-item', template: ` -
-
- {{label}} +
+
+ {{ label }}
- +
`, - styles: [] + styles: [], }) export class OrderDetailItemComponent { - @Input() label = ''; } diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts index 0cda0a8f..a38ef123 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.ts @@ -4,10 +4,10 @@ import { environment } from '../../../../../../src/environments/environment'; @Component({ selector: 'lib-order-detail', - templateUrl: './order-detail.component.html' + templateUrl: './order-detail.component.html', }) -export class OrderDetailComponent { - modalOption = { size: 'xl' } +export class OrderDetailComponent { + modalOption = { size: 'xl' }; @Input() visible: boolean; @Input() diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index b5fff269..9361ce13 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { OrderService } from '../../lib/proxy/orders'; +import { OrderService } from '../../lib/proxy/orders'; import { OrderViewModel, toOrderViewModel } from '../../lib'; import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared'; import { ListService } from '@abp/ng.core'; @@ -12,9 +12,12 @@ import { eOrderingPolicyNames } from '@eshoponabp/ordering/config'; providers: [ListService], }) export class OrdersComponent implements OnInit { - constructor(private service: OrderService, - public list: ListService, - private confirmationService: ConfirmationService) { } + constructor( + private service: OrderService, + public list: ListService, + private confirmationService: ConfirmationService + ) {} + selectedOrder: OrderViewModel | undefined; isModalVisible = false; items: OrderViewModel[]; @@ -25,10 +28,8 @@ export class OrdersComponent implements OnInit { setAsCancelled: eOrderingPolicyNames.setAsCancelled, }; - ngOnInit(): void { - - console.log(this.permissions) + console.log(this.permissions); const ordersStreamCreator = query => this.service.getListPaged(query); this.list.hookToQuery(ordersStreamCreator).subscribe(response => { @@ -37,17 +38,16 @@ export class OrdersComponent implements OnInit { }); } - openModal(order: OrderViewModel) { - if (!order){ + if (!order) { return; } this.selectedOrder = order; this.isModalVisible = true; } - closeModal(isVisible: boolean){ - if (isVisible){ + closeModal(isVisible: boolean) { + if (isVisible) { return; } this.selectedOrder = null; @@ -57,7 +57,7 @@ export class OrdersComponent implements OnInit { setAsShipped(row: OrderViewModel) { this.confirmationService .warn('AbpOrdering::WillSetAsShipped', { key: '::AreYouSure', defaultValue: 'Are you sure?' }) - .subscribe((status) => { + .subscribe(status => { if (status !== Confirmation.Status.confirm) { return; } @@ -66,17 +66,25 @@ export class OrdersComponent implements OnInit { }); }); } - setAsCancelled(row: OrderViewModel){ + + setAsCancelled(row: OrderViewModel) { this.confirmationService - .warn('AbpOrdering::WillSetAsCancelled', { key: '::AreYouSure', defaultValue: 'Are you sure?' }) - .subscribe((status) => { + .warn('AbpOrdering::WillSetAsCancelled', { + key: '::AreYouSure', + defaultValue: 'Are you sure?', + }) + .subscribe(status => { if (status !== Confirmation.Status.confirm) { return; } - this.service.setAsCancelled(row.id, { paymentRequestId: undefined, paymentRequestStatus: undefined}).subscribe(() => { - this.list.get(); - }); - }) - ; + this.service + .setAsCancelled(row.id, { + paymentRequestId: undefined, + paymentRequestStatus: undefined, + }) + .subscribe(() => { + this.list.get(); + }); + }); } } diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts index ee7f4aac..38d8e79f 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.module.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.module.ts @@ -9,19 +9,8 @@ import { OrderDetailComponent } from './order-detail/order-detail.component'; import { OrderDetailItemComponent } from './order-detail/order-detail-item/order-detail-item.component'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; - @NgModule({ - declarations: [ - OrdersComponent, - OrderDetailComponent, - OrderDetailItemComponent - ], - imports: [ - CommonModule, - NgbDropdownModule, - OrdersRoutingModule, - ThemeSharedModule, - CoreModule, - ] + declarations: [OrdersComponent, OrderDetailComponent, OrderDetailItemComponent], + imports: [CommonModule, NgbDropdownModule, OrdersRoutingModule, ThemeSharedModule, CoreModule], }) -export class OrdersModule { } +export class OrdersModule {} From b0f06531d8f97898ef1c8bf43a3ffacd78d31f04 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:25:58 +0300 Subject: [PATCH 32/47] remove abpLocalization from order-detail and add order-detail-item --- .../order-detail-item.component.ts | 2 +- .../order-detail/order-detail.component.html | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts index 22f931dd..e6044526 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail-item/order-detail-item.component.ts @@ -5,7 +5,7 @@ import { Component, Input } from '@angular/core'; template: `
- {{ label }} + {{ label | abpLocalization }}
diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html index 55a26904..0fe82696 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html @@ -1,18 +1,18 @@ -

{{"OrderingService::ModalTitle" | abpLocalization }}

+

{{"OrderingService::ModalTitle" }}

- #{{order.orderNo}} - {{order.orderStatus}} - {{order.buyer.name}} - {{order.buyer.email}} + #{{order.orderNo}} + {{order.orderStatus}} + {{order.buyer.name}} + {{order.buyer.email}} - + {{address.description}}
{{address.street}}
@@ -20,33 +20,33 @@ {{address.city}} / {{address.country}}
- {{order.paymentMethod}} - {{order.orderTotal | currency}} + {{order.paymentMethod}} + {{order.orderTotal | currency}}



- - + + - - + + {{value | currency }} - - + + {{value }} % - + {{(row.units * row.unitPrice) | currency }} @@ -60,7 +60,7 @@ From 67ce9abb158197e20e1bfa59c10345b46bd17351 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:31:32 +0300 Subject: [PATCH 33/47] Format with prettier orders and order detail --- .../order-detail/order-detail.component.html | 96 +++++++++++-------- .../src/pages/orders/orders.component.html | 61 +++++++----- 2 files changed, 90 insertions(+), 67 deletions(-) diff --git a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html index 0fe82696..f3f8d19a 100644 --- a/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html @@ -1,66 +1,78 @@ - + -

{{"OrderingService::ModalTitle" }}

+

{{ 'OrderingService::ModalTitle' }}

+
+
+ #{{ order.orderNo }} + {{ + order.orderStatus + }} + {{ + order.buyer.name + }} + {{ + order.buyer.email + }} -
-
- #{{order.orderNo}} - {{order.orderStatus}} - {{order.buyer.name}} - {{order.buyer.email}} - - - - {{address.description}}
- {{address.street}}
- {{address.zipCode}}
- {{address.city}} / {{address.country}}
-
+ + + {{ address.description }}
+ {{ address.street }}
+ {{ address.zipCode }}
+ {{ address.city }} / {{ address.country }}
+
- {{order.paymentMethod}} - {{order.orderTotal | currency}} + {{ + order.paymentMethod + }} + {{ + order.orderTotal | currency + }}
-


+


- + - - - - + + + + - - - - - {{value | currency }} + + + + {{ value | currency }} - - - - {{value }} % - + + + {{ value }} % - - {{(row.units * row.unitPrice) | currency }} + + {{ row.units * row.unitPrice | currency }} - -
- - + diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.html b/apps/angular/projects/ordering/src/pages/orders/orders.component.html index cc116521..d0c6963b 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.html +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.html @@ -1,18 +1,15 @@ - -
{{ 'AbpOrdering::Orders' | abpLocalization }}
-
- +
+ class="dropdown-item" + *abpPermission="permissions.setAsCancelled" + (click)="setAsCancelled(row)" + > + {{ 'OrderingService::Permission:Orders.SetAsCancelled' | abpLocalization }} +
- - + + - {{ value | date }} + {{ value | date }} - + - {{ value | currency }} + {{ value | currency }} - + - {{ "OrderingService::Enum:OrderStatus:" + value | abpLocalization }} + {{ 'OrderingService::Enum:OrderStatus:' + value | abpLocalization }}
- - - - + + From 10c7d66431c6bc28f27861c3464d71ca9dd6614e Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:33:48 +0300 Subject: [PATCH 34/47] remove console.log on orders.component --- .../projects/ordering/src/pages/orders/orders.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 9361ce13..09720e40 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -29,7 +29,6 @@ export class OrdersComponent implements OnInit { }; ngOnInit(): void { - console.log(this.permissions); const ordersStreamCreator = query => this.service.getListPaged(query); this.list.hookToQuery(ordersStreamCreator).subscribe(response => { From 0469d7a8d1028251dfbb8814cd7ec789c3ab48af Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:34:38 +0300 Subject: [PATCH 35/47] remove comments in tsconfig.x.json --- apps/angular/projects/catalog/tsconfig.lib.json | 1 - apps/angular/projects/catalog/tsconfig.lib.prod.json | 1 - apps/angular/projects/ordering/tsconfig.lib.json | 1 - apps/angular/projects/ordering/tsconfig.lib.prod.json | 1 - 4 files changed, 4 deletions(-) diff --git a/apps/angular/projects/catalog/tsconfig.lib.json b/apps/angular/projects/catalog/tsconfig.lib.json index 1407202d..25910deb 100644 --- a/apps/angular/projects/catalog/tsconfig.lib.json +++ b/apps/angular/projects/catalog/tsconfig.lib.json @@ -1,4 +1,3 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "../../tsconfig.json", "compilerOptions": { diff --git a/apps/angular/projects/catalog/tsconfig.lib.prod.json b/apps/angular/projects/catalog/tsconfig.lib.prod.json index 06de549e..2a2faa88 100644 --- a/apps/angular/projects/catalog/tsconfig.lib.prod.json +++ b/apps/angular/projects/catalog/tsconfig.lib.prod.json @@ -1,4 +1,3 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.lib.json", "compilerOptions": { diff --git a/apps/angular/projects/ordering/tsconfig.lib.json b/apps/angular/projects/ordering/tsconfig.lib.json index 1407202d..25910deb 100644 --- a/apps/angular/projects/ordering/tsconfig.lib.json +++ b/apps/angular/projects/ordering/tsconfig.lib.json @@ -1,4 +1,3 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "../../tsconfig.json", "compilerOptions": { diff --git a/apps/angular/projects/ordering/tsconfig.lib.prod.json b/apps/angular/projects/ordering/tsconfig.lib.prod.json index 06de549e..2a2faa88 100644 --- a/apps/angular/projects/ordering/tsconfig.lib.prod.json +++ b/apps/angular/projects/ordering/tsconfig.lib.prod.json @@ -1,4 +1,3 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ { "extends": "./tsconfig.lib.json", "compilerOptions": { From 9601940f56714e2defc5cd925524a8561fa99cba Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:35:54 +0300 Subject: [PATCH 36/47] format env and remove css in orders.component.ts --- .../projects/ordering/src/pages/orders/orders.component.css | 0 .../projects/ordering/src/pages/orders/orders.component.ts | 1 - apps/angular/src/environments/my-environment.ts | 2 +- 3 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 apps/angular/projects/ordering/src/pages/orders/orders.component.css diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.css b/apps/angular/projects/ordering/src/pages/orders/orders.component.css deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 09720e40..71bd8c70 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -8,7 +8,6 @@ import { eOrderingPolicyNames } from '@eshoponabp/ordering/config'; @Component({ selector: 'lib-orders', templateUrl: './orders.component.html', - styleUrls: ['./orders.component.css'], providers: [ListService], }) export class OrdersComponent implements OnInit { diff --git a/apps/angular/src/environments/my-environment.ts b/apps/angular/src/environments/my-environment.ts index 5bae69f1..f240e510 100644 --- a/apps/angular/src/environments/my-environment.ts +++ b/apps/angular/src/environments/my-environment.ts @@ -1,5 +1,5 @@ import { Environment } from '@abp/ng.core'; -export interface MyEnvironment extends Environment{ +export interface MyEnvironment extends Environment { mediaServerUrl?: string; } From 57beb49f846ea020e4aaa54848afefc3a9253a4c Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 22 Mar 2022 11:41:59 +0300 Subject: [PATCH 37/47] update proxy of orderService --- .../src/lib/proxy/generate-proxy.json | 203 +++++++----------- .../ordering/src/lib/proxy/orders/models.ts | 5 - .../src/lib/proxy/orders/order.service.ts | 5 +- .../src/pages/orders/orders.component.ts | 11 +- 4 files changed, 85 insertions(+), 139 deletions(-) diff --git a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json index 9c464296..626d4922 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json +++ b/apps/angular/projects/ordering/src/lib/proxy/generate-proxy.json @@ -3,84 +3,6 @@ "ordering" ], "modules": { - "abp": { - "rootPath": "abp", - "remoteServiceName": "abp", - "controllers": { - "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { - "controllerName": "AbpApplicationConfiguration", - "controllerGroupName": "AbpApplicationConfiguration", - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", - "interfaces": [ - { - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" - } - ], - "actions": { - "GetAsync": { - "uniqueName": "GetAsync", - "name": "GetAsync", - "httpMethod": "GET", - "url": "api/abp/application-configuration", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", - "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" - }, - "allowAnonymous": null, - "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" - } - } - }, - "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { - "controllerName": "AbpApiDefinition", - "controllerGroupName": "AbpApiDefinition", - "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", - "interfaces": [], - "actions": { - "GetByModel": { - "uniqueName": "GetByModel", - "name": "Get", - "httpMethod": "GET", - "url": "api/abp/api-definition", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "model", - "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", - "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", - "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "model", - "name": "IncludeTypes", - "jsonName": null, - "type": "System.Boolean", - "typeSimple": "boolean", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "model" - } - ], - "returnValue": { - "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", - "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" - }, - "allowAnonymous": null, - "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController" - } - } - } - } - }, "ordering": { "rootPath": "ordering", "remoteServiceName": "Ordering", @@ -313,8 +235,8 @@ "allowAnonymous": null, "implementFrom": "EShopOnAbp.OrderingService.Orders.IOrderAppService" }, - "SetAsCancelledAsyncByIdAndInput": { - "uniqueName": "SetAsCancelledAsyncByIdAndInput", + "SetAsCancelledAsyncById": { + "uniqueName": "SetAsCancelledAsyncById", "name": "SetAsCancelledAsync", "httpMethod": "POST", "url": "api/ordering/order/{id}/set-as-cancelled", @@ -327,14 +249,6 @@ "typeSimple": "string", "isOptional": false, "defaultValue": null - }, - { - "name": "input", - "typeAsString": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto, EShopOnAbp.OrderingService.Application.Contracts", - "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "isOptional": false, - "defaultValue": null } ], "parameters": [ @@ -349,18 +263,6 @@ "constraintTypes": [], "bindingSourceId": "Path", "descriptorName": "" - }, - { - "nameOnMethod": "input", - "name": "input", - "jsonName": null, - "type": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "typeSimple": "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", - "descriptorName": "" } ], "returnValue": { @@ -447,6 +349,84 @@ } } } + }, + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "controllerGroupName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "controllerGroupName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController" + } + } + } + } } }, "types": { @@ -2305,29 +2285,6 @@ } ] }, - "EShopOnAbp.OrderingService.Orders.SetAsCancelledDto": { - "baseType": null, - "isEnum": false, - "enumNames": null, - "enumValues": null, - "genericArguments": null, - "properties": [ - { - "name": "PaymentRequestId", - "jsonName": null, - "type": "System.Guid", - "typeSimple": "string", - "isRequired": false - }, - { - "name": "PaymentRequestStatus", - "jsonName": null, - "type": "System.String", - "typeSimple": "string", - "isRequired": false - } - ] - }, "EShopOnAbp.OrderingService.Orders.OrderCreateDto": { "baseType": null, "isEnum": false, diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts index 31c23a05..8abaecce 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/models.ts @@ -56,8 +56,3 @@ export interface OrderItemDto extends EntityDto { discount: number; units: number; } - -export interface SetAsCancelledDto { - paymentRequestId?: string; - paymentRequestStatus?: string; -} diff --git a/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts index 6b4e5b94..efe0ba2a 100644 --- a/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts +++ b/apps/angular/projects/ordering/src/lib/proxy/orders/order.service.ts @@ -1,4 +1,4 @@ -import type { GetMyOrdersInput, GetOrdersInput, OrderCreateDto, OrderDto, SetAsCancelledDto } from './models'; +import type { GetMyOrdersInput, GetOrdersInput, OrderCreateDto, OrderDto } from './models'; import { RestService } from '@abp/ng.core'; import type { PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core'; import { Injectable } from '@angular/core'; @@ -56,11 +56,10 @@ export class OrderService { }, { apiName: this.apiName }); - setAsCancelled = (id: string, input: SetAsCancelledDto) => + setAsCancelled = (id: string) => this.restService.request({ method: 'POST', url: `/api/ordering/order/${id}/set-as-cancelled`, - body: input, }, { apiName: this.apiName }); diff --git a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts index 71bd8c70..680e10a4 100644 --- a/apps/angular/projects/ordering/src/pages/orders/orders.component.ts +++ b/apps/angular/projects/ordering/src/pages/orders/orders.component.ts @@ -75,14 +75,9 @@ export class OrdersComponent implements OnInit { if (status !== Confirmation.Status.confirm) { return; } - this.service - .setAsCancelled(row.id, { - paymentRequestId: undefined, - paymentRequestStatus: undefined, - }) - .subscribe(() => { - this.list.get(); - }); + this.service.setAsCancelled(row.id).subscribe(() => { + this.list.get(); + }); }); } } From 4286e5b6bd43885b5734dd52cdf8b0d32f88db7d Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 22 Mar 2022 12:07:32 +0300 Subject: [PATCH 38/47] Fixed the permission issue It's ready for PR --- .../Orders/OrderAppService.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 45fae33e..3e134693 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -5,8 +5,6 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; -using System.Linq; -using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -15,6 +13,7 @@ using Volo.Abp.Users; namespace EShopOnAbp.OrderingService.Orders; +[Authorize(OrderingServicePermissions.Orders.Default)] public class OrderAppService : ApplicationService, IOrderAppService { private readonly OrderManager _orderManager; @@ -36,6 +35,7 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(order); } + [AllowAnonymous] public async Task> GetMyOrdersAsync(GetMyOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); @@ -43,7 +43,6 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } - [Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetOrdersAsync(GetOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); @@ -51,17 +50,9 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(orders); } - [Authorize(OrderingServicePermissions.Orders.Default)] public async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) { - var queryable = await _orderRepository.WithDetailsAsync(); - - var orders = await AsyncExecuter.ToListAsync( - queryable - .OrderBy(input.Sorting ?? "OrderDate") - .Skip(input.SkipCount) - .Take(input.MaxResultCount) - ); + var orders = await _orderRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, input.Sorting ?? "OrderDate", true); var totalCount = await _orderRepository.GetCountAsync(); return new PagedResultDto( @@ -70,6 +61,7 @@ public class OrderAppService : ApplicationService, IOrderAppService ); } + [AllowAnonymous] public async Task GetByOrderNoAsync(int orderNo) { var order = await _orderRepository.GetByOrderNoAsync(orderNo); @@ -92,6 +84,7 @@ public class OrderAppService : ApplicationService, IOrderAppService await _orderRepository.UpdateAsync(order); } + [AllowAnonymous] public async Task CreateAsync(OrderCreateDto input) { var orderItems = GetProductListTuple(input.Products); @@ -113,6 +106,7 @@ public class OrderAppService : ApplicationService, IOrderAppService return CreateOrderDtoMapping(placedOrder); } + private List<(Guid productId, string productName, string productCode, decimal unitPrice, decimal discount, string pictureUrl, int units )> GetProductListTuple(List products) From 4228e8af2e2b2650b31cb5445da94b3ce64221c2 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 22 Mar 2022 16:57:46 +0300 Subject: [PATCH 39/47] Moved images to product service Configuration continues --- .../src/EShopOnAbp.PublicWeb/appsettings.json | 2 +- .../src/EShopOnAbp.WebPublicGateway/ocelot.json | 13 +++++++++++++ ...ShopOnAbp.CatalogService.HttpApi.Host.csproj | 12 +++++++++++- .../wwwroot/product-images/asus.jpg | Bin .../wwwroot/product-images/beats.jpg | Bin 0 -> 14994 bytes .../wwwroot/product-images/bluecat.jpg | Bin 0 -> 22493 bytes .../wwwroot/product-images/lego.jpg | Bin 0 -> 96032 bytes .../wwwroot/product-images/nikon.jpg | Bin 0 -> 48244 bytes .../wwwroot/product-images/noimage.jpg | Bin 0 -> 9672 bytes .../wwwroot/product-images/oki.jpg | Bin 0 -> 15514 bytes .../wwwroot/product-images/playstation.jpg | Bin 0 -> 12477 bytes .../wwwroot/product-images/rampage.jpg | Bin 0 -> 29142 bytes .../wwwroot/product-images/sunny.jpg | Bin 0 -> 68081 bytes 13 files changed, 25 insertions(+), 2 deletions(-) rename {apps/public-web/src/EShopOnAbp.PublicWeb => services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host}/wwwroot/product-images/asus.jpg (100%) create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/beats.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/bluecat.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/lego.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/nikon.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/noimage.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/oki.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/playstation.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/rampage.jpg create mode 100644 services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/sunny.jpg diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json b/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json index d32d67d8..4769b9c2 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json @@ -12,7 +12,7 @@ "AllowedHosts": "*", "RemoteServices": { "Default": { - "BaseUrl": "https://localhost:44373/" + "BaseUrl": "https://localhost:44354/" } }, "StringEncryption": { diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json index 5c94283d..a436b432 100644 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json @@ -52,6 +52,19 @@ "TimeoutValue": 2500 } }, + { + "ServiceKey": "Catalog Service", + "DownstreamPathTemplate": "/product-images/{everything}", + "DownstreamScheme": "https", + "DownstreamHostAndPorts": [ + { + "Host": "localhost", + "Port": 44354 + } + ], + "UpstreamPathTemplate": "/product-images/{everything}", + "UpstreamHttpMethod": [ "Get" ] + }, { "ServiceKey": "Basket Service", "DownstreamPathTemplate": "/api/basket/{everything}", diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj index 6a0af54a..b7bab860 100644 --- a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj +++ b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/EShopOnAbp.CatalogService.HttpApi.Host.csproj @@ -1,4 +1,4 @@ - + @@ -30,4 +30,14 @@ + + + + + + + PreserveNewest + + + diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/asus.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/asus.jpg similarity index 100% rename from apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/asus.jpg rename to services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/asus.jpg diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/beats.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/beats.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08417c235b2097373f7f239d47e0b579efb9bbb6 GIT binary patch literal 14994 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 Dxjr27 literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/lego.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/lego.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63e31e95774b5ac232978c0266c8792c3dfe0225 GIT binary patch literal 96032 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 literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/nikon.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/nikon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb6fb605a18830f916369834c1def5669331dbdf GIT binary patch literal 48244 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
    0S5UhTPbFpke+G0%4atTXJPJuJnu8DO!S6 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 literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/noimage.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/noimage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c5133c8c9b98f750b22a44530ba71e378fd0fdd GIT binary patch literal 9672 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

    +CHI~r!+P-at|%Tb*Oh? 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 MEt12Xs{elz0F7-dC;$Ke literal 0 HcmV?d00001 From f3cbd2720cd6a2bb9df3b862a1b1a9f80d604699 Mon Sep 17 00:00:00 2001 From: malik masis Date: Tue, 22 Mar 2022 18:36:33 +0300 Subject: [PATCH 40/47] Completed the moving configuration Ready for PR --- .../EShopOnAbpPublicWebModule.cs | 5 ++++- .../Options/RemoteServices.cs | 14 ++++++++++++++ .../src/EShopOnAbp.PublicWeb/Pages/Index.cshtml | 5 ++++- .../src/EShopOnAbp.PublicWeb/appsettings.json | 2 +- .../wwwroot/product-images/beats.jpg | Bin 14994 -> 0 bytes .../wwwroot/product-images/bluecat.jpg | Bin 22493 -> 0 bytes .../wwwroot/product-images/lego.jpg | Bin 96032 -> 0 bytes .../wwwroot/product-images/nikon.jpg | Bin 48244 -> 0 bytes .../wwwroot/product-images/noimage.jpg | Bin 9672 -> 0 bytes .../wwwroot/product-images/oki.jpg | Bin 15514 -> 0 bytes .../wwwroot/product-images/playstation.jpg | Bin 12477 -> 0 bytes .../wwwroot/product-images/rampage.jpg | Bin 29142 -> 0 bytes .../wwwroot/product-images/sunny.jpg | Bin 68081 -> 0 bytes 13 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/beats.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/bluecat.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/lego.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/nikon.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/noimage.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/oki.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/playstation.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/rampage.jpg delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/sunny.jpg diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs b/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs index 367a4080..4a09d595 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs @@ -41,6 +41,7 @@ using EShopOnAbp.PaymentService.PaymentMethods; using EShopOnAbp.PublicWeb.AnonymousUser; using Microsoft.Extensions.Configuration; using Volo.Abp.VirtualFileSystem; +using EShopOnAbp.PublicWeb.Options; namespace EShopOnAbp.PublicWeb; @@ -93,6 +94,8 @@ public class EShopOnAbpPublicWebModule : AbpModule ); }); + Configure(options => { options.Default.BaseUrl = configuration["RemoteServices:Default:BaseUrl"]; }); + Configure(options => { options.IsEnabled = true; }); Configure(options => { options.KeyPrefix = "EShopOnAbp:"; }); @@ -167,7 +170,7 @@ public class EShopOnAbpPublicWebModule : AbpModule context.Services.AddStaticHttpClientProxies( typeof(BasketServiceContractsModule).Assembly, remoteServiceConfigurationName: BasketServiceConstants.RemoteServiceName ); - + Configure(options => { options.FileSets.AddEmbedded(); diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs b/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs new file mode 100644 index 00000000..32dd1953 --- /dev/null +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs @@ -0,0 +1,14 @@ +namespace EShopOnAbp.PublicWeb.Options +{ + public class RemoteServices + { + public Default Default { get; set; } = new(); + } + + public class Default + { + public string BaseUrl { get; set; } + } +} + + diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml b/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml index bbf17a9b..7d7cb58b 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml @@ -1,9 +1,12 @@ @page @using EShopOnAbp.Localization +@using EShopOnAbp.PublicWeb.Options @using Microsoft.Extensions.Localization @using System.Globalization +@using Microsoft.Extensions.Options @model EShopOnAbp.PublicWeb.Pages.IndexModel @inject IStringLocalizer L +@inject IOptions options @{ const int productsColumnSize = 4; // TODO: update abp-column helper to plain html for proper row and columns css @@ -38,7 +41,7 @@ { var product = Model.Products[(i * productsColumnSize) + j]; var productPrice = product.Price.ToString("C", new CultureInfo("en-US")); - string productImage = !product.ImageName.IsNullOrEmpty() ? $"/product-images/{product.ImageName}" : "/product-images/@product.ImageName"; + string productImage = !product.ImageName.IsNullOrEmpty() ? $"{options.Value.Default.BaseUrl}product-images/{product.ImageName}" : $"{options.Value.Default.BaseUrl}product-images/@product.ImageName"; string buyText = L["Index:AddToBasket"];

    diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json b/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json index 4769b9c2..d32d67d8 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/appsettings.json @@ -12,7 +12,7 @@ "AllowedHosts": "*", "RemoteServices": { "Default": { - "BaseUrl": "https://localhost:44354/" + "BaseUrl": "https://localhost:44373/" } }, "StringEncryption": { diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/beats.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/beats.jpg deleted file mode 100644 index 08417c235b2097373f7f239d47e0b579efb9bbb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14994 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 Dxjr27 diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/lego.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/lego.jpg deleted file mode 100644 index 63e31e95774b5ac232978c0266c8792c3dfe0225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96032 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 diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/nikon.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/nikon.jpg deleted file mode 100644 index eb6fb605a18830f916369834c1def5669331dbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48244 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
      0S5UhTPbFpke+G0%4atTXJPJuJnu8DO!S6 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 diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/noimage.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/noimage.jpg deleted file mode 100644 index 4c5133c8c9b98f750b22a44530ba71e378fd0fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9672 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

      +CHI~r!+P-at|%Tb*Oh? zy=S-zt)WW1_l33@^!x)ozzn6UbK}K@#hq3la&{PQcTv%1f%UsL5ixxHzY;KVpT;k=}~Lt2AXNuibg*`a5Ci$j8y_X!8nGxto$iuX|O(g=d-jXfB2$Wc`o?=7)(<|%rR(I@*s+M{&8B# zv=P0_diVZ`%#0)%5@l`lmwF14*xG9oLu|ufPkI8FqE7hKEN_cX69eiCmrXI%iQbby zm5U=C;hXQhNqf`M%lT;b>xEL3cHiO{4V2#XA^Rar9&}3OBJW9kWk~CKZh+gzo1uu` zyOro27yny{3)~R=>{v2;U8O?1ZPVy$2s+<;p`9e#h9kC5=e8{awnE_b_k9{J~3WFq6OT2R!lgs zA)MsWvz9?o{>6y}NWpg1_bvq18;~ zx95E&LXV=1sDN|>l8N+!v<%ec{&-_NiVZ~pvL;@&S^T25PElY^`!cra5x?8@M5YnC zDWXrp6}oj*w_FYs{j@bC#pi0}!B3GncUD2Rwj$;ipcUl3AKQIJuQkdc%9XAu;%=XcOCa4;}% z$nf#-$^N(7(>DMyHp)55IU34K04gyG8ZpY#F8~7o1@LSd3JMC~e;NiRIu;r>4k`-n zv)q6PfbwiN%Cl-r9BeEMY%~;9G;{z4F(wJ~TP)I-QtD)8E+N<~yeUOENZlXfj`m{`*^ck>8K`$x%E^5cYxPe#ikyz%F&^vUP7>7JGTNAv$j_w(+c zqF`cSKTAc40VwDIbW|KvbaYHqv}fy{Ekz?nf7UCdjzRkJS#3(uzxwZFyc28WEZ`GN zJ`LB@2G(~Ui+?;J0WZ*=XA`3l10(mw_5LkK7fQ5ZyxrL(S zDt1D6>NM1|x3Y8kS0}Wo$?~LO0!QTA6QJ3<`u-a^G3j5aDhsg7U1Ux8P&SI{JKIqB zfui6OKyZ!mXvVrpwS+%MW;gD4Oar$UD2&M1ql|Uv2l%H2>_8H&wyzP^FGcnz%H{CX zK;7N{OnR=#(+63!&pmnJRFzGz6@XKr%k82DtjxWJptMdO{o5?8Sh=P+<&m)xr@X)`dhUx zWMun)>||uzq^M_gYg$cxxN7xlqSe$J^AUhhtB3<%M#DJ`pqdZ7oz#pHcajlW2K-E}%6yXcoMPaSlV0ER~dz-k~+}KjP z6{I^w7-Y0?R!0OpF;k(5R4QP#cDcbl-3rJFV7W78IZF?)bg>*08Tsy_|F|C~*?(y_ zRT{+3XfyXR%PC7tsBE%EJ1dKG;?xnqc&v+Y=(OcYwNYo(G82@pR6iop{ieo?OJUC~ z9Emt0OMC3>Bt64ynytF8aH{6)=2>_o@aI`^0tEd-Dn0=M8{Atre>Mh3d0=+5kErmL z9y%K&7DVpgj;%p?`_D-a+>|*eo2IKyCmvHzTz&5Ep;BN8+zrGhjPaOXlY0cU_eI@x zdz5sJaa*+?T6R#X3@Lu}w{fjE2h3Lj#~i!ch{zIrs*xrvoat>(fW+D0T21#X3#5c> zQS0klNUte13U1sd%T~g&IHw@GnLSO1qQq0^H4YV^N+Lqeno`PZMrX@M9rhTU*SJT{ zTBQta+PB-=LT*mkF_OJo0UcKaP6dX|5ezhe<_=|R3MJn6eDHL6ehGp zp`9`QqR2?arFXcDd}S@fVMz>DBQ8M>p#TQ^xGzo5-eIKpe!GHnQ?OnI76c8%I~Y9 zOl(=Z3!9;KQkr&6zo}Vj^z@zpG}pG&(Z4!GrB!W$MG>FgkrI$M$Y5C;7;_3BX7M21 z0iPd-u1x9~*UhDZmWU+0WW80!dqc;u0De3NZnGUv8~!9-dO0!$JDWjc4R#V(54V1!^~K&4EMZhCL}k3Pu(x54sg<5k6A3L}^z=*b)f}^D9q) zp-F#A0zc?Y0*@J4QxO}4nUgNn8?{pRah{Jm1Cp?zH}4oBrU~2}BEKTH>I!VLWteRC zjmzq+zVU0oF*~9kpDtCX+!en-O|qywxb0xvZ=DW_Xb!v?KiA zYBg)004hDds!=5Ot+=__&$&{J(+a+*x1Jyz%Y!(ttlvl}m#FS34TlwJ;>$_hAbg$x zR$cc^yCTv@oFrC50n%k|%{UUgIEcK3Ig2m8ZUN_aCap~8JUv~6$xOPA--mWAUuM;0 zAk2a=Iy@-1G&%(p>Mw(EnNE!+x624eIKV+G2rsYu!tOS^E8N$8%l3Gyug0u-%KgdK z+%C0;77O{7i>RZ@5Y^@G8s@B3$4p;-TlpyUhO;&Wd*jeb-c|nmN3Yi^rfbDI;KyYU zsJyYuiF7))@3On1a^Hjx{#Y5il5z+nzj3;y^bD)WyUghx8YZ_+-Q3;J+_~e_l@MMA z9&!)DSA25v2Jt(FG~j$F8aIO9&?>HcwBPFlaIlIW*Ds(YZ=i+leLJR8eFAXF{icP@ zl&D;Y!0q2FsgCoPLjQQrR&pq!D7JpbR=vtqf5`A}c)&R)Z~w;H=-$b}_ynNjD`LOn z3V%e-s$4z+s%rnrm^o`O7p895qA*K7#)!Eb)$~FRvk~MAU7)xkN>JlTQi2jLwuw}( zhi<;$uDViWDor5{(58Sc=P$X{V}5TZTCBk*IlZH-wN`T+Galho|LNBEri48Wd{2PM zKgy)kaJ@gx%}rO)G4;%#B~%R(z=o5es5#Yk2fX|kcZM>XlC3(*hz+7~vpKzzGZohc z@|JRu?Wv?Aoo!3yV2Y+5vyZv?4vlFTVv_ys(R6-qpxAPe#pE$lj%7J-PHOI=RuJ7%uX9-44_u{ZsU6y;IG-^&v zkHBsNSYrsM{4qWy8U|sygo~Pv!s6l@7{l9L6Vjwz!*}1zQPAoA?jg5J?`4K*6_aC~ zr`kPbulHT*Ah}=?VH9opAY?*SqX=I`8pOyYdf%THZYEF1YF-Ou3b>%_x4|9%!r;(( zzB%AZ>Q}edP^_g0Q7!mjw7)6Q_!klJaYK=>sb1IEqnzo#%*ink)(_Q*D|Wf$fc+~_tzIOZs43?$g~P32K388$L42X{y*s#FsIv} zp#eXtmp>mhH|dPj4LRpiz${R7hNtmnVV^U#alT36D%oP$toNu=PkM*F*QP=#aSf8a z5L8L}iS0Xx!!0V|(Obgj@XBFCF_kFYG*!#F*gq0f*B!5~?c~@_ObuD`(FX^wiAyFy zW{{ui^HlvTc=cS0$pqB|`w^b(lDpBjywlO|;Jj0@-#v`hSX0J>g=uaUnEj8q-5T{5 z>>inu8$nP5t{nTuqISG2=Fx{auzZZXo%fZCKC)uKi;Lf@CHtU{`=?JvM@jOyrX6ik zn>G8In(IYgv1mZKk1D5h+U~VB#f>*5$GgQi?DV#ugBI&ul6NCoJ+5F@0m#Xu z5_Xhh7=7y$SBsG)Y(Vmd5kvvSTpWVNvSGaE$$YQ$m*+0@8CTZgB+7n45~6d9OI{4r zdioJQzT%^N_>Okvu5&xAYp0Pe1Lu^1Xj?bsk5@mW|Mlys{@Qlt83&b`oBk==|3-@h zRYN!xj&fGh)_tSw$859q)fAB@N=+*hf;y`aw?W`At? z7jj3#C;O*TH;?oyuzL&Ioz~d);<2{LD6{q}K5l5%jaKvE6W}e({a29RB%|9CAe&Ei z7Y-U4{F6c2j1_bA(UvOse35)6<*HlzCMZ3tMMx&HwngFVB}F=jaRpe+W7vR|_a1E< z)KC2cP+eK%W|!Fd8K0z(S-$%OxJ{56yfwa@@&u0A(0oqYqUN+eLWUSmJU=tmWMlnD zwS=3O3&_I@R)tyLKCr6V*1|MlXBRp7tBsmkmTSlLf7cR^uBYo?@wdB&e0W^*m6l@W zhCS*vkx#cR9L34hIe++8%Wo|XLY;8MoCQSQ6S4<8OyqT%lP#Y15E7Co!22`8BoQ=QKjx{EpbJm5`R!@kzAXMZAZ}rhL`1%xBZ=cU zYwQW|0$7=)I)pzT(dp$?X<>+c8fBl_b&n%SzU78wo28h1%mocaAuXCJ-W(ux7XQ}l?xag} z{bh{sNT`y*ydkE(DUoPtq&AD3gg~Wj=^<(uD#Dz9rk?O$A6IL9@n0(P`lVpxb1>tkc9(sh4aHyH6(8zT|eH_y^7rq@s5*+_%7R z0*B^|VV2TUjB>N@d|6#z9+Wk7@*UP7smho=bRN?b|GQBTnrV+K9+}PjyBzG0U#X)L zgg#SLO90BywL+|N%CnxMR`*YQ4%%znF7)I!#ua9_s#2rB_|4?Y&-e(eu<{eB@3U1I z&f%Iav^3@`48(axlJ}p~yb_$CAx(rl20x~CDNGuwI{iz4n+%X{td5#itZ=K}cMsa; zd`HW}9hUTy&ZL{7WMvr{cz#*?(jR5HUuF z8#=q}7y#)HU@)}g0J}B2x!8E5IeO?kqYa3v3asH>IU203fz+(Q7#MPtWMd^N4gjgx z?YvU`+LO_J_$k-Sd@Si&M=Q_sc2$hFn@4aJNmdlEhY?v?IE0WPg0{8t=B$|G3 zuYE7-{yUef%-R4`bJwt4k^ZN3AF^ZieyZhMHl7v&z$!eaTGa*`S2phABzB!3Th-g& z>Qe)m%r|k!y_@zIF&g?<_t0O>y|mES1V`QdioigLc;S*CFq3?*v|iR;x?Fg(+-vvZ z&F6LmQ{-M*PGnu7;~)`lG|;&K=o!eq0eAb@x8h>W=EPB+cKoWwgL-!|L$-lp-qi4TB|nF&f5k&Z zxIqifajIBDzN9lJBvMI;RB*eT1;f0`8A?X0h1I$oApMThD*Xe%A?;ZhY%g1bMu~Yx z;O06J=b};*#ZIlyZqT+hYdWYa zJWB6qoaBxChQVC@GCqathjs{lQGH6mq`0L22~>s9=HH>Ng~8-xScsH}{-*WVQSC^F zo#IJURkRJ|-vFY4Hwk0R(^cGcT`aP@mo?H zS6BfAs-yMIN_Nw8`wkYCueVs)g@yuDyJoNJZ8$uuynOZWZtK!{8^f#kPm4CNzvDxf z91z(s`#-a78Y;TTCZen?Kr%PN zsLx)uC|5Q98NDLqw&zSlSt=Ap^$pRVa$kA%9x8hUV*FW$uIPvg7u6;wGFEf75Z()w}#p%prw?+JPC0EHY)ykfv!&!48y`GL|qSsZn z4GfXWnLf)M_Pd)oyP37!=iGQ`)U=&Utj4bxaZRA+c##>cBK##sL?p{d`i29236@{m z5eVWR$abneZ7zsSP-ao=DEVRkHjnC>iH!KPCTwxgXS%H%9rbJTfOzwlVQkJjmZK_M zKAA#ZB4xLPmv^$vwwz<-HQ~X3iGHlLsjE%qK40V+`m2kn8;YE?G3Tc>6t6LIcT&ZG z8f27IOgkS{#q1;}RjMWyOgymL7z} zxQMw5Yr%7~5NRQ5YI&)B>nrlvf+HVfe0FlES=08nblCJ3Bk)D=K+X@Pw;VxzZDi(s zN#QWIabJQUOV9ZOE4(Ph^eqs1@TPmHZYx7+BkQmWacf5gC;C5y)i1qxycCqnDyO^63>`&#ZP5lcXXK%(HCi zrHZ5N_A5HZ+^oH9r+vC1-Kg?9N91ganh3 z@YZJdx3h8B>hI1ruu8cFdCE-^5ZH;Y;g3cuve7H+k5*aeeUNCsDEId{t-^=fW8>-# zh@tRnDlq>HKRK%M$Zlo($q51Lq=a;yR|<6d>ebh_W_*Kyv1WOG-)K7yhvs>?#SV(O z>35`8s4xqSVmgaf*4etOqQqv)2nqE{Z(0~2?`*Z z0!$R(Jds4uA-sH+;ne<>klFwmzw#uBc4ocxPY)?+_9TO3p6Ym1pK66SFo+AMBL+k~ zwC0lj#T}fWs|n6BaHd&*#3DFShPQ-QO6vS#v!+(3 z4@9lJ4L!|4abneC6;9t$Np}~Q)W&t6%Qwi}h}CDW;J4s&+QQ3KNzm>8q-tcO)gG%f zNhU`qNh18Qm?w?3lM60*nlBxOBed$*J!4`A-RArm{eJSI?*Q*3(k=KmDc>VsCU7WeU^UKYGuz`T$jObo#_JpgjczucNWQ*glL7&uJ zr7}fCQ+!I>E$%^H?cWRf?aWqIIFOEw)j81PW7xTWBSo?{%f9I4X_|T`&6RKt^|{dt zR!7GUslAR)r^c>bm088Bb%bZuZerHrDve8g z>H2SSedA7w)@I;KR(=t3zz#R3( z$C?8gv$GCr=4_lN7UGs|=0^#ByIl06`aZyZ`?&0*u@-U(S)3nB@3O1?!nKLUX>UBA zo!An5DN-sE(U-=FVW#vW*WD$*9kaD}X80{O+s>vqQWC%Q2MWS_C?^c(^KX2Fz#9^L zYh;<_Dn&$_#An_>j{+>&3k^EyM7UB+|Hb!eS`1zzr8R{QRtw-$iCp=^>KwVyco=+I zR#H)DQ2wC8h<8!tYkQ_KP*s}~5Xg=&Og*Lf?mV@{ruN-BTLWh7uSFCbYKQ_|Kr*PH)0QPsVuq?RKJLEh6CoED={OTu2 zDY*=nS2&)anb`KDJFBB?cV>f-I+X;kvUSm}Zv)!hsrz(4@MCQMF_&)2AJ=iG{F*vWA@8wrtc_iQ50MDylwGf2}DUB-gb3B3Rk-?>Ed1bCArPp?3( z)48vElvrY`X{)em9oz3D?;BoSo^dnDVLbIky0Vk|<-3Jwn;OsgiqHGDj#4kn$X~q{ zTwr>Aj#+-0Gqiq$)6YUT2V8d5SKua!Kd-n=y|Qyxzc@7aW6}2Zy~Bv+IJ(Tn723$v zLSNiCBd>$8F`YE&&=RL6E2^^2Ds>~2ftIR9Eo=S@|us!PH>Yk0U{fo znyjE1dvRJL#{~utDgv~+bjXRBHW`_cfp-QQCEzi)d437J8X=1ZFw=&A2{OZH!^Q}f9k0e6Db-A~I z8=KIqy1=>2!`=98Md=Y_!<;-m+3s$}OiHWaVdE6^3txN_x7-~hw z-|13&AiGe%(rQaYnp5VhMZXI#q?@5HW9@V6vX#ZX);ts2dW zw=l`FN|;(gg7+)#Bz>(P$@lBNBT74BjNg+P@4LOmXmxz&VBm?Xee)e&;uZbOvz%>= zw(|s(F8+yZJ4y1LA9hMNV`ezMna$~#-|0`H`H%-2qD@9^C=_iFt>m$zR*jiqn{;V% z@3n3%{&(!0G0F|R>rf>c|7ec}ZZJF=pIOP&x6Pu{jZW!SqVo{fHg*+CtvQ4pfdo-l zSPLLYt|Ezo#T3;$sEr#H^9mTO@U?>e`djvU z`?qg?3;Okk%(#T#;EuIIEk}>76fsn)KWWUms&>u2Xd8C14s|)LVM!NB99}RV{*j@x zgTcK84HoyQ9O+wbOBL565Ayxp4x|>*5Dl*JbYGNo;@V-b>hwcueXzw-Z+FlW!w+b+ z2>4ADmK5RO_e;cq5}*;9+o$!+ZdKyDfmLVNaTvf=m{|6{Al!QsJ@& zS1G~4GA-%vwo|eDB1+gS#<(gAK4Cbj=wRD_O=RJ{W>+MxlI`WyXr2hT|ZJY5jie9b=$SVD(+QgL#w$A*;I@k<{w>p4-S$%YNNhm zc3F!Loqg8(Q<9M{{-#L6XgnSAm>?QY;ya7+OUgY=^XeGN&*AJ~Ep=w;WCd|*U3jba z)B0B(ZJ(HDyi0EY(lKqFvoFu~S88K3lQkMYK5XN?MWRU{>2ZrF(4{1_0Gyv)l~K@i z&Tp$O3+L%T4(K)u@{$ORiS96Hvk2=ySk5%r6s8sH&un2ec>u)>LP8|whs$lhc_LIn zriy3#W25bbdwBls@o#=@D!BBc3bf#SXQvvmUH0*By9}xMla0Ajx)ffhmZ<6a&wnr0r8JvpdRo-$4#n-dHCiMy&eVd(oeM=Dc}F zJbh?jV8iaJs{W;R(T}^%wttqTWpRI$tc{p4{HXHf=3(wlFa71LiDh@C3BRcU zH-$QS6-Y|SPcupC2_W39(AL%1{-LOG?<_27QJu(KV3D~cl1P|M45-|x`H85^5F4!+ z?56#a$4uz@j=R)BH#@XvpGFgNFE4c~bdW({T!pankBLAhM$5|fbv36FT?7EYC_H*U zKkn?L&*aXY^aEzz=ZGz+5&fW**bMo==PKI0S-}6ZjLS+VkBod4il}YJ8QsVw?lo1g&c>QzOma8Y`+i?EOhsC@?%42IbPZKT&G$^2MaD@^AUI8l2!?t}> z@z&y2?f07PyGs?V*h&=}vZh`djn2Hp^qY{^!G`l*M1(3>2$#ys1EvKft_~eocvVWD ztdySnR?W}$PIHhga8IkjO{3l&Jdm z%sU4bF;p|)ZRHgKPaqndhVW;SdHk!&*k-~11ktL2JbuDb>{YQ3&4*D_jW_I<5f9`^ zD+aX`lm)h4NmIIq6~z=9y8&-;>HsV|`i^~$>}V`&CeAOp!QZeo9?8AyY|&q{U8Uqc zq*o0!u>=n`M1GJ=^3aKJf>r>f?U-B@D+V&Dc?7T(`!g|&R~P0JCse(<@?q2AHnwK8 zY6&G91}}c_SBBLmiU1wx>0f~fL*!RVLNr>IaoFTtXVtI@tCSQyIDcq{$BtMj4Nzkh z7!*|4s0A`_N%u~~N}{>;@aH@#C@iLX2VYG)!RAH{JYR~8v>myEv2}-vXyz!}9ct}# z0HO$g$C{t^vLo%tD)}3JCJ=_;Jt)+&yUI?(QZy3WVe!bXuWNHG9h#BKpf953wI+Ex z^U4#J=APPW>|xJ(0TkodY3|bfV4l|oZ(tp5g|CLInx3S>=}^upyT>#-V(g>|BKQbU zRP(fT`3V?==N3Pe_`1GR7dFP7dRbz(_UUT`Y6WmUYzD$ur#o4Df_aL}HTWw1^ZWI! zHpCES>M*7fK8J1#0e8@8spRt6lo9FAI3`ej6i#_5lMSWCTWlQWw@hzAX13WR&PRt5 z5f!TX9P?K;trYvtu>rw#1#d+6b{}=P?L$^@Q(Y1BXyl1kinEk$^J_~jpXYx|#glno z)h1Y%Ypo-rsM&06h`Y*Itp~K7$WsHBgLEdq!k^TtK4hy~5tY`_>n;HY;RoAtc-df= z!R1)QE1rKRyT$bkl(hkQ+CYjNXi`NPdAs5UTB+Tk&A~~<2u2TY%T#*qs`Vcoxz}%` zV?LO#REe9MR8wGNK{YZlwKTWRs(tE5{esaWsu=L=n^IAyePc&>r5r!o9MM`h zps*k6{_-Q44re|`uV&96dW&lA%H9wCd^%}u* zZ5;;)H`)&Z#qVF-S8Zr4LR$=`X)KjIYy~-Y{~?m&m~>DLzF*JU@uj4uv}Z78+DS*V z$JWdvXQn#i6@dXNf|HT!&TmcB9bFsixl#>P4c%*&c^au|LH#&g9z$t{CU?RuT$>GQ z=^KwB-Sex&e0FVL^=eSASAo=s*GnGr=iANJg~5eE zo{IgbdVV>0!OYSm2ekoPWF}0l5&k0hZ)qCpK=h0U_pr5@5*UKp;PY?0g{`Eac^RtO z2<8N?a+KuGp2f^RL~{2Q0Ug3dH+LBJnipTE6bn$Bu>oFu>b3aj(jauch^I*y70)}` zJzV?tj=%#KqVrxTANCJ8_wgXR95@_OT~?X74M4Q>sKBQ=-YyqjEY-AEA}0G^v1AiE z(W?mVOcwc*tjkhk8@;Dyp!@qxmp@HK-|V$lmE)DKgCjNj@|O;|1|%}pNEy)sV3Vy= zsMPMxkW;dkw&gh*0ErRa1EH#wmosZ~){08?iC~fpGn^ZrSg!N_YMBtp2cuE|mbB;jBjpz2G0YV06L~QFu|aXx$sKl)>xi zt;R+ljfoX6S;l=jts08}Bf;d#i(`lE2;kZH$FHb-6qW+v?{8%o4NvsTr*urL>Cf;* zeNI4YIy#-aY!lrwA%E?GURKq`yy;oP76g$M*hT0sdQ}cAO3!f%VCG0Yqn(A4KKhy7 zzO5 zL&n3t6jc6f+O7h&nutV@7ANZ^wvv>+M6bGNxvuQDx)ew)z#BYcTS9+Cmb2Zw%}Sk6 zybv0(e(RAGc1R$A?AG$BcoB??`*PAtckY6fWAJFLX+eL(_0%2u9_Ii!t0@iKmNT*2W%?5XxJI^V%fx~?QaxCl*(3mJ&~_zxHjhtp=rZtl!VGMLr#t)({GXhj#;5@o)SI6+k z<}tmdFH#DbO+2nIIH_UlclqUIhA!Y6f1;_}2az|}R}nF-y6=UQS+ZVU>nu4Pp2w}c()+N zu4ZE?13vpKh269^Hf~OtAn&=_uPT2w^Zv(we;fbaY#XhQ=1Ey_->Z{|k>DRLl3Ety zS7OR#NP+))q&}~bt(QTuiqHFwge0B5xE;zB)(7HjM%jtICC(@g?d5hGX{+IrbKbzI zo%@`cnXw!%l!&vd&m16B+f)$<;os5ghU*2Ma3!Pt$n~hr%5maFaSng6fm!VSMZ3ZP@LuVI9>NQYn>Gu72OB*Y zt01L9sdrFdKd4?Db&Is!S_u2fWqM{zd&vSEjqWOqAx1l(jxbJO@$bs$ir&K(5?Ruj zxSk1YWGbw|+&LsC2YzHwXClln?PLl`46ROSdfjr93}f9v|3seTI#K)6Mzr+{M9W)J zNbP#YTEWrC{xyfd3bQn;>2$RY)H%L`xWHh|ZaR{Q3u$WyIx(# z-^B$fo{iFO=0+7$hDc4}SHo&FIaPegwSD3WJgebM{`M)lAIcfp%JG!GRv0)WIE~3&OO7n!W>n*Kn}uN&eDuBZU6zU;WEy%O0Ap|9RJBBEk zsmUazY5@z{@+ob(yOCX4l$vxYm3d{%-xwmt7LrhA8Qk*H} z-Dz0VhG$MBzV0-%W?@6Y<|-18<+qC{*JeafaTX5d4YVr!tPhd9!oG52a=9CUXnJ}QMXf%DGiZtV#B=vf8Ej6(*LC& zav}Do2)KlEPB-`3+za#-<7NRqqT!y#vvq;kbz>Ngazcd*%dg5B>3?_kmpJp2?(&n)fQWe40T2vDhrvJ_f9#=hwFHk|4>W~Ko-j5sV=ptqqm2s0>F z28`}4k6duDaYgv(_z82%z^=kcAM1PRCKXIkH`dq(IcQ^U)N7(0JdC%TmpG#9mbQM? z{=Cv^^qMPV<4_RV&7A}3u=}!AVBJyG4hqa?PQwTHl>n%9S!Aw-LZSrzRaru?y$-t2 zZ=0PH8!gFu6s>(;K~zeFDVR6*9z@D9EL{{dy;kfb7U z=mg(Ce?P)4=(JiQ&W~7h0x7quJghTPtd_yEYmj{cW;X*K%3Z3XY{&4&hF}HqxAwDd z$u<;AcMPxNKXt- zBWM2+`CJCv^xxzSU-@9^WwuKNhO=PIjs6Yw@zB(e4C_1nUTgTKK;GzUR=)w%mNz`M ze1}=T6*&Gjq+(Nv&JCsX8{2O}EMOdh8La0_+ZA7;pcxVJ(R5~PP`~4MV_9W~h~J+S z*50Ta*7SfcB!pm8KJ1=47@*2e4)bP5K9ZdNY&g^gJ!tpJ_S^X}!OG` zf?+#FDuTM#K67tchPpXbI4@^HLN}v=zcDh{)w+kKcQj!XO~aBY;t$173V`=HFk#2+ zj>*wMgVqFx1+T^i|C z5cK~f=Sg>$@6-IG|0_A4BoJWoa*D1Wd>YPWN~lU)YZjQd!zeTQ%w-qX-wkW8hb30< zbP1%2^ty__sxdRl*!eCElFpHJ_-s@vJV^V6;B36=Q9Hk8Mp6_EQT?nL^+;Zsd>e_4 z<(1Vo6Q}E7^^cV~yjb-5V9bIbgu9UAVR)tBU^eFSHj4J1f$U@_KeD0mx7^8*eg(&J z#V>W*Vv&OF*EG}E9zY3eau)JgTCiIe@vbp7r#rJPH1@r%T2`oDYLZW%gri$k6BIH^ zr_?X*_nh*fnHn9nX;DM!rp?IAzHvVui=Ng$*64iGWYe;I*EIiv_XXdb^yayTpaQu< zc9pd;Jt*KT-c%q7SMvN@IT>4XKKRk9!N4&-z9?v=+=!(zSjRjj%(ax5uPwPu$IG2s zi2uu`d~Gf@bIVC^u9l&f`5WHP-^zU|WM;i~wwhbpr5#Sfni)?jRrX`*nvj2KICAt_ z9bYZsXJ@aFzj(;iGOL5dM>&hR=pX;~)V-P0s?S}`&$yjTSLjpyOjWV?`F)c^WsMsi zqB!*WlVVi|?($rzcWp|k5mqTmg_U0V6CkcL;QJniYw^3gL>kR-pBvoxs54Eh{y}-! z$*mn+DMcphU)6*?jf?e};zQIx28->6rPiJ)zf6*loelIy^1fV#_ZtkQMQ_{o?L0>( z>I~(^@BY~KO=6|W^E1;zMEA`JS;P9-$t+qzMeW#^b!bIC8cc>)OcdM-#3rq&iNRbn z1x&rUX+6W3pK;5Jz+x|&)_ljbRmGHeAM@@l6PuQc)V;OaZ*Sl zt#hezP)YsUmTB7khPIUlS4OWu_%H!^d>QV>wtuBQNr?|rLF^u--m)hhY`XlgNEVyB z+#PM~7$JL}GsD?@X-k9qvPOHwvXAAkH$Gtq|IIDEi~Kl##WRs^+w77!&!`c0V&oCE zE8%W+jFfEw7B?@yby5m^LpQp`^*h*?0Z_TMX;&lp9n?^>xWG?eqOoXhAzUdt%oe#=EE<%Oe!o3d@YeNh6na{42h;9?3-oOJ$S0QV>*XKEb;Z)Jv z2Xv8V(?dHc*ZN~}rh)aV;CgQFm_RUJCplnnMBS6SMJFec-9s?RIzFKS*MV?n?gx8> zP<=})@mV=DS5KvXQgpBLql;}<|3rcn5xyx@9i^ z?Z!Qr)7P6QJ!pw~bw$Z>l13$`j@7McZWoIq{x&_;|6#_<=>hX)2p;=Ut)QRC+-(iA zO1n~qg8MZ zdQJ{`ijX%5XDxXVQ`;Ol0|Z)9;(gp}X!ASb>>(|J){0^zVXKVf)|cAUi<`WNnn4o5 zC2TdOB!id7pFlWDrd3loV~6FDg7}97D8FoAnAJUo7J`j$*H-Ym7p-y7#t9#2>TTy+ zIS|(t(dGJs7?Pw{Zfaa6#U-Zr6%7(HWU(o6LEz{`s&c|vZO_LHXR^NC)uKl#F9~hG z80Wwbuu7weD~*&Uhvh4eD(Ne^6;8G6mr_gsI+Z2UfEmQ<9~E%&fNB@2{_mi> zBd7ia`mBHV%XMUNRcFb-dni|)MSD7fs``k`3aX}yErXIq#=qwuGCx;V`7V^F>I{Lk zVC5`h8P-(0`jkeHvDT(tXV4ymB;>gYQdK;JF~MTpD*I#t>+{Waqa6N0)*D(xlDSnc z%{*NiXU~0n2br_fd9O^jd)?y7BEbqnQBMwchLHt%v4p>vzh+p_6Usn=bzjj_2DDTv# zkBFp<=0WJ2j|tD|f&Wany72vT*XZ%^X(Buqldjc`EMi=cerR60P+y}k!zB5mf$CG{_jySpy&x8YkrkkH5`D)@a-`pGJ8}Y z8yDI+cqhG2eso@w!>;3maA(=)Yp%p--n^k{6SLGQJQ$3N6Ire?2z2=>Q#Lwg%e9&&0e=C3%7FqG4Y$^A7-U8F`d}AEsAQ8 z_ZHO%8Am03tSKJ2?}xQFPk>l_u}~bkzR@SZo+AA!7aav!P5KYjZFFz?{k5&MSXEorlf}i$zp@+ zwbGNx>nslSw6+wuHAhJ)uqFh}ONqbs2Xd*R(d69*lQdqqNE0ucK_nL1ToUkxM($fz zI@V15Nt=(yX@vycctJ>t%^HJz(Op%>TN5#G4}aU&!8_EDqo2dy29dB_!bniO!GVIJ zM)EZvWkYaxZm9d-UM1$56APmvjX?gaDx2c!c1^q4b9Z2$*<}{dt?JWjQEFTutzh6- zVmFGKtG?YX_)U;IC)8)buEkUl-IRmTP{&Vaw+DK2&fhpy@%o?$rPIOc^nGZdkOF#! z+w=<^8Al%!7_)*EZ)$y86%G^1+|ho>mSNz#WTQZwpB@Okrr!pMv&+jn>lIYKo^G2V zI9oRsVY(KVMK9W#`iaTH*}c5;LfD1+e+u6C%>B62hq!8_)C&SNpre>#Z;$sUO9We8 zjb2b|Z#R)ooNvlF`*qB{^Tm`_I?7ebA1_*y8yC9U^BA37gX_u8L}3H2X<1D-=z@Lr z#I=9EYhDA?G3q+EF33dQ{Yr-O6+*P+c!gbs*NX&O^FlwH?nhtXMT*B3(0@xj8c+&0LCf= zN}N=0?j^`VEGTgGC0K0~tsaq@?SWC3I6pl;TWO%yf3y8+P4x>%N z;vbZmOEnBFyK^g`DmnpAfPduGYnRhnp-b_?w-m(TZ6zroY2W(ka-WZRjrteDk?1td<_scevoY#Pkf?bmvx$cS2(*DRJMWrsov~%=C?>{4W5=KsUc@ zguO7N4#!g-TkG!WmE{(h^isow>;X6M^InYdiPSCq?Md5i{&p^uGHo&S3@CSW4Pfa7aoP zQ<9uu5`FbjQ&;Q#yGc1?ciC|BsD_Adt+yLWmR6#ba1!AU0iHPE^{n^HKt1Mx;#HR6 z3(0GBA#J!lq(f%Uwa3mJW_7a4GPrC%3oiUozy{78t^)>yAuJpP#M+s9T zp(;+rWju_7$>y?Ere-^CREXBO9?qn9&pMPPK`Tihg>=9qr2C2Us0q=NXl)68ICmwm zQ28lPI3vp(WOS-#I& znl6T`aYXHcYogkj&f9I@ogVI?We%*nl7YDM;TxBXoOI1!ow4f_$96}ySQ8b!`=2j@ zk+hJmMn?n@@ffbCwPM63CYc@h?y%cLsFVz3j(UHFdREWV{{Tu`hJescTiCNixlU`o zmF;q+I1cr!sFgO5Ffvc4IjZi#w?N(3kCEV806r@F7X5aV!kl*dVS=2Hl|1W6N{{-= zSQRN~w(8ABhZSqQ+Abvu2|mdom8U1jsXMTEC**7QvtOkhgIH}h{AA-n7#;L0)mQsxx9YtwqOK~sU1P^omdg#Y!;9}$axxM_U=BR;DzAC% zdTo{za}nRpDQgY7=H(?M1b_;BAoI^!+**sZe#3Q@jjJTvC+7BFVYxt%$h^&eBxj2|l>|#Eq9gQkV+*7GSf)c#& z0+v7=VEW@Gx_k6~(}9gIsx=G1A;!|=WH=fif_ct-`X`TnTGYV79t%8?k*#d8dRGwa zWNd4iTjQrCg1a1PQhlK&L(3^YT{1~^WjH<`5{M(5;~rHd3HbVb)T%*oahO&Rg}4KM zXE;d-+vIV^2_x3I=2{vO3Zlt!dqib!ILT<0ZRBkwM;JYQ{#q1!@@NZ5Y4<2RHkD^ANVPPl9Bee}5z4TYl;jYB*BQrAU2sARti)`UV?5;N zHQ!FhK8mmEF2wY0&flnGL6vcWnJy*vmf{LsDpubLv5-$+ml&)G`aU-b!?Rx=9%X%N zF^$8JaW3rmaq2WdBM&$Z0UGj~V|FyuIgp0_1UDDB`Rl>?A6GBMXal@UKv!n|AM z+-2O}HxTOIh}*LiSG_=P0VHsr=8ihx*LY5jd~OmN2|hL%MpgybIB(o6FjEy1-D!j& z2}^5Ic-oK%85!~%SHaa60EMl|QkIl~yK2HlJ?9mqqIRKrxX6PQcUT?4d8mQim~}$~ za+G-_d2YvA>_(aFC$x*kpNBQS&G!c1KzV9v;Lj&H!2{15Mk_K-k9&2i@czq1nCJ$M zIeckG!q)eg>h95Sn%+)84v;=Sby@9t%J>qcs^vT*fspFD{q_3iVZEhCYuc5jyVNLy zvO3W5KNN)%P?rcApHI9|aI#K?kNS9v9DH$#p)MWG8nV2VsOH1WX|4yrg0BqgTeRE< zZZlPpf)?V4$Cni|0`%-i&PeYT65DDguRsr-Yb$N$QWuvJzWC!RB#aM*P0iHnRgz;V zPSB=`H>q6Y@%t++(C2t%Zmbptw2&7odW779x3o}|x!!O|R&moL*CfeGEuoc?ryMx< zgpPuubo=>hyue#PZVDXmD-pYrrQDx&c*0OlG3I!!NtyvIZoyWCyA!&)Y28^RyTmj! z3rKARloT9o1H@0qikY9QrAv?sfH^+_RcV@nGLobvO6QS;@m$4#q7GH2(8g>RSUYHa zQg!Y1)sm$y;)N1MGxlrSe!_o=F3-QK*8c$AkzOA5s<7s)x+y0qGn*je8R=f(b`ktY z_I>?cxBl$ie@$QpTpS>OrN2PGoVr8&4jTx`iru3c8 z3^=kRJ1J!n5Zj1t4g|a%30kqgY1lXf5rRUw#Z$z&?P%)TX8D2jS{N*u++OUWyZMew z;@@h#OI&YfwMvjz;%UYLOD=?yyl%(C&mJMoQ086k`Y%*FJ((99B(;YcOpANvf_G#s z9pKLFgO4scaa#_@uP)Z;e%8zv5T@1yAre_jaa{=|D+)rwlmOm9!2{QvRXbZ)XE$}7 zE!ewcJd{ju#dS}iJBI9+GD*lJ^T^~LL8?q-jwDXdTkGq%T3DH($^;HMub=EbyDn>g zXxF_>C98C;U2%;ZHm$EtxE}4af%ZWO%0V8O$sFXG=9sIDn8{jovvH&+YbHu=s(ZO< zBZIWyEMNrf8RU%g%~crhx3`5koa2J8_|&{)J_<-vyl1I%{xxzj3{A+`+6Qn0?6PEZ z@;fn=-lYB171L5`iyNwh*0r4_lgV=4;)`p@2ZAts@O|Q<&F1qVWlOzYj&#x$`Nft<8Q?xvQ425jI$)Mb|ew(zz zh5k?_i1JK%4kfj`8OnhwBqt#|Rh)Z`UG<-559!k~-6_cnw=}f8i=>$eQi{uC>h^CV zt`m?kpFV4o=#w?S&U%K_{J9a*wwaWa#9K)#DOSZ56%2qvlhYiE-CB|bf)_FY!E zH)OU3qathbSuCbg%P|y}g4BRi5a!^J5>7BcmHG^{2b_EbQ?kFS`5x5NC3<@SQ7g)S55zRCzF_Gir<%8e5npr(H@C2u9$QBxOk?3j2YI!Wml;kdj9G z4jvkw9&6=X%wr*Rq96b}9r*2``tn+I_Fr{W<+l>b_2=5z4#JSimE5*>1))j-7&#e9 zN|Zo3ImRmEZ0uFtK_Pb=fwk$&I-N_w=}kD>O?Rl}Dc*YT8+=&jJvbF_?Bi8xopq_M zH%(cnp=m2h?aPMEp~+?&3Q~bcb*9yWxhhE|N;w38E3RKi+s32p<5V$Yld7NA)`!>< zks?%=3r?sU-~h4?(tg%C-I4A?iDR)R4$|W0i?TF!*IHJbuaAo2R=cR{ACw0jhNZjj zuO0T`;I{An#B8lv6L3ACY1Z0?%3gIyjHmmgZ`-xN+KJ$(c#3%^(zve?^rf1|`Oe+0 zE_cNj0ztOe-9$E@2^)8~wIFR;fdY?LukmfK#Df+K34Mahhc+F~Ah;KT zN&R4)5rc$*&{g-d9d&utF%@8$A-3Tq_|LZj3X;-YQ6(p;ig)82pCOJac z7FEz8MIl>rw;euJV(g;E&X?^5()?(wwAr}Fg)e(aa5~c5NK!~vMea4B1R&=PqmDksPt zo>-}eWkQb99u{d;ISC6TjfBIwi5J(l&Qr9 z$wM8<-;KCY8Ck~&#&MiytyXT6trjN}ZgL9Vcf`H@>2MNG2qh#BE0yI*?Fd{ zhrVmLFEfn|muy>gh;*CDnRhJXpS!!>v{V^a%jTY}d6LMUT(#lk~8<6S}0(XE00m%b6 z$2C#xcr7L0n!xhE9su%IjPYhMwYyO|X{~r|W14|xB#TCow`#YLpJ15#un^;`Q?9o1 z5IhS(NZFLDdR3FcdQ_}S`YhIiG6Xcb+wtT@a4B1o&{pKAxH0FuIXroJ)=r3zB2QzT zrrVwhLfMfXYi}^MDZwQKjhv2BQldKbK6O%$t(%Ramt=pvxj!Q0(@dcYNbbUr-s}=M z@ovgTtx;|z)8}hg4p&kC0BHcFfh zVI#nx@>1Kuca%Bcyx~K0*1oA0@G6=zDFWMe56(!!BdS z3tRiiN+?)dmI=T;0l+@EtyQV6in%!4pyHq1+^H*cjPtwKuU@C)=UcC|=9b4`H+MIw zwv0&aDPU)6JJg^KeEK8dm(VhUtD!|$-!T7p!2!cv@auO2zi0MoLK9T&7q=AeN( zO0A_V2gHP^7Sy7!k`F&TRB++?!CyC1%Zlpt8!YJB!Ie20GFbxF@v!T@tZe@jYwrmcfD=A z?{Po{5|XpW8OOr09qb~=nXX84Rfk!18(eBbA$z}6rc{gk@M9 zln{p$GVYIkYDH217!T}{i0HsOW=8}1>;Tp)^fciVwnv{@d=rdm0>O%4guS{pLd;hx3}Fx62yy47~7(} z!)8=fpeVZ?K|!<>1gHaq@6JKS2Lm~(6U;L;k#X14WkNjog4a*|E3c9-sf@RhmOIjb zqM{CRK}gTpAm&N_jfXv&(ntT+%9hE$MB5`u)OKme11*v>Z`9PyqjPY)UD z%YfZ?G_5j*?MiyhrNzeDW;;C*k`%C(+(Nn~Io>hUXCnjByDg#nb-VUaq+mvec$Wg* zYiR(m(!gO$NKWMxs2>V|$@ibXu6FHK-KGQ>-oU2{6dO_t_(IM>Dmdqy9y(NpqPTlb zos&5jYAVnphFv?AlAt~ZsQarPM#|{{vIX!zqWUHn9~ozOu;l6OCJ97?-Grba!O052=R9Da+gWzjTNeAIp}irN zU0U65#*j9YCyy+t#QFJ(;L?*9ZiwOo&M*K-ONc^usPsIOkTIIpFCbe+%N3C{c6J8J zlhWEc^K71nE@)|{$Z@u|I2XNXNgfgoI-a@fUH$q#_S!o%?C(wKw{*XI0xKKj$&TSu z%Ug;oDhb*WPDuFUu4|@uO-~wEWwyI(a@><~_UG2?2w?AR1OSEa-GX}XIP*O@+SWZ$ zaI|TAJ+YV_^2B!IGy~zaqc|ju+$iVtdFpYKSaM=92BbP0BW?iiuRn!rHwlK7rZ)>{ z7rw;!a$Sh+FX<6?xN1uztt7dYcUly{_oF_Jv7v zQbI^V0d=RArq`Z_4X9+~jxnC2*19uzpL2xtw7i76i)sLI?)+hEARVX}@e$$Y!^*j? zTRx#&ha)i^vmwc8DpD4Nt!X7EJA58~RKhm5Uq=Ea`z~HinjF_`Bn@|gK^w-X?J2)LPCam z4CnkRxpKQLxGEvcm8+1Uk_TLmxN}%miOtDM1CN1@NGHXN`43w1NOvmSPqG5-4`oyI zt2##HyVPVqA>*~O<7wf%WT-7)WM|XTq+{ux&Nc1P7OP9oL%24Q>XQyiNm4+{vI#i@ zAZHvCT1x)_+O4iNf*d=0a$Q4ZDDK@$Z6^clur*^`>6!rHsMlWlQDR_`jdajG+0LL|oR-SEeHd&L-36#sZh`$=nCrD)*{>lJV^gsTR#V_0m#R z-2^EmmYX~Qxk^A++E7jceCuv0J>*72_-v)^h%bZ%B`973lmYYv)Ufq$ZM6LIwTC7< zq;T1K(namDE5@&+j+ARdcDJeQEXY)*pxhd5FDw98lp$Hb{{ULOrR*R0knH#Ry>I>5 z72>zjJ6bc^A8T5pQAUmIap&C-rr6)VYElw_bAgc6#O4DN0cmf%03@!_Kccbw%T?u%XL?30*GuGZD1|y| zUojq9h*XJQ*ynJB5y&NI2=wtEeSGIl^q26+;(kEj_qC?@19o)fOJAdK;}Z9`F=-7X zWvjayYxdPZ!tD0hDKK4~?CMiYmQdW)_fD|LR^+x22Z(Mbt}%}~)wk5KXYC4mN@Wc( z9#KJMgypq2w0N+5l#((%=A^q8)i&)9ZPhL6X|e2WL3k{)BrW*`;C49DQ_fU8B>4;z zSzV*TMzea)skGuBxInwdQA6fALe#bn#}WoOAu4Q<=mGSt@irD*Hda$j>NFfLO$F($ ziw;P!kmGYmOPj#zeRVapEg>e-^|jX;b-jvZWv)OVl$>Wd_g6a!O8i?<&KV%TQ7;!xenO4POCEwvd7Cxe_} zB>EnnRYk6`s@IXC!3tT#Y}&GbwD6#I1GgP<;;+TEf>aWur1Ey9V;>AC)O(g0Xj+?9 z)$QXc$YHVpDId)8KerXk#f8V>IQp*&L2QKge^Q54oSzCySx_5DCq81lbqY4TXC=2j zj}ycm)a{J87Ey6Skk*yBu#!}ar>cKh1MjZnPSf_OD18zeWCvSQY9XvF3~~z7z~G$x z>(9*$^7P&Q9QNkPbxp}>&l9cgKue)yq=b#9Zb$m372a4qnQ7J^W$6&yxxRo4QZ8~= zE!B7wfI)RiPIf4QK^X^{{IC2|23%7mB#RZN5^pJ-NZ*94;EbrCf})X= zgXU{YcCln`*Q{@`N_&Xmq&(9gZ9qu@SO6S;u&o2Fu8V;DMMZ6Huz${kcn7?mfBM#h zI5_%XHatN&PP%EqG46I64zeA`KN?q#(K}GKNbOHurbU7+(YZG#`?<)P<6r`yfa75) z1MDFf3eP#uCbeH}*4Z;`_M6~{rr>)^vBJ@kmXxHWL85RlaFRglgPOzkS(j_W(qmiJ z<0X{Jc`XpVt*37FWE|jmk?*U|YnQal>;?=7y~|9;ysggQ(~Ceu zfhj%`o;k?K-~snmd<&GAS6Gj^B~BJ3CFSl=9Hn7H%iZOQj+FaBP~?Xc~Q4K6T4FU{j9;Y*M?z0X<1j_mA6H(zF>ID@|9^LgUo5@zdxQ!TNUEOy1e7 zavN!DM2l)kd0?mjm)*f6bo)Sgb*iUhI-Pci`jRM+Q|(dKtVnQ_sR0U0iN~tat(hLb z3b*|=C7DvYEWRLwHzwSj%0j-@Ln}LvL&}X(`!#j)+~+L5!wOSs4Ltkt7VC;9C&G7- zkbKAqC)_J1p<;F;qF{=wfJgjXe?`_hX5n$tN_)N9KUHkH>T3i#Ohz+VLZLy4- zT$kKofiG?y+)pljVmENE2^{%Wb=$Pztu6N3P18nM@A4qMA=X@V=lJi6RN{7}Lp-A( zl1RzxU77kA+id#b>w>QKcrql#f?JKXlii~(?NRQ@DJtY0$^`M8*HbQ$W$7uZxJQE} zh8uat(=kX|8qP{^6^tB^eg6P;XbFSylHq9Pj5Lcnc7dw!`>GL0(-R&xJDOXcu|CNx zJ*B4UHt*T=8%4Pfcd=P%ZmK$zqM)>ZwPYnc3}+oZE3a3^bpD^v^WmYFAGxCI?2ALo z+}dO8SxHIqP;e8TIL343+E1eAX$qBS)X2GaNn+l@W-dZPmf;1%yFOmlk=?&dZP5`Y2w;6@5t{{^RC{pw;jlFb!kPaT&XVi>yF#XLuF{-0;G&%cNIdpX-kHR zn_<))`^!{&<19RfKCENC1-yBzD+BX{+w9s8M3E5xucFy6Q#I z(_8v;U7NGBwfkC9($t-iijHsy1}MPv=~X_{tqGTW(YLr)xR$vQwCpBAR==!m#CM8H zh&@sYl5z<=Ri@MwnKu6M3R=Nnb?+v z|>QkK$|8B&k{N=O3(raAkn6H8xBn)!ZxZI@bkxpAFJm z*R&l-o7!ihd(c{r0&@@sgGvc0RuD0?<0IXGE9jt)wBqfFSon#KR^>X-R)|-bD}?o( zZ8_dZTAM-~V3oAuia{iBakV(cMR8gb`8U{$l3kL*BB9lxTQ;8gSx*N81Re+Ns=dDN zany6$h>4x+(xj!3>h}P!r3|>N{gQLY=iOTp%b`u4<*3k9vZDMp)(_TgA!{ldx+@%H z`|87DYd@F=iiFDP2UJa()4_g8j?j=6l}T6D%2NB)q>SwH=cQt*+`rAi;~gcPv7_!O zK|6`vjk(S-=Zt&vQ*yNO$&#cx!=Z&s3rbusqewDo^JrFTI7~L?{J}=Y;*PLFhetRxd?iC5${j zM(bW{W2W)&xs7WY3%H*Jw>vIrtFEPsg_fBLPuAyYN;91C$m_>HKU>Fc`o$M6(%efR zN{I?9FVgOgS2#Ri`PCoj`)aq}Tf9lS+!t#^f2?Gsg7HxRow-g527K~5 z^{8u2`Kz9+x!l~8+8L5o+g<9Cu(95BQOV$dIX-@Mrwmbob81`ZsprRKg6GOw(%m!a zJcsJCt}WbeGLt4nv4<8?5R#bZ0U;y-_5r}p70GY3Jl)~8=fX|CCdGYwQG6f(R0z)} zI2;bXRh4#>m{!?VF$GRTlF~^h#;E@Q_9{>%1AurZtzcVb$!aoKQ!?L=-~p!sRFDz& zc<%k@pM76&j0~+h5$W%$@-ZPc{lUK_g!2iB&`{@93DFI;PR~fO{bA| zvL%>z6qU4=%MHAO$A8Y^Q=Fp%J4hw;pK^AU++m)n>*nt~kMxlO{QBJ|NNp+**_dNjnKOC1BJutV@jZE;{FQg6DGUizx+1?H?9+ z_~V+XXc;_PmZfvNMd2TDxdI z*%xKGxgn_$Znq}@OG=vCu9V>Cgy$LeoYzl)!b|GFo@(?s+6#b0jSojYl@ zxQntwrD+Ld#e3@2&PgW#`3!pVTJfl8foOT9+%4@(Yz2s~IkC{LMh1Qv$S0_+g{XU5 zz3YjL#=017$7V8}TB5d=)xy9?;GAGBX9l#~>G4Xvs$^A2ktreY1FAsr0nme-4tU4x zsu77Kj6OkGiO_4eev0dJL`z-yng#i<%e~P}HyC9qBMQQXLC2^)YV)M8(mydrX;!3= z^1KRZJ3&ETi)u(esK2w1I@WGXwmmV%=b`9?`k@$PFXGw$JO%NN~1cW({H}vQBp`5O0toXe1{(XwM&zI zhQM}WT#O~O&($g;scfxXaGijKaB+i*fYsMqZPQ0bOm#fV&dAtdy!gN%Zc>24MmQZ# zdR1s3%GUO1E02wi1P~9Q`mVlfF6}cM4Q?$5nh7g8CjbI^4?Ou-yB&l701^G3{{UBQ z{{Xu;UJ~mCrBdA}SaBZE-V_v183W9oerFvk-LAp^0Eqt2f2+3t0NtCf+AyExjUg=6zwM8jPQ5JyudVeII(LbWG`^#0;FQTl;b9)cdcDVODeXqQB zY)Capv$7<5o&kl6?W=75VS@+yl|f2mNFIu3tsaM2txzm)tJBeIzt(qS4xQ z@w>XN$&qwyOSeXf+CVP4jipYc;DO(^v#=}lhn{MKp|pmj?DqPU&xJNMqU99FF3W9k zkYoUNBqu7#z|Kbm5$JKhex5pN$9J`9y;zX*u-TFq?KadEI*{^1=_y--#CNvo$Mcd8 zrE9*}J3+bX{T$Tbka8`5}&;qa6#uQ^?q{!-ck ztDgF=sgns5{dprRm@H7-8z%fV(NeW+0S%aYmP#8@3Jigir9;mnrwaUfRVgZZ6u+u* z#$0V&EecRj=g5Qj)w5Szqsf*Mi7IqF6^*20JSYRn{&1?BsY#LE5~LwmAg3pehl>3r zr!_e73*#haR+bOxE9sv3*NTeNR!&r}5joE%Ip(rg4a84FTp+A~l2oLQe97nsJ$$S7 z6EKqMKZYo0AfIPfhmJh?&rf%qOt6b&&hWmsVzQJHj_oDYZt@*R-^D{DnNHd-B8)g2 zU$JeelJZ+-T6@KK7DJgwp;mFo8T795=o_PVeFrE~{518@T)103}0Tchavsach(;U%CV#&xHoaz zD<3NBUE50BHO%$Eiqaf;rH4vOp$bZI*97!E0Qh`sZ1$AXmVHTcfYV_LLxqn96M$9r zv(WK_n$cSJ;2*p~L#sokKX~37AfzPY7$dJE{{XFNU@*rxo!eZPytXOCphG1fN?cSV%+r3ptVD|M!34e zE1cq++<=0V;Dm(?lgdsy;V06oww7Ls;x28t$`j&f4ZvjMoboF?S>#-!s4`0Xr0h{? z(7bx^oac;I*)4XiD;%}W6wtK`aTfYg>K%^5YgqxOUrI`TC0yg4wX!tVWlMN5K5fCK z3~5c(%A{YrZ8Y zEF_ROX9VM~D(Bx*iR|pE95rrzKXq)KC1!WAN}V0{;*byk!(%+000*B3;aJxDv{}1} zbqzR&PT;V7e-b_%3W>I`^3t_ECNq05*>8ct91xsm0~p8^4{W+6rAY5zRAqOk4flK~ z5_ukY{{WR#aO)ggR)lX6HLM3t_1K@JYu24z*+z)B+2^-%yVzQf9qCC)WlN!QXSexcCBQ1lb^CPk&{(=KML#&Vm6x= zPyCIab=E$1VzWDrp4xpri?ROzMh?~$p|tL$yD7q%@-3@oAwUTp(6ZlleG&l#=hOj% zoK+qx)2=tQNqv~o+*+2ThwdTf(CU&1P;VPS%9VmJ2Vc^vuVeRgxnsPtumTxrrxF@$ zD{q!SR(-~&UA?KfjE0Mhl_kV2YS^8{1qW~eJqk$o@#qD2Gz=JrOyA7l0rK1GxWYUL z16(<)7M{Hg17X(j-E|M9N*IpJh$t<#;*{e>Kn0z}9GsspbBr3-vb!l0^);x)mha~o zj!190j>1YXQl}QI^(1qSJ!)fIUDGAEl==g+Cn2}qb=7ZKC~-*%2OTh!@t-fcovbxH z`+HVNQ71`)@+K6Q<2kj!m7t|SbIw5{9S%>Ga|1gvy}CG`unJsL^5kgRzUx``eR^`! ztSoYyXDVh}3MmT4Kyf{5U^_9#bhXUMQ!W)a+vwU)fk~Fy6hJPvfe zDM*6+hTC>DTb$&Nt?#fCyI{(dfIu0*JxQr;d7~z1d;X`=a@`VcaO8U`l+sQXd*@jg(-p3xg|q5GA{ib&!vcHB8G#M+PW%X$e?h+8KqR&({JABNhccG0Jx zPt)&eM$FaRU?Mz3At(u8GCtDJIVZ)8@C934nH{O|lGKjyC%6buXJ9{CGsl;o?enNT zTXku^&NV6{y4vJOfV4P-#0-{?)sTDNKeL=;&-t~DhRn$`kD}DX7QQa5{5%$j?9p#4 zR68ORNA6RlOnH?>`)QDcBMNMc;DR%s_<>k@)3ePGMJ4!27 zITzha@x{VO`UJwvo7W%1PbG>yA29zhnDdy=oxBVk33NGJ+o3+dw6U6mhuV9~MWy z6)((O)FsJFMhAI-4%J~m^UApy_Y8cAqHN?W zTNo)a8%a;JxrM1MDhm#c~rRk4)1*dXvQtO~JeS>DTbNa5k^Y#}X; zz#!pABWW2qRaNft)V01`X|z1zfJ(!ARIGq;?&zwrT9F8HjC=Z`B3TH~% zo7J~>ZPQ;{aNkN>ab53sl@s7jF zt^HE9a8M2bAxX|kb5Ml{TeO1+E-SsAC_d^*0Vyqo1b}@;dHL1yE%L>$w94$duH_!n zaE{m!u5vOGuDHnqBd5rZQC$I)Y@&D*6KBm^do6{gG%A$M?A)BNPgr4BMwF)Bw@5u3 zkbnrm=W5f8fxyU82En@N4$3b+*7WUJHTh%`my-I{N`iKzg!e!m02nv~j&YpUo}GJg z^#}7zjccWug8JGrq_I8X>!At@@g+$CSyDkcIpmtKC7mslx4nbFmMS`q>`kg(4gok&8TaC*H2lXA?WkR@-3>!x6y!#5 zu$+Y)oyUQIbJwpt)d^V@8q}>AUny|Cmo@b$Zp&v2gz^WT2_AUONJqIk z+AW>j2S`2Q*6MBPk=|}}>?OiR(2xfl`qgJN8V9{!W6N(Yn=DIJ+1dAZVlUaiDp*QG ze1HxTa!;xBt@gWgM!PVbs;&`c!<%fFw&6aAiV)?xwpWrI!8u4l%69;gr0`0PD4m+K z8vWWcF>dH`HL24eI#X*A_6>>&C~#-Q4hZn_dE%_Pj&;F~$S+!2<#%%5ZfW5n)dg1N zIOWnpQlhV}4g|Nic?Be4T|nG2SbPi^x6CF6n;EJhqcJt9BwcPmvUJj{iQSBqjcXac zU`aG|7ogu>{WLqRccBki<8?~#0jx46x90a721FFsd=ZcHhjXff7=Y@cP=xqx~B#qm8a(sZSr!YnX2%t0z zP9kJ+a5s9NB?xa~JeNsjxdBHC-jWV5M$oj7KqIYBX{!XiTI+_L;l!x>B*nA8kUT{2O&3--@&`hen+=R2@}nm1BL# z6IxRen2?0H+K445Ir8J774H84VBf@dXP?#Ef9}oKgV16c-A=)Oi0;ontG53D-J7q!!~X#3W%3_I_}(-Dij)uaJL*;Pl%-Co zr721x&>v4<kF50^q~)Fed^ zl&G8EXQZ z4T9KKePL4ef}AKE z`sY6H*;3ke;8>gxqE=l&^7mwNKh>=F#vanwY*qG3<`72>RqN>?IrgQ`y4%#!l``Db z!M)9er^Jv{a7GCjJmaY8U1YLKHyMvEN|f`-!jh#8*w0=%b*<5>^;=Sq#A))w`C!Lp zJ~z3uk%XZmC++7Td}~H&xKrlcgAii9CFG#*ZL|_n0qT7@si29`Vc8krE75x-&5~EV zY)#U>Y4Z)T;%B!dQ3>xtA}I)1JOX@aDZu9=8R=8@iFQel-(LHKRu+|aXeG72tShF} zfs>AR5&*?(eN6^cxrSP}#gfokwwsw>6z?##ZTd$zr$3K;QY zBsHEqJ#pqo9V0CVwW;t^33B#nb}r3y(NEe`U1B>TG7i|2Ro$sr8Nv{ykV)qq26)IO zwU(*Y`c70=+JzLMl@+q2u(c?u1bV1&tn?|y06d)Wt2V-6^t~Ed&^D5Cl^hehrvr>A zeaGEjz1&#nLXhgN3voR6grO)oBb@&L^sA0=dqZ-8pNJu|`sml(H z)G=F&a%SA)jX2>fEw;PTzbt@^kTd3RC>x;*!tfj|bGIe?b;%PWFy6#6^KSQ}30OEh zezD4b^ebd`TVZ=$yz*|!h|ZX|$Zk~g9cl&A8&cBPP(BQW5xdCxkyVB?b$VP(ieStZ4s|CVZ**UsNtmdZkXvL zsUat-f^wAe;v=55Pj(!;EP~5{)Ww(`+NHPQl7yrV6nglZJr7Y?Hu;gDI+=0T4T)(} zn_plgEnBv9$3j6lBg}iNX?-m&mgYM^(@0^W^eDErTT&vFw#!LSaHS&&DL^4!ok-)? z9!x}s7aU|*a6Vae_p#`-*$X3u#Be`V*8bJC12(JOt~8U}MsU1)z~1A-?sJfHj3{FR znyBh)sMHpS?Lk^zeVGBxgOWf8BoCOag?qEx_2^qNFZ$wIxHmyl)?I+L6sP|UO21bqxDdfoN-Ee7*M)V8qx@_ni5jsQ!X={FJ{E!YQIG8P$$(R9A`DhQrFDaZKnQ;M$YEK zTfH5Xl18A4(Sq`&HllVZNe2r-OUlSlIP&}Iv#T!x6vJeE=hjLZFV|_SV?5=LbiZ69P*wC!1e3JeK9K5i-aK_!Ea@+X!{9H0X%Fc)T9&7 zuS`|O;GqXY^U+dvGGI3O>Z`hL(wUaUHE^47x4#(ymeSi@@*PM?1So;i$OFYmH(`qo z+~kW?{{U%hv}35X32psZC0y?CWMCYmXC*n#Dkn^82+-zEOYvgMisYxAdOM*CTcjyi zN)~)b93Zk%YFVmjJ zBoz;5%1VI19Os-2QFGjBr%l#G`QW{D){p(-blkW{X5fHan?ZKt3`WaDvg0f!1YB>Cgs zI{FWNZ{MYPS~buJY$7~F`!OJJl_e-h9}fmT>g(2^nx<78g_L6+_#~zi)W3hpU4tdBj4@`08Qc$8uyo|?{ z6_f;SKG`)a6VE}MbI(q_eJd^np~f7NWvP|rrJK|sOIIXnPGQgnb_ zm1UtqhM9B(rE17daH%*QejoF$M8a)MIPu-J0Gx>#103|lNsT`<5|$*uYq}ek-&~so zUJ|3T1ciLO$Q2K8mdc_8L0 z{{XDk!|dt;=UNm}TMKdJD0hSogKr1r@U326z~rAw+uCl~>>47`D{`|TJ4#lZ4a!hf z5P1slk&(d}>5LN;w9p4Ktinlg?g~N4?OUNtdQ^c8wG_r%r9I+X-l3hy9Gq=Y<38?d z7F0M+BG$1c5|+ex<+&j$OOF-E+K#;e1HuT;9+eBMC9TUuR+ED4nPUSZ8&ZOBGmrXC zht8~xApUx{!DZKSCdP=Ai3mUemNyE4CD+w41Q)`iaY%7brHv zwo==2Iab#2@k47PlgjW31FudhYENkMBs$2KeD8;M^~FfucliX8j1lpw&8JB{tC^n) z&oIwnhmEW*RJ1a+t);EZgee3ltL+dofCo;smX5&nBTS{mL`$uKjK`MGBiEMx`j$K% zA@*7c9m*+j@JCHF4|=ILR`qt5>op&ILkrD7~vz&%l1@N$FL1WYk=djEmD+*+}`8SmWe(L zjoXlq761p7=iVyF!pa&BLtN;pF2zP(KzP1Z7h*dqLajO?%E49^n2nWs%bZrW?5^G}T7kasxEYSxU1J|A%)^f>86fgW|<=#dRBJ2z^iBN-|o zJ}iO(&H{YJXtFXzyME=I>B|5L^V$xUhoqt>xtQa{*9&GOsOxFgR1z{(yURTYBpmrw z4noo!N|2WlmlQ&A%1TFEd7M^N^HW_eG2+9yy6cI8g{6ePqLrm5o(@Rl`g&D))uVpi z_#lL&ePUFS3E=e3ao68dvO7?j$O6u)a&(o;fYZ)ot!|*4=k>VjUifwk{6}_q{av?y z?A>@5E4voB-P4`wH@D&)GoC;v$XC97f`1Xco&Nw=ZQr{$Uri9EGyiqAtJvJ`O&J-J<^hMPv7-tEqoPJDG#n<*`h6;xbnAvX<9%38Z2}jk;Wt zuM&>MAz>pNBw*KU{+~R35qm}cipTFv*FwIAx9fYhwOfO1KRPU@6r^`1e3YTp_ik)x z;Vl9b%Dh<^LXJ7Fj{g7^!PoS09Ed+v^c@J`F(s#nKV$Y?se(nZ!6Gscvkkzvmkpii z+|v8EJIPXTGFnmz#t8{mCpFX`r9GO}r@KX6>TD0rOiY5bcWld1Z@*z-m6a?3zv`Wi zP6s6z&H>MFJ*hVflTF+bnKDCTypHnC#zJxY9pD;o>Kgw5Mx)82ysLMfL5@gtc0XxMAXHw+VqRC zWp`?g?UD*yTF|E5Wy6v;s2>nH7)dw);LsA@fz*F4>x?EDWoFt)GBy*KxsLWG3z+gO8 ztT3WpM+NoThM9vsu+m#nP~#>`Ye$7jSlpbG=g{@fT-JoP+t+b%A(>Ib#UW)bD5q#A z2PBLfWOUD7GtN7G*}a{;S$}5FE7>N_YC7AA6)YDOAbyELmY|TH3EX%+Gg|KBqu90I z?rfboX_y$0wv}yLY`7arK}wH$k`v)MRzU>*HC6*GZ7iaD_+Kq}tC+s3Qr7|jt-HLI zhLLYvcAMP$4xwd83PR2SPBISz;ptOWEj1$Q?0Af{xsu&?YjEP6xac5~MtTJ8IrQVD zTHWlMJxg)tREgpp7whu-{Q;xLM>!nQ(0-sA0sV zwI^xHoKQF<1SsqTWc4`f*m-hn`T#_+ITT5^`wD%X)&Xr{M3K2c7zB}n#xP06M_XEf z0@~ZMo^9Fi-av@#liny2HkBj-d}Sp=aXmgFxpiE-J@#F@^Q($0j>#=0qO>VP!<3Me z5J2n6;GcbF;>(1sjBG{eq4l+`f{CUV%KgEv@1nTrZE0sZh8ytVIP-8LOEFrMRIEH`z1sUN57iUmx(I0c8RGXH-QM7eH7y(Dq*9NkCP1CR==NidWk3sT~#1jP%AT zyIGapqqwb2?PtANE*WitvYWph6pa7;rHq(DU%z!iuAmq?G4sv5>AL|b1EC~& z15~{+Et&D$VNb`7(?h*I(v()DgZ4&zvxE4a1#Mo+-Gcs*9rTIoCR3#=jU&1Tc07RK z@sN6fTEGXoio|n^8(~dbdm6J|J4mxcfd$*a?~<9KS|0X70!b@NsVN1t0ul$>QBP0} zR`nA$y*sM!FfHm^DUT`UhSzrz1Dkw6k~6^P6}`JETTrjbdOWFJ(wKE+r`!w4ECZ3p z9Y%0@BD%k-uBv}iURCVjU&B|0sg6F{v&l{lYFQ)6KnhXCDR3m4Q_Wr5E5e<8t33je zKly4(-7&RXA(g!9(cg`ua0Mi7G<<6*BJ3_w$#az zce}9-q!NUL@-u)u>$sX+;MR*OIbImT=NbW1-?}BHCSav%_P0LIKz9WmdR2N=?lRK8 z?Sg=mr@KnjG7>PKcJ74n)8$uPW!c815!-fDc+#ghzUfMWTYYV9A7qx)21gxv@p;y; z)KR6`?lNFpqXuTNgswB_AhnPVcvqqG&2so%8;c$&sUpNSR)@xHcOBNl)jFx?^jK}t z1;n9*FyD6=g@k|tM(xEU@^W#{l~?rr&Qo_8jU##x>ifqVBOT&G5C%c&o_zQ<^oz>O zCStbOanRZVGaV`l$id^&jDy$VQW2LbYNJMC3vkfbOKWyxid%(11J2{(3Mf7ta0$h5 z=VsN%*WpuS8UQrzui0F*o}ZC?w_PM6GE~|S)O9rSQnZzAQ3@m;PlR)iO2xRyyTP~0 zVaDzurN-{nvvF({FF00HoE}CFGlNqWmR-|`(hbOU!nqH${DdI=Rtl5|7$Dbo&kg>TOfO-NCub-7nSoN*TRNnN}sp#?B2IC$nOH4Qvp}iv{ zm18}8tFxWoX&t8~7M|4BXCYed3J$w6Bm}Uww)ldS;sT3!AazO3NXIp#wSA7~qV*-# z-0{9T#913ew%abVw*g6Wa3M#64oX4Bc&oGYYn()`u}6sc!BdB&I<}Z&qnK+%bNzeQ z&unnfs#{?$3|&sX10SI4yY|ap%ad-uq6Z z9kA|51qcb-JRPe8#G{t^2h+>nRVJajQM=fjBcJpfd-=_B804P}HE=l{$?*JnuX?7A zC)EC`0Q1Y)SRQfELJ?ipQ=v6gOX0{k1u&Xwb*STb+6lfwoTdc#8%6%6qNu-91r~p-L^Zb z?2v>PSwzUHXr#t?ovB!CfVAV3ttSVMPcg-79RQM36ZdE@OWq!%$(ogt~6 zQq}w#)XX3Xk&W&pC|B9&PkgVt(xYXUG%FGi8s~X>RVZy99e4bKWUp_wU0=FMQgSkc ztq3IgaLd1Wt(~EJaFcSdB31rijEU2ngwon*AxQzS;+K@;2QDEw$0O4jtz{lNtlk4` zB}#hDrGsfe*g}7K6{q*$;{d?87e#kCU9kw}gg2KsREy-;@&b5QeR5R{ZBL^d>`O+W)HgO0a!Z#+1XiCp2yx}Q>#9$`VsZVh zL9LmnEldk8pTE0t{Mlu{M{(#%lEX?^T2uB)Ksiq0o<=xO$E8&-nlVwDZ;1eVE0q+k z%^&4eoTCEbF4kgE;yxT82pg>YwLy9PI9N-=ZJq=bhW|6l>a7eM< zW8D~8@wS;QI;5!No={E)2km3iHDI_|F_bz8 zBlJP37AywWso%0SaJQ!LUv4{5l^qB&ik3FCw1o9i6rQIUKKu$U5&^Ax{>wqGjPO2- zldyP(72-s@g_dNv%@nfo<8N*Ft6o%vryF?~Nx?s7ILRWn&CTf0Z17x#D@i=sBPGXO zmXgcoE)*qBBfLS}LV6VL@e)9-TiNy1{W@Hir=?q@J0Ek>wBwVT?iPdty-m1Pxss99 zCvq|7I#u}UcsiXfT_Nb%57;>BpfTx7|5@S={FfgGsd-0)U@JS7jFYzqA7?&!tzV@zD>`cZ?JqL7 z5KyMULe$dH)5MaK!5BRA)Z`kpcK4}UyK8{c5FNInG-M@lok|jQb=C~Jd>Px z3c=73tx|0cCgTD%-7dYJO@F(@)D7c#U+c0{1Vc~abH zqX`?{jqR)6 zmTpUHOmxUd56Ou3#DzQx7v4=-Ir`)SwV&2c6={PNspx4hp(uwjUNF#9Sne&r4^@40 z*m<+b+B{r?U(HyiI}JIl+J2vP`lAa@`yZkGy;qPL%FZUtbyAeH%5B#Jsc!&p{WSBO zc!B1tE!dXyc^3vENR4b^uv0f_TSd}A30m>!apm~eXS-F?tI{2>YKWfLZPA~c9&c@( zPZF0#^OfN3+NBYXDxxPI&r!*KXNfP4LcrZd``4{4PR;P+Xj4j1^9}+2H7yqBCDu!UmekU46tu4)IpdsX z6|*&uWG+QU>zlR~E^*x~NQoUK)HDa%Ds>n}?Bi-i?>v!;*KzgT?@FeAowh(`L^B~< zVhDw4e1pQk!RG)UK7*br&;i7TYNBI-7X3Zd+q2y(D_u6}_8U}7Qw2=DcAD$s3dkfj zgsUrBN1)m>&sw|NZJK*XY6hV~vR>r0aE0IGp+O*ZCAPv>wLAgPsQl}LvUyisJ)|bi z)GY>KyC^op5RzrO+o3)%>RSYZ_D+5HII9x7OtR-L&6LUyldz;C_M)?T$HgHIW!H&X zu7Q%q3uK^tzjbF}{UdNKvnRTdAxlGOP>%9fl^+fda58dw9}aqh(xk*jBV*4CuM!2-Cr7h41}%8iwknw9k(0r z$mJ?hLI(qrl5joM$EiC~)Y@{(Y|t}AcAC>OUuDD;cgQZ6RlI_{_;8{yF_Fp78+*5; zZjtU9M)w-Z+^F$p+TU_T#$!*#n;|LXD^tixR9NZ>%2Jee%*Qf^pj!xH);2F zyOpqq(!{Rk+0@3;rV)@^QBsmY2Zbq09SI~F!jBUkKN#q8c4O7Izbo$C{LoxPSufS$S|8`D-(AmecKGBtOWCtK_koDdH2?Ii|ggskHvp_*h`3f0-pzm zBRjqo4#K^y=u2D0;Nb;9N(CW2EB-xs#Y_Y@IpWK48(~@6g5N7j6i6xn8F(9A5t8S4o2aP zk0juqdV2f*HB^R`LcU3jyrHn}(B4TMG5-LgS7j;bJ(@y^8OaKL=F-!PinJwVu98qxNpr($0e`clj|yBKT*cSt!%9)Ap+9xBEnNY*gXZ$rp| zg(Xh7qBj7Zqpv5EjQZC#x3YMW;kfKuySDYXGE2>bG}@0H)>Lw`o^n9Pp*6#-d+j4_ zX4spHZoU?jui3uAR&snqXQ1cEl6@;Zzu?PJYIzA)8bgB;^l1 zIVI7KNC{3r9(g>TYU|n0X>#>;p<)Uxw(D!9r&fs&&{DCt832-S4r@XPgWNk>o(nG% zDPvtt&~aNovrTVxesq?j+7{~Cj;6zkl9td4n+>OuIVAIrxUFj@^MBG)8)D}qE!X#i z#%vcm)3_l-C}1H;%DFk@5scR9(=W+Y*V!aVQ_lnkk-Kt}<^jnV&j;QsTQO?8YJSRZ zlHFU5p~Y(eI?7x-um@AWDg*h4*0k{$QqTxCXrD!qhQ)`H2m!VSe!P`R@u{A> z&bIps3vSD8Euu3|sX(k9qY76zIP=Cm1}iSpa=6&FWH@gqFzlBU9&Qt;aY_lowvtFr z74IkC*0lrLf^DWnxz-$0564F2IC=9{enzjIjcT}dsdovpZHk)e9c&=5`Cv4iiaZ2^ z*Cb$h3{@yz+sz}0aW{Mb@B-}meYGcv{{WUYhcpVy#Gdj^Q1w4ut*y0n!%t`_a->{i zL0rjcRA`YlZ)qLo;1rY`cz8~8<_YOtcGWVR)OQK@SDX(^kg%n;0UHt!0LPKW+;PQi z9@RArEn5QIxcYADQXN7cZMjNyPPPdkC3_SQcOIl1;~hDzeFscmquxH#L00bp-dHsEpY^82dB8xU}=C8KdlJWdz!k$~f|zhPY0VPN*L+Fq`P#KqmM zl4C?mazn303GP&OZBnp-!3zW^k}wocO5vTTuGcy5t5z7Fov#rQu}w0hw&GjfTL)@K ziAf6sfOCZBkSjwQ)$enS#JtU6nM1rtZbN}N$Q*!wRXFq_vKiF6nfGJLP4eKW2uT2$ z3oAmt(IDrHsOOJ9YV>_3V=ZyaNal3(S@QH*lsTg)4&*iA#=dB*y4KF?HY>DMDGpq$ zs&Thc$W}JsZUa1!0clz1?UP+#o`)55l;cG1VS9>!PFu%AlgQ*&?YZ7{1ekKyaJkBP zms{@Nb=NnQB!G~do_b(orYlpiE!&K=Jt|BTMYlNP;kAaEdEt(U3PJA_LO=;tMt&x+ zF;X?sx>h!?f4AG}zK06QB7v~TZi%lw{q17f+0<89uBzUvgt)ad>NAf@$}>-YlDvsp0j&Q3SGuQub(-S}WpY;Y zYvE0)1CiIBeiaotVJ?Ay2v1G8{5kZg%blhqcq~nT{E3j(rKL|uWu~w}0~&E;W1ZxM?dY5i2T!`RSVQ#+vx#o%{n^ta^K^&YN$%G81xdz01K;nfC8^}NP^Mc$ zYI$RN5(osS?aBN;A3Cq;rz1eo?3AryTY+m*cnJXK&&>Uw#-<{r5L<^JtRb{Cr(AGk zgcPMj0zF31anDgy-Yvyx!t9}|Ax_)mGdALtIKroMbMfsb$2$6K{_trG+6$Nl|aaI^`@NXWvpp&*m<165Lcc{Q9UZMQ|n-xVkV%GcN4F zjG@*q>ueTN36+k4eZz4^2T!)@&2VX(L~TJcL|R;N7UnJ& z88RZbo+OhE#y9+Zd0H z|(ulGe~43W(Czb2nFNJx~G`>_`)?A=IbLO#i6wY;FZX9Db92M07k<8N~^Y;)G~BOXARA@8J1ahi<(yJvE-2I*o=Tu zLb7lRuLF*mMr&JLW0*ah*&wu}_qQ4IE^AOqwsh#;(B4~6LW##C9Fvd1V1Ih0k|vrQl~|{9 zTwFM!Fp1SEik_`A1=^k^o@_~ovLa!gTe5bOpxGER^VGf9E=0O^sjAu z0{$ZVI{vO(zjkiEf)WgEBamMciN3w}%>7mNl%-6or721x>+jR=`62d={SlAenXe6-FCN|q#8qoA?h zII!$;99oJ3!phq_bBvy!DyxY!(OlHgH!&f0yXdQ^mwJI7*6P%|j8&>O#rnXb$?VR}S|r3ZV3I!P`t=~IVs3jxV1=K<6#Y;TM!71B?mZm5lE z?J^@$oN6t)=8~oHga;Hp(F3j=LVo)0Hn!~`LDKKttTCIr%E0zCO;~9PQpWUbZ_f)t zhC0{bf8tCWpTsi6KRtMB-?IG+qop$8n&YW%hs)>ay1n$(()Vjlv4g3s4=IR~;4Vw) zZEiLmQUNO4kF;=9dB$t3nrF5RM+$S1nz}ezp3kzn+TU4AiBBLNeQw>+G;lo?$({) z{{S=sanGfGmC)FC!Gnr992{CI#>8;+6g$_<;-<|jz}Wha@4Du`_Jqri1xu3bi5pXZ zl>LFoAdZ9A6&qsLjWQ%9%XOkluAl)a=&Mt_bW*@RGmbI9_jRa8q}k+ms!W@kF07Ii zP=$n&eK&JiFk65Wmqqq!0#*`2W2Gy}^ByDV@Z@^e)Q1-Av6$Ah>NQu*9V&I{>F!Tg zdh~|NXhZ$t-&%kRKn=8{Y)^pUDJjXvT9h#7vQ$wX;MP2o8t{Ss%c`v14G-C+cQ&|4 zg=~0+WlNHzt@(pEDO#7pf`&XO_!4?lMB7|;-*u61h!%yEZAHEx7&ym*T1fa{A9ZF) zePJhx+h_i!(Ajf|Q{t#CZqI2WoGwM>vF`g#Dy(v6yt|dzuWXPK^mRVi_Ss3>!d&Al zl()uu5-jt(^9Iq$zv(p|Hg1iqP4O9$mMh@V+&=~37UfCc205maHJqxPiTJ@!t zK)N!pnQej*bG5igDg%I)P~q#*BoorGC%-m3HsU1BWTk@Aw#mA(2}0B}!)x-#E9CX$ zVAe3yt~Iev-W>rX6(!r;kTLHLL+9_R@}9fx)iPM^SC6u0Vjr7Kp?1T zp4*|NUz!uY-wg!g+~LXv=#0EF${aN0_?m3Y)#E5?2jAspRc-2H|9)Y!*d zMW=`MRHkkcbsMf+GN)IP&hG5(B&1-a2^m5XkU-;rK=Y}aBpaN^nQAL)c4UXPjp!+A zJ6Ot|SWpDxpih}UDy%qNvdWbKjL2MdhMrV+TPX_zkW^KL5zyl}Ao6-HsIElijki;)XZ4 zdYqi&BomHtT#C6nJ5R^6m(tUn%AG=Eo!%umk+_k95&=Im*NU2XhOXAPnq1V}Cfv5k zn=wGC3^Es#;~2@v9Xg)~<0h*YI1Wa%J3YScGci~ z6C=kvP^WRdS=>{B&(Hj7<=Bdo4_&gdwG=fLLX-gK8*+bTQZA*-ZN+MPz6)BnoTmXv z^%?Tce(Kov%{y??G8>&Cu@!HiqB@^K)?7l63YG#$vV_^O}X|Sap%yov$>^|p|X-d$lR0e~Td`HSV=Gs!4o)F1# zDp@5iI7tm1yH0;)eE4~D3+vT=Lz)=y+u^}&_Vhg44w124ps*qc>buh+V(A6f5gbNxb+HM{NGb}+AP*TOT!2mmY57-4YM*X^w;W}u zOL4NIrSKG>5~F}J22KFsKy@|o6H(5$-PIL>`~)<>TF&z7fjA*)0B{H+fu6kJ)b5ry zIAv`L7B7Amefy|c3)<6fw^^fGUbR=lZPc~O^CsUu@nt3HNHSL1T#w^YyR;;Ik?Igm zel^8xDMq1Y;-cwp6M@$hoRGBj+7*L^9&y3zR&6J1g8u+!6BTd2#cKI2efr&bUDM4T zg$Y)3f;h-NDvO7wtjo5zxfaXM=M^O-zh+y0&ZPm);lFU`ae<#)S28%aDLZiDx`~Z& zb8flbma-vgC^v0JhnQkyM$s6hNR*(ZXLd3$l<|yp6~456qC)It)!Foo<+(AGmYtgL z@8fJ~OWbkDRtH0zkda+?wnU88%{wB$7zCxfzn$edCuzwe@$;?x?`QDjS=d~CSE1i> zTMBo(Q|_|tZN1t;2qT3ZZfa3-IX%<#D}J~n3kxq11=>Wz+T?k zmB_*8jQjXGCbnLa)1?-z^1D4^;<#I+N|1}Mc3f;UrDFlWM+GOt`k-|+p)R)N+pbDl zr9o0cijeA?3rImB0VP<;9Zx<)R^jZ|McwWer{u=BK)T0D%W2!F3}U4z#@j*LxF58n zk4$IDCaOwHK&N|={{ZMK4Wq)ocq%V#v7ggXr^c6Se#)}w2#8+}p#y>j?aIyo^{peP zB#9Oo@Y6K1m{&(030tg^(RIFAV@ zYS2zkhy(D=XhdQGU8hDC$(SjC|@ygL3v%ZzP>o#%Z@8+u|U2LXeGwdGn0@;Qs*V*FDl(k3hIB zO3ROcfuGiOX&!;P$n~oFXjS2QfWIzN*B;{{LtqbQdBwI=h2RDm2uHY$%K6rP?PuC`F)DT2 zgezn#LrtL>3tO8z-g@rHbBuG7=}@*CaK6up9cpc}AhMMQ5>vaqf4o>2C!L^u)yV6L z)JaYW3%}|zqEdP8)4=MV*`ck~d7rJHAD)V4JBf#QlMzTm5-j#4M?|MwDGa*f zLA51bSnnkhoMdf33W{Bg$q{rmnNxk+^CYJ5VAIe@x}n$2e=B? zdIo=RjZc1g#RsC>WVyW~Dns%LSV77E0JU)AK2>7T0O_8=b=}k)J#u-ALreW(!C&CB z_f;*Yjk~hxDg-5Wi?SLVb!t0hNBy^v{o0Am?6e+VUx7~7c8MHM)B6=8Yml2)W;ch^ zv?}Q~J+-h#6S1VJ_eWgdElqRo98*y|-Ltd(D+DFI@)s)b<0(5*LX;VAoagMYa6g?< z`n0YlmC?3@CoZZZw-uuuT#)aB=iRj5-&6N{QZAja+iY$p_#6dAw~|HyWroLkq3$Iv zny%*j`QE2%w7;6|?6|c(rOU3p)7nuP{s|rpq>n|A7V-Z3tNW{C{VT7mFY{~|Gowz1 zP8xP2p~m(jgrqCb0FhOG$K#`2cEuv>*?DWstC21scz5I=@OpyaAK9&*zoLP?TJH|p z?r#>`Wo4Ut=n6@6p+zJg(K!RAGmILDVWgeSk)!gfePE4_ZSSX|#QHr+kES#O0^o^e$qk!R^NF&aa$u%c7Dae3T`$xgVEL&uI&mW0rpk2o^lFvgU(QK zl0{POaFJ=YLxhIXlNp4eBRNZ{LPB^M=P3&2r0p7pPMVY7MSBd8L#((mg`@x!ta|L& ztd4vb>5)|BiN)qfjUQsXW58%@!m3SWO}Mo_*==bhN@($d30Y6xhtcyD7W_pvRulD( zHZ~yRJJg<;^~#xN{{T1NTe?g;CuuEvOii$E=qc|TbmX>El0gIQpcd3O4tAkjCwDrs z`(c}<-(j~HT2?Z+t6xV-P7p`0iKvL)WTSBo5vbd>v7pH9h0K;w0Bif_8-$%&K60j6F_Yqrm!LM$go8VrZl;lgHWP+ld z@3vB{>TQ&Mf=U#xvyY8x6{NV*l7*lsAwf;XWSltJ@pzA_Op3Mt9-t&=MD-*&j|mR8$p?p;|{ zBDSHHiCVh4u3I~Q8l~Pf?Cm)&dr{K44_#2xyW|`xDjjw+(J9V){OV|#+5iPz&#Q6d zw0*)ZsIbNMiE3LB%7EUbwm~MP^u4P0a*)IFq_qi!{{Wj?%(h&2%MGNCdHo~6_tlzA z8G5lYQ#I|b?cN@Al_V%~oDV!4dJl1`W%k>tZZQxplEcy3SXvb=(2OjMWD)`QV?LFt zS+159Cdp%3{g%wI-ZfC|E-Pt3xLR2r&)>Tp3-)2K?(Wu7FszPLkO>@SvvmXPIWNC` z$mtKIE`+@7QH+jwb}F&Xe@vf!YRw5Q?WeUo870>i$`0oMe|k2Yj2sd(&q~^CPkQ5P zOOcl=a}PSogmW!e=X!W$zy}NcQhoKAi~vXl@uDcu@$?EYPP9u$O!Nv z)^;cj=^=PWCkKq=ZOu>tz zw&2^2&uF8&btTnK9Tl{ITxniP=rf#iz|CUZt{&9|edD{g#bM$WvG$On+KJyE)69&Y zAd$(5mg2j8G!->@W4vX@W5-bln72|Hj^R69Kwd|6DJ1d^RmM+5uwYQ>W3CGGlPzV5#>;8of1v0?(oD?RS}o6>4cz5Yb}y@wgKSdaTpyFw!W?p zM3&vH!qvUit|AbXA(&1Q5LAo;m)q%q_IMpSEUebS?8e6t&K1cZQANXYFkvMt?> zT`zK3W-ZscZBXryM)LQwk-g2JWF-xiq$kjDGm>M52M^}h0_%NGfZa`sow~(Dk}qus z9Zt)rmqH}T?;~2?TM7W7w7N>02gr~)K7K>ev6B(ittxKAA=kJ_?^NLdJd%G$AANJ( z;xytIW!H>%Q6RRm?pxW6jkv~1$jS8Lvu*vB>PxJ7p3cmbrHK9UN|Lj`INF4bxl+0E z9AdSD3$+1!_gcmP*Ba!lR>`s&(%@WTD%)#@R8<%&YUM2blw^`|jO6EmkUG_M%l*Rd zYlQXGxVGCW45h^EO2P2$NaKJypCAAoc=^(i8;FUlT%@$Uys4&N%jBnxfh9a0*v@)$ z^NZCJHe4jFcn>LAS`oq<#{sne0IC27-=Ca7ZWOmga9q|WFkmp0cPxP6?-#UWbtH`P zdJmAV#&q(Zx|f;;TWuvMY{pP=3t7fel5kW>Imi_qDq3J9vRV&3;qM$g5Rwi+Bkufb zY&WA;B}AB;!W(&(&=H1!C|1yNFs?e)j6NPoFRN9tn8>j7W#i(gGc2&<+FzG;vE2d| z>XPiWprAF!3Cfe4W1#Dt)#h4XeqFgrYGbT78-;-86VQ>AfI0!!HCxt?-R?0Qi6&~N zTSSnlCHEDVb{(lH8O}f|<2dP3tVlx=n#|IYhSpL`XlN0I05TVz037F^bwcv@P<>eB ztiskd+}opDsRYe2SxQuytT=@!NNvQrR56i*l#|pEgYp$3^tf=~`%S-9y6mOos@T%x zw6?}haJ4NcAvh%C7z2Q670asSO>RU>lV!)4&c}+@g#nStLW$>pKo3lDShH`8ywcil zbXA2bzICFtcgq;sHk{xO83cZ|50)%pZLTLZefyOTkp=8)Lvw5C-_PeQMWa>f1+k$Z zDd~y4Ei*l-Ea}xP za4KoT-tzOtzJM-pWsHTfgQ&h8*vu;u56{_i800#-4<8 zk9e<$5(G=N+1PG(h;5UFsU@+z$f31m8`eh&?1(flInnOdR#(M0{;L@X$tAU!8r5CV5ss(o_d~Z*45hO#F195(By2m#M*}Y#(>CeARrJ)02~bCJmd=6 z61#8KsnX`!{H7$@jFTiT0!XYRvSwXrdq=*R@J1hX(u@)CkK!dk2;C$4y$GP54j7R;e=bLp7l+3 zM2WWtoGmRY3J#@BJ`|FIu9zNpAGW&<+0SS;=yo>dOpT)?Np+M&_DijRlG;gH`_iOv zqry|Tez+b+y3V9VgCVw@3}vNmDO+T213Yo@_j%U9V^rAM(n_`4?pKBtD{GS3Q_ZQ8 zq@_CoNdSSne}o zz1zLUJT{1F$J7v&y^w*C=5T8JSOCx}rNvD;W5c&3I|=mMRG_Bhy5f@APDlD8o_NU4 zanDXG?$N657THqXWI%D*XKTLM38z~*K1otYP7gUq6`DIcx;n#3Ze&?1D%-QXPzeW= z;Hf=NJYan4XHNDpI`-V6E)WEW&6gjFg$1~TXR0tjQNSl1IroY;57u@oHTka}FpOq# zpcOXxcz#>XI^rU<@>EXfjRYi;e6TT(Krkx?%^}%0Mnct)GNN{mAy)`Jnl*7#tS z+J!E8U9pR$!FBGqVq;H3WmJ+pKmti< z4xJBcLxr&=_a?qU!S2-HNzc2xVEy$Z?xTr1-KwwABBmg{NRJUrIg*qqYFp2xB$7&g zt+SrKFDzCJoZB@8?P$nNn$7HOsBwo&Xk(A-DO^*p`H{9|PA1AGe9D)T(uqs&qB{G*%&D=*i3Okvv&L`+Dnqx8^ZQ4(>8NVY=GbviT3*0&;lsyn zDp*MjzBPVi-|7}U(%hByp(#FN5U`C49nH>%pIUPpsY6D5#o^^VoQA=@d zJk`C>m6OPNO8cMzJunvG9}4}l$3zV?sBh}HMwKp1Ph%}GqE^eY97s`D0A!#$@5oog z;4MPm*}Fg-Id!=g5B-#MZ6EErukO?rnYMm&R>x%N^0gnLvS>G1wP?$n$7QY~mkF%I zWz={|QpoQWgXQ8|Lbq>bJ+5m=1ln1a-P$~axO>MK?;hHglz3S5_+ zi*39lG^dEh;5bPm)g&Zw*WPnj@tpRwt!y?Hq+#O69wW-aK0oJ?^R57)s;*o~Ukp7e z-1v2cC{Jlh+OU4o#~Ao2#v9M5c#c7?rfbL>1h!RZiiNH!7I(!`oh8NilvLM%a6CZu z@&dhn`hWibBp%WK0HVkJ>6-DP$*L{!88PHbat_?G>yeln$qOn;-`5~uW8+XvEvi_* zGPW*kp6OB)+pd6=NX(^(?PVupgB^NhUY#l$6zAbzmmSwks2j>u!wr_$Es=#O#}6tS zPeJQkw+&HfWd+CqQ)IYQ;#_!cSSsOLQhEdGa4N9$={FL$)LJQRUN;;hvfoa>u6Y~} z!l{6EQ<^5q*b^?PV_|W?rvUETaH9!H{{S?g%YPKMt;+SPh0%mxi=NOhg%uY!EaNK~ z@vEwiO7N8N(!MS?6tI;!Ic^6OoD?YG=Qs&garOrZR@C$GsD|XG`7J1wafxqXwP3a0 zr9I!78*|qqKR$C-T^y~N31=~Zl4U`EtNO9hCJ431|1aX2m&#rz| zJrSaeJ*SSV8$(W0VrxIHkm`OZI6r}{i=!qpIyLS*l(0%%W=cJwERo14Rtunk`aLje zlMcZW#$vq8;V7u6Zb0ymM$^uC8OOiMtr`ka<7*^Gw7o@K+fn=N8@xb^6)6q{ibJ8r z-62pUxO>q6!QF}#4IzORhvE?2tw3=Kw75IP-HP_){lAlQ2lsOa_ngt5X7JlPkF51w zvNK6e@dp@fpl(()3tv*QX<9TgRTA##7DtQahyI)0O0G9A-J0GnVK$%o^H22{hzz4c z3B6AT*u@EnFS`DGI|AuE2u?(DV)53%5eaQDa>6Lt_HN1{Njb2JDFqJ)d73siBd_4@ z$xG%fEU+duto^hy^wwRPvPAhA(J~YfD)#w9iHq`HbM94Q@~^~*l&xG50ZYur>7UZi zeI4PEJjOG$CKTL(6(Q zOm>_IW!5C^$tw-5rTA(mFH((su3deL0G7%0gbo}6-LJgtUqNZCe@XidP9ucpWN_si zL=12acftvg&S{lndm~=4x>xQmrinFwel+vx^xRXk53LQai+X9yn=qoY|jFVG3P77s^4llU<%jUpwMsXlny@N>R z(%w8!SmmDnsPHnyb*2mAf!}`j3vd)Yyivl`ZN)Ij{?}kDGhibTOmD>IB0gB4 zjO!c9hR_eMB#G9f9zSromo00sCze6oo9?!19wfnNy-UUI^(b+*0=bt6kL9oEj%+EbwL08GP^#Y|U zGVMb;yMGC)SN(UUgheC|k1&2dej5O$3E^o@dw(|Y@0U+_7xJ)lXzqCSjj`4{qQb2r zNiHXGVa@c^hvUVtYUwkvbO@!&PB>1?%j7>VJ|09DewZdywY4OkSa`+5-d^xm2iew1 zXLdKc+pNU?Obevpa}C!He|JLb6#Y(@lipg_??X3XW4QS%v}$W|pe8>kFgeK#fxpz* zwB!XbQ`U|f)=3^O5*b+4{9S2L^6k=nHVvn^Z5hNBQQw{ZvoD5tY2hGiVS=bLP^2H1 z0Wzxc>cz5>Ks#VMpb_OK%pRh{x|XXPNfOA{oB&moYhrbWqX}cUfTS@WFB4Qt5J7Q) zUgaLioA2e+n%6nzVD*Qx9>alBW8yClG_j|_S-c$W31iJd>_1%?k`Z+N=Nf}kPnC}E zSzU7X?)s{grDVZ!%c z`>Uqng16lo4sljnqtA_*s6W-x7|J=*t}nrqakl^JL=`odSE%@06sGI2;ti8-ezG`C z)Rfr#8B9h<_osOSQ@ILjiup>w_25}-05 z)+zq-j}zne`X<|N@LRlDFG7bzyCsW$uN_9l>0*8xq5>94TZ8kzdOaEQBg7SSi`2Sv zg@Wc>uV33(ZnLq=wX=hiLL;^U6&#yK66u{Bf0?)*5EU>dnRDcLXf4|faJ6s&Rb<~n zci3fh0>u+sSjPoM78#is3+K2oG#j4sgpS!+--Bjsl1cb(Ci zaE1{J-%98G2jw6jV);r-f1aBtubyyXXs1y9z_Q##5u*=TXnhDH6`H!^(awNhlOE5? zO6wiXZK8zh*nR^!=*`>Lc+Bkw$tPp{3thve7QzLY7SN8ai-A;e34#xL+;^R7%|GF0 z#f@8~HbS3&({sGqW@4wLG}tWZLMDA|<58$7&hk_Di8Jc@toP-A3s~Dpo=vZv zt?9|6;EDMJ)=Ki$E~@-l@_|37QZ&vHLFVA(4udp9y2k}dycV4uf`8F9cd_VgcUnty zQ5w0Cs|yc_NYTvf){3Vx7Tm;{0W*yYv#AbG}5`rus2N z7W&}`Ynh=99FZBR82yRbE2|&Gr!gJU+)=RN?veMNiq=}mo8qK_zl2rX9WfA(`3aao zrbS%AfsyTLD;M|b6%3v?AB*!2JLdGX+n1~a3knMC-0{@;C3-ji0SXm3rrD?So+}y` z!rv1`CAU{usdNo|)$@NUEumIh_CB-fGMpJ8N;||gzb#Zx_AvMdD7V2xNwqfgS5-O9 zmJ&EAk5i6$#-W7!g(@l!)E*}SkpdrAGNO*j(8qpC`bV2Fs^0$1d~g!rB)^?>cjFe6 z@5i|^gRsk>NMcuy(*;K5C;)kZ!cIQ5M`2+{fRUfHw%MEwT49bJ4+<_;kRBZ|;@x~0G83r%=KQhz_NZtHc9 z^C0VY?2Sh2x$9qJbo}z%Dx95Ce|NS<&lkJbDr}yV`@L0s@dIS?NwIU}bCw(mgtG9h zHDNAm(#-?`@q^5c?AmjGs5oXNATidE&VJeNk=~a>{>WFhBS?d`B>=W)l`$k})@$F4 zKeXSW@hwLm$Ow*|;vZskPotZgzagVAd7x6hot<9);qq%nxKO@@@8+13uJo1d_Zu21 z(c;vG+p?A%zKc6lYieBdI~NINU{UnEv12P0Cw-5hJSb@#*G>hSh3z;dXjnG_jr4{4 z;%FzLdT;`-$-m=CV^B{J(tk6dh;y$L9s5xf*7N!u`N~d<(gB^+>y4-V+gdaEM=$TG zMB5MYY8jye%=FcR^a9`L@e)QU>-4_uv?3~5T4YvF?zl{41lqgL7Xy%Gi?IP8f3MJeoXMdGQ&Ty`K3Bv?VO-N3wAim|FY+jk5rvLD zi}aY4I*k7SVaHXR3T)oxASVaD?WI4JuLb4QA{uC{DIH#casI$DP&>GLz|-phk^kyS z+sS9f-(F4l#jbi0^UJBRK9%BF5stE}+|G7LgoY4Hpa7NswR3_W@@&N}$WT3)DG%sB zUe1H_&=6*V|1?%gsK)Aa{$6#$9GaV^>SU;Yo3(c^iwsD)m6n3x*#86kwtl)C^_~6} zz~8p78WF8Wn}jxFV&X$mAIUE7OAgL#)n1S%|ggcrB<&_p2Q>CNewrG>?Joau? z@m33C4-mfJg4Oq&%$nhdJ|9n6WFMl-Emw4m4z%Uq%rKWWGj=Yqar3*_n<-!(H14zX z_)veu;Q++PG8klr65@p2J5jb}U52Djy^u%@9maeRm)1d|Bi%P#!aot2x<)n@o!t$w z3-oNNcQ*ct5I*R@7FXKhSX(~OVFBC>!g0H$UsOC{e|xih!hh@+tgSbjp-emf!z3{5 z!D+!{-f*Uo-V{l^EIViHTB=O&_g#yK@X(XP-nfMHn}V+yhx!?TH9f{&%%_AnpJtan zKt|y&of|oTNjuoT(`b|jy;w|Wmu#$YCYkM6(eo>LEl4A6!lnD9kAU?*jF6?0n^c?N z#8vNKo{WEo@xWn2$_8tK$?*l51mZ&_TccnP7WQH)x=HGGW!XuXcccwC@a3Qc040~F zp?DdA^uXXjf?JDb5CwVCzF}vf{yAI$2_F19X;!80zCyT*9Vb_-gok!8Gc)O>fMLi% zHcoeCTW>qpQ+64?O&&L}D|9pHTvq1{2VRbWXYjOp<5`|$o0JjasD=Oeu9&${ER_Iz z8@$OyAZ>n-qoHkd$ln08R8{2((s17hU(^d^kpyp@CB2oHD+PO-BnWK4XS>;io8@Fp&-3#LS=dOLlUpL$r0umwttL) zHtyObv<|&k!u4CF*3WZZF|e|8bkW=Bx%2Ypw6qd)tQFBUMSg2-9SDMR)jngBp^mLh zi9C-aDYT~S@3*d59cd4a`$N?wCc7KlXW2htq^3~c?~ z2&8zn%JyrdU|g=k@Y3~~VCQf*-F9p_tCQu(E>dpZZRX)5_P}o9A3$CCAK-|-gqg(w z4Cf=eV%fH>4agOjJ`ElhsH%L-8f=cHXv;IjUNcz&^CT6|}= zz%?Oe{d_1%V16QhKpXoVCmRoo<3a;zBt|HLwHNzWA)QBm?bJf$+t3n1W8*l=o8F;c ze})YmHJFcBUPSJ&b1($Qj44n?SyE>2Ps)s6R!R>0@wwuZTjS1ZTSawV3nCK_Dzx6H zH!tZ-nEp_(u;q>n#}G50wo($w=@8*Jk(g~+Dh;dkL}eVHh5?bccH zX+?>im||(CB7$5YMWZJkUf7tC)}d-9;)#IftFTgbVdRq8AI{dUj*9-cm?}1!x+kxp z6W5nrNoH~|@*6|bdL<$msQab*;)^NNego?)Z@J^8i9l}MPQT?p0LiZ#no-P9mx`Nd zd)~xUor%u)+0sVUPnz4tS#2g?z{&`STO*|y4r+MENvn&Xmn3Y{cL*ME!Jg+Psa=8x z$OK6YPk>Sp^+?uN?61TxhwF?59~W318kPAoaA?~`qhyHczN09nH=OJg^mcAEBpauGjEv4#)=Zy$p(yv zxc?Tec!Tq7NHsoDw0UmooGNTdaI$k&ljSX48_z+akEb+T9=m zQonwjEXTH@w8@(^Gt<7gx}_9>A=_s@XwYi+MAA&cns_^Ef2$Tg(Rc8JRzzK+-k-U> zlgf57IfGrNR7A8TSevF<%H2|Zt3ecxOsjR@A*BRMur_i~J1Lwf+JllZ3d59T&?&IfjT70z!M z1V;E{KeF$Z&6bzQziAO=ySzKDr%?gLhK{YJ#1~J|e5`SKhhD(gr5Rpe=SaH%mH4p^ zqUr;`kYQG`ozX!znLGIGWgIhn?l*q8rfYdU44qqSx9-syWcakjcUI{s#w$QYJM~jR zG~(!)*M~%q8>#YU*iHIaQ)dldeCbw!Fyioec;WM{;;N_S5_=Uif)N9`&(wo%dD7t$ zYY*a`cYmVld$d8&gg8q}`)7ulI~dTQC&Mbo1~W4-S)KWQ!3xRb?hAG&&bg*Q5}h=` zty1Cs6~NzHosKF^`G(=<2ELbuiHo?l>V2xQjJS#unksC-x_Hv~Y~PKN8?o7)Qiy!& zSJ3?y$*#3kD6I%ikwg&3kNJjt?7|d@gUlZeaqJt2rB@)T;~sY(b`@bJ2qo*PRy&Q{ z{uQfxMfLM{FJ1uNM780YG<|R)(>Gv8!5bA5f1@(|);aWqh;+yoYJF*r>D|a&6G|7N zKdL&W)o@o6*INW9iigr_K+#Kn+8<0G4P<=^h}R+CAf2p5z>3DEiQGUk_a=T+_a1fJ zZWqh}V(*N_*LmMpBxQ4OI0XpRR-<0@(bOZe7w7Mt-lx3^#A=)&@mY(H$4G`r3YVzV z9jh7YyYqA&fTg`0{6N$`?zP^D#(2Ukm_$kpkUkw-16T420ZAtEn}TnS0n_C7qs1aB zO3j-k7grS{ftM|-Z~tn^#W@Q0NnVrkzw3c1$zRb1`Hgy{!FH8hGE2if8h6jPyY;R* zHDOW1ofT^c=Ir7esi0u_oOc)H&#N2WH<><1Fl;gb=x-8~mOv){qA%C%7EHV>ZP2lg zu_e(v!LH4pU4L>=CeY4ax78a=wj+EJ&0N}uGLzxC>~h5yS+4gDL*yK5i|gaSl;uTmC0U__=0zzB zW|FU$u+&dUcwOFellK)q@0Na8`Upiy?E5^kGD>NYjZ1Vu^0CKI^XO*`izxiOv)lPUL7R0khZmak@aJC;W=oLC3(?#ixKR2p}W zB(QMLhIp4!VQ8%WpFaEp)c$6AbWBg5^k|c5oFku9SB&^loe8nnMk_c8cqQDe2-!xE4^-RLa6%Y%7dfnNXXo?209wG{{bFbo<@UKhdyKf0N-;Yy<9NCi5EVPy?q*V z*7d=o;`|`!b=z&w#$)U5CC~wbBcqo2fix(SCFQV2s&3s$We+z{&8B%FYW%l>ltoT0 zVVij1lR!xuMHAuUwn(o9<1=f?jCR%T8%wg<#q3mCZ5MQ-Ep8DBQO*aln^|ru9vg{5 zb}AV@I`9;QF$Y2YoTT9FaQ~`%42Tpkbb8SjD7^VnMq1y!N&Fc+`MQ=QwBi1=c|^D$ zh`Xm`l)QB*Gg~#n}5D81U)bD}9Ky}qPFfa;g{w3kew;Q|-H6HJt zuYpNmhIlCh+nBU#qmC8IJrnmnG+%%-N#Ue$3(v(>AjSyS)|3r<61SyuL&MHgaCs?s zI2s*3}?c-dfFJNx6oj(6CVruUJW~` z>9+r&_4p6ViwLnFGyyVv>JQ^_)c08b)8FCjm|X{<%u+FlV$lo<6;gd0YmfFYt(wmsc zRXBjAH`rPmr~P?t(?pm(ZZFcxrqhu0KFxc#K6=|6I>sIj_9v<_Y|5K$>c<2)EDUF# zj2_sPs+d+dYy8s;LlD{{=lMQd(3-=aRWCwwWkX+WiXl?2lQ4wIN;417lqns3%?M;o z?BgH%+u|h679Bj^Xa>BQ{?KkMOp^p0Y#NY{Cfz6&z*5;FBeTgt7*hTMnR-}l4FMT#nX4H?cZd!vMg@4F?{PSvLvJ~zLM#}#Thkucn7M)F6V2*NXZjq zQE_2{7^-r>sx|y`1I2Ja0L|e!z;;kKa9f-LNM{{U7UVvGbVZ{ZvBw$(5i z(0Qd!#}7v(HIg6>w*O2KNPcrefpJ!p&<*+lb{xkj5jrkArqVyS$DV;iO4F&pL3U3+dM5Rh@nvKW*Mw&D>lNH zZ7l31Qo@9cGo4flnTpYzPy(PT1ij-TcsmX|nK^!cb!-bQ=4Z~v^v3C$op5SpQ5$H_X#L5>FXw4 z@2)`AALK{h*)@y5#-^z+ENpp=m$b`XOM0r=qdpZ56Mc@3`zpmDjQ&Cv_ET|0-2&ST zI`P&7PfSwJGE=c2iV3}UqNp(qWuYi^(K!{=dGYm zJCk{(QNJ?C!lJr082a)E5o&42z?}Q~UO$B9^YFWMs+~Z?nDGCTZGr*TY z$s4>l#O+c{In$#I38Rq^0C0$16_sb>gOL@B!f{(Csl!wC(+NbuO;|3%)(#N+{154@ z+GCY)4%o2`CX*a^>;Y{x8qy2~Xpe~)BE z6UGNg<3K^U=gLUy+`c@CA`XQW=_G8ij4lqap*UE1NjC9a4)kW$>S`;Cc0rUf1|VTsaC1kmy4i!-#ZC0o(BMJG*TIO!9#ZRMDuH-2TgJ2d8I927IDzp) zKmKq>E{iSj1e;X3pD$(4you8#b&5hkiv2nue<8fU1YCMTvY_)aGlJmdFG9H;-4546 zZhxcKHVU4{?s6X#olm5f^sqOfe4+jUWr8LKt6x@Z#P^MY`CgqU3%jf1Xw8b;>Szm` zWmdg;0H)w`c?gM1+a9AiS597;EkCy&(Ds<~-aqu7Srns&6v+mn;SONQ6@Nv_FoB-j zq*YU=l^`sP9C#3@yY#`}1#2@CmSN+wt>)DW2B&7og_hHtzT6&U&F#J{I~Nn77;;!&Fd~c{O7N18Y^`71wp8KJ zhU_rs(IkRMbHZ-#%T4xgM^&e4Y0~E(n<9z^>wk^D@_#a z+ptXVOS=iTcU-_>;aB1eSNHzQn@=3fw>#o@{yGt(THMp(6S*zbCCv-?p_YbY+w{^( z@8esA+M5j+X4-sic?zDV3JOHCW17CWPl~PS?(E~Os9uB?)QgRFvlI*7CbYY%D*_>V zpG+nNcKb?+pb z2mi8GQp>(lFGs^9J<%`imUx*h@h~0O$|?H+tY}``*oI12vc+{PZD42d16WgDj3cdZ zmHnnlkeKCoz;Jjb0UCXz#Ry_`$yOAWQ{kn6#>swWS0w3mJpteC!bg*H_bz3|7(#?vD`j>#&_2U)_vZNpY9v!QY%g{JIVI*YLHm3Sp0axmZ7rOz93PN)ij9rsA=+KDa zB3K>i!t9LW?GNyWXx*h+yA!)w;tj)a8JPftzi+Q9(=fbj)RPhDCXqZq8WYdb-WvxD zcjbQNeUWj={Kg$C;OCboVgVgWaM1<6<3tB;xEfC^c}{~=p?_% zwPg^0(lC})k&&_?ErG04N}A}YEl!qxxtj}p$bXxC%Er#2tlYhBTo=}_l%;6mCFbNt zft+N*6!blwBGFBHTM)>nOQROeM|I0-peAnciaIJH6Zy+gulqNZ(Q*ZY$^48y;4Xzh zd~&qCNRT8Gv)D(yI4pUvtnZI-!-0t4+&E$}Z`8*g^x3WO868UnJrQ$xO84a}GHNRO z92;A$44<}>s2der&3=B3SG0lA!X=y@ao(mAYjXA@oVbQ;!b>XqB70j-c?vCT_PUU$ zQjsapt_JAA~6I8cz>wIp3(Zk$p>5Gjx2-%r*arWkgIF!K(QwaVfzTcedO+^xxX1^f?y!6)WYG!93Cy zeYQ$sQ&3Q3qj<9%5ARl$QNpChG+6MD-h!z`pT7>AcSA2SP{sk1K3M$V>%0fg^$1@2 zUFn5w=q57W)d<~CHc@<#bIc!F738H+i}U0B5fMB{9vqlk$F29xd&-}`3wwiTcv+)k zIxQ{d5PV+-I`OpAx}N8-E`GbIrd=i>{gGcq>K}l9(-a!`92N z<$9b!T_3eR2R+s0?vYGyx?oX8vO(ZPYNp>Rxw6Xmbe`kjIOgq{p2^xTLO;n2HY2X& zC7jBC0L||VOQaV@MVGXY@wJswp(QTVA*x%l{c^%f-q$yvU8n2D+PU;r(e{%*ZIIpbBDC(fMc)fAb*^ zC~;5_C{!-BKSiadwSJ>l1=?H*9{F=d?Cv5OpwWnD0**2=BfL{WtnePMNbZkxh_6(( zEV*#8G+`b>Gvf9TKg2`AN5Q{xu_gs1(Zp$s z2Um`G9ItK|-3OkCN_;-q0|Uk{Z~<%u?nd21{{SOK-_Ogs?bC=CQ6?@I4*6@4xm>9m zCQOLJSfj&Htv!eNa%-0NFs|IJetz0*C~+~-@&?@)qCi41{Q=>k`eVCwE2Nr}REl9) zY^pxmuDQB4e*KM%I3O@ISv=&askOFP(N--w2ZB{dCcw=u9-8w!()!926;N_~eeufD zSbHE1px^Ob3AH0;t;^Y8ZoBz-(AA-76=2g1u)?!Bw0;`pSjcGyIIU`YLxm#}&yQcZ zEZ^681v-$d&{j)B?(3vL87U;X==XKAF#SIec{6{JTL!M)?2`ukbfwgLIo4|~9fg~7 zRl^GM79q-x8fxcfgFI3kURgy84j5(d+P}DT7p7r%z+g?f@iq+kaubS_@&+eAr9Xp& z1b;;T0S;CuasL5y#Sq7|PN?C*fZkkQxL{G}lcy=%L z^+AX;^u7A$DdhYm9WrA;GM&B_PQm zgc~@vbXQ2|E09_M)->`pd~zWm?kJ7=R=oDT~<8Ykp^IWG1L!&&KR%VXT`L z&#PaR#QHnD6bFad?pmi{e28zMoZ*HlM|o(Vd_pVdiMaA_5J};V!phptms#Bs!avA* zwvYr@(bwnLu3L3SmF#zEp6xaJ%fEY3pT=N`gH(!KQxQM0W!=!gBiUYMNIO;lFYxu5 zq}|r}(Gwj?fr@cb^A8~76;t&OP_6U)B#++Z`cyURs~Kv&T5U}5574?^<>4m5Uhj|h z`qa$)w{c^D12ljUbHO+h)&c3TT8v|Z>1yj@_gG7lXlg^|Gz+oTXT7%6i|&;6gH(zs8#vx`2E`^_w~%wY#QI9H=(}_*D2&=F+9g0J3JacclXAE;LYb}hHGT178ISG z(yo(f=iG7zkfk-({wWUEQ2%q(On8!~yKXO5`6*`JkMzRLWRj=nt#Jw@*wI$>AwH^y z1O|-&Gs?|Y;)-9A-P*yvycn_^32;cdPtyj%FusKG&gRpIyGY^kb${~>6e_`Wv08Xj?) zLyn8XK8W|oQ&gpIp4;R~j)T5(IJ3^hC}ZBWn#9bBQ$(`P99TBK07pt$w9V7c(#AOw zj3@cha2MedC%es&)7Xjyw6h)%B6X2hLEfOoN0MgLL!JZ`5M4JPj8CFnE$^54iY~(1A@6Yo7U>~Gi z&*Dh)9P%kXJ|r?Ab@uC?oRV?Ar*M_XRbg*q%^))g8Y(HK6q&a8F+1AATl8>3mq&co z#~Hk_rmP}PfP%U24FG$am#N#xbsqGLAgR!(tk@ASk^|FsXmLY$+`KbAPRo?1N?y(* z?G2Uoa_3S%)rwX-TOk(H?YC?~vUQfw{u%Tajy_}~ef|JHl9nyN@Ip{?Kf~?IUiG%{Ub+6c&ZVeF*kK@I5tIRZe(RxLu669 zFj~jmnVQLy4wf4uV^`7KHI`b$b59kJMlRj4;}KIso50UbGw)Tto~DV#I`9z%I%r1o z&moJ9DyszzR8a%F&0~=++MMY=Xy)TrJfl`lo47K(Qre_|_E)iP|`wzf#^`*2Ns@ftXK?xhH0W*m(MWGiPJN8)k-eRrTrsge@D6~0X(Z!tbU z%)S=Yfx@CPL8%_l3JVk?(tKcKv#m||=T|iatF1_JAhhFWh0D+y7XWfx;T1RR6QGwJ zlp2mRW6OrCd~o%3V7Pp{!KO2Df89Rib^%ia-$jcXY0n+4^QlgFBsaP3@cu7ryk0}o z%4Xi@BPEpTCSXMqN)FG&JQWdUttvErZJS|3KDF^pa?L2U%hM)d0QyYN_tn}?PV1Y= zf;B$p>w|CLF4?SWy@_-3KwGis`SDap4xd>)UVaP2E1X>5Se9W)$H=%0>Dd>pf#gNeQi+%;rmMxGmTocG6y$L9`Z+?5WIWb&tvFpNKGAs3isfs2{t{ zCz6gb!^MpK^QL>2U2wrvuyw60S;z0b(cv ziBDMgDp(9`&3S)?^kRNW`UUKlyj1KAEVQU+n-5^@7+xndEo#EWkfG+ z-o4lHUYEiG0Sk{Dj&J-^u4J5+a7;u(GtmrN8z9J3Qwp0*GZ#@N%GwAW=C+m}U1%sw ze`1gm-@R$9chzTH9|Zp@#*6y5Etqd`VV%E4xf;7dh0RxS7Z{Y-IIKoU5pn_by< zhL)wa9-b#3v6;07co)C5hPVDv>|MdCOUA z*S~h>Tb2v@wuZ?q5Jk9-#``J@N@!vJt0JDfl_aBM3tP0D543mP!0Vu9`%SSPNM?%& zAW!h1qu?Q#n8UnSuFuT5PR%)<&Zt?mZ$1#VRF5*W#1C=;si*^b-kmII>t?BTQlJu& zYM--pHOCXsdh~x^NPbM8mxx;oC=sIEW=s+F`GwrvT`u_mUbPX4b^Nx0o&nTWpl+$1^2N^KYKh=5+NTCp8CAIrHsC*HpQcU?l zc!u8_bY|zoAY;59ji0C{#Pz>T$iRP_kTvzfsOeU<=6K>IMVO&;()&UMhR2?ct2?O> zV%p3Qy(3h(gTCT$F@p1v9e728z(5MjGPl=*hyxScW8}) z`0g1>H&bqREq41J;n$I1y;zx_QgQWipHReEK9U_;+3Ypp!%O$M>n8n#Jadvff!;33 zvDVmX0bDcLP*T013eF7(eXLiQO!_vv)%$xnM}+Qb0W%rd0O)!ADqZxFLl zHTF^4uZLXaNrw#}M`fVcDQq+r`AZs|D|UI*u1&u1|K%{xP|7Wl(8}}t(_~rXMHW6E zeSk}R^k(@b6Z_$Ni6J_4rL+pa_8?#GnU=dz$h9@qYeBZm8(j6>t2p5j#1L{wxy z)B19$fJ|qwn&c0j{Wk)Y7av*w0R~N%83Hp`I2(2Hc_Pe1nDt`e`ObG2nv2oU)LuX7 zpdpzDClmAU%#tM*jh{n<;7j1jYK`7Jr$@xz6^=Bz^)BrN|~pcF<$o)VP^|dA@T6rh!O@i7LFkRXQbb3%iX74?Kzhs(6mq;Cmwla zc|>hy!pW_&(jtV!}mUKTpMg7;Bd-Afl$jHc+9kIAMv|UVGW!9-xgraSOkE z7+to&hZ}oQ&hZ!~ddxsn;TLq}I??!SA)WI&?f7?|v#~pMuw1E(c31!mTTz&XPGl*F z)5Xy>7spl9+C43Ixusre!sufSs}$x5-UFwuV{pIMQ^GPTELqNx6R156I?`aFUs=%p z`#ZU&lEAHIkQ}zA3YqM2f;>c{E?VtqeI0WaBLW^9r-Y$U> z#Q8bWvXz^zoPiy-x3M%7zgDW_-ofuYq@BYL5iJ`^tQG8i96oYxA@~Pty=p-r5AWJ z>4~cPD>EjjThr3(%N!3`ej8u@*r$V4W;NBH*CzJl=bRe;{ea$#@LpnDt){T3Pe}j% zItRfX*%pP}F3N)De4#*T?Y~7PG?{sY}R$ZQ8rvocc4O!NxJS`dbHn zDW%+c+YB)^Mh=Bl4!8^iXOlOG$LaW9M49f&c|)UKqlu9qFAJyd5#Wvp!FgN)%p{}t zY<}`=|M|t2P`nsBFeMvj(5emh8`5>|eMc?R5jj01LKV$nfX8>DDr`9^(q5H@bYE;! zE%6Vlf6)XLm>J6*nw#A$y!0(wSaRJo*I}+nLb4!rCN5t8Wu1$TiA6kV%61(FPU#Xn z6y5Q)`|kos2XBXMuV*)Ws`*fO3r8oQXhk1S(XD7kNtQrH@*GFb+y~#cVF)}pTKe~x zb>TG@tHgy3S=9I|d;n4`M9FPj0H4HVnmvs)bpf+kN4t#^x8L8dV9PGl-O*))>7uX3 zJ1sS8`xtaI!u+Uxe_lW@U)tS7-UE=D@j*60Zeu#Y1g!OqSuD{X`~6Fd?;P8%xSuk%*` zEl_S|#Hpga+NSdY()QDB2a;xL-VMr;TK>j`2WbUqG7}fxaR+%3uoOm{5Q@_DEYXry zoCiP5eqU8O*SM@fua2zT)bUW1R zA9ybB%nG>zwU*pZsgz5weFlPJP^hr~pGVwjXkcmVV|N4wg;i|> z6AAP;LM%1sUYID_o>7v{lX5^C3ve>1Kn~9L!zaKhT}q(7A*9Xh3n-@Db(%g!sEJ#$ z_&KL;j@J7`S!9|#3y^NBohXEAa-n#4a-lyCIO}(~3F@__T)N{P3930+nOXlk+bM7x zcKTO~;v$*7p~tt59Y20|t$~rHf$*>#yN0e&9yXj|q6eQC1cj=j$Bf|)6ltuQ|JFri zNbf!B4LROeH?B~LlOGdP2eEF|r%&FM?{d$XRr2uY+vzoH@IDHZwBSnLJ%V6Ts3BzM zv{jgGi-07TTlC_fGAK4>uzT(Pb9qpceupbG4b~$Y4pi^6c4KGP*Ypop40_NnUZ^_P z@V4~C(~Z+~G?iT6O<^nr6Q;y0KTSJ~>fSO5m?$8PTo zsZ77QF^JRhy5*AgD4-@t;+>{B7x5p1eB#ydx)BoCgvK876+RFry>ZPi*@)0xU0iyn zm?`~&txTcu7|-Rx$;FuMSmN9MM;2B_L^%VJi3SjzIsADWtYftbna2_fXyGA2umCKZ zblkGqy;N%_-u(mYIhod9Bt+&lk%!hF8G-VJFp|S@w1)0SKh_0h_GG@6{p`lh!LgNj z^L3|6UoV(dQjSId&dznJZ^^;TDmDv3bUFJ}3QWEFdvY2S@~J;2K4fOftTKi1Adc9! zwM9cAF)Al$+SbWSuHE-R2F31=)>5A89xX)>^9Za&a&uP{@89=N6?KUKNNXo>@Ich-F)kc%j;{P&!pJck&JL<$o;^&P^!9DzX8r1vTGDd``eSILh4e?(-{ zp?UiIsQb%;!p)=B692c3TS$FtB%=eqY#0^?C8odr*BrR^E?<%7Q*1_My+GB4rOvO1 z#Xv|DC5Jj`QOX^z79~3k#w2B*zmsO`IIw4y3UpxE+(;Acme@#xX-7#zA0sTq@%qeZ zmvTPw>(R`5X#n3;Oag@_V+y2BEty7GzX@#y?rX-^Acqsr`ALs%UNTDmc%TwrNK7qf zG**u~?Zq~CWYV9CPoEy9EoRy~-dtQN+<_LW*ku<|iYvc$D6fh3A94lsKtBW|J7+n} zrt8tnKu3qiJ!7MPrIC;?BDopm7`EtM5c{^|Jta{o)l*`>6n$Lg_0)f6b>(tm#Bs?9 zwg@{}2qtr%3Q3V_RJ93ltYy;J{|i*VUTHA-Ve4>(>&Hfar0><{e22bwWWH*0X*@J} zBZG)>A+bgkiUQ^ibvH?FNc^HU?IYJ+M9E8sDK}eS{qgo!CVv`@GE!mvKGydNlaCsg z21l_y=T;vMN3;vCIDae|r!nFUu;M$phfrM~)EMiGP*|svEV?Cbshl3ZWg1M}?OA{j z|3WY)Y0BWN>sI!6!qUYW?YV=&=`m^i;%@YM6ghwH9z+D_=;&E`Py&Z|0nqm9tw)&8BM9wm#MfKk;Z!|1bTloBLhkmnoZ_-WXz? zd-UtgcN+1Wl3_xNKZNlLR+|S}&Gw4?I(6ym)OUB~UNT;6HB{ZOcQhI5g9q+KxZ0G7LveWL$wi>eU5xai()|y{t&z(QSe_y4)*?w8v$~Vj2%+qdQqmb+qYPIt8O`aC`ET;?^O zH(h`GTD7eFepAmiP(JZXQ$Srha5^q@UwiC^?YH9-X61d^-aK96O-Ha>CEqrNlRtXo z_ifLuto~`X+imjA`kY(co4I#Qm9xF*6;n3nfszyFi68Ua&+T=hSqX%-aC_~ZS?^e@ zzvg%Nwr{-&d(U6IHO*wp>53z{`tB1J6fKGl@<%940Gm30b3NBUV%cu MEt12Xs{elz0F7-dC;$Ke From 2bc00ced8108d19526f2965ac3ac1f8c6c3e3573 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 23 Mar 2022 10:55:57 +0300 Subject: [PATCH 41/47] Removed unnecessary the option class --- .../EShopOnAbpPublicWebModule.cs | 27 ++++++++++--------- .../Options/RemoteServices.cs | 14 ---------- .../EShopOnAbp.PublicWeb/Pages/Index.cshtml | 20 +++++++------- .../BasketServiceModule.cs | 18 ++++++------- 4 files changed, 34 insertions(+), 45 deletions(-) delete mode 100644 apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs b/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs index 4a09d595..b1e009f4 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/EShopOnAbpPublicWebModule.cs @@ -1,25 +1,32 @@ using EShopOnAbp.BasketService; using EShopOnAbp.CatalogService; using EShopOnAbp.Localization; +using EShopOnAbp.OrderingService; using EShopOnAbp.PaymentService; +using EShopOnAbp.PaymentService.PaymentMethods; +using EShopOnAbp.PublicWeb.AnonymousUser; +using EShopOnAbp.PublicWeb.Components.Toolbar.Cart; using EShopOnAbp.PublicWeb.Menus; +using EShopOnAbp.PublicWeb.PaymentMethods; using EShopOnAbp.Shared.Hosting.AspNetCore; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using StackExchange.Redis; using System; using System.Net.Http.Headers; -using EShopOnAbp.OrderingService; using Volo.Abp; using Volo.Abp.Account; using Volo.Abp.AspNetCore.Authentication.OpenIdConnect; using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; using Volo.Abp.AspNetCore.SignalR; @@ -27,21 +34,14 @@ using Volo.Abp.AutoMapper; using Volo.Abp.Caching; using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.EventBus.RabbitMq; +using Volo.Abp.Http.Client; using Volo.Abp.Http.Client.IdentityModel.Web; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; -using Yarp.ReverseProxy.Transforms; -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling; -using EShopOnAbp.PublicWeb.Components.Toolbar.Cart; -using EShopOnAbp.PublicWeb.PaymentMethods; -using EShopOnAbp.PaymentService.PaymentMethods; -using EShopOnAbp.PublicWeb.AnonymousUser; -using Microsoft.Extensions.Configuration; using Volo.Abp.VirtualFileSystem; -using EShopOnAbp.PublicWeb.Options; +using Yarp.ReverseProxy.Transforms; namespace EShopOnAbp.PublicWeb; @@ -78,7 +78,6 @@ public class EShopOnAbpPublicWebModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; - var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); ConfigureBasketHttpClient(context); @@ -94,7 +93,11 @@ public class EShopOnAbpPublicWebModule : AbpModule ); }); - Configure(options => { options.Default.BaseUrl = configuration["RemoteServices:Default:BaseUrl"]; }); + context.Services.Configure(options => + { + options.RemoteServices.Default = + new RemoteServiceConfiguration(configuration["RemoteServices:Default:BaseUrl"]); + }); Configure(options => { options.IsEnabled = true; }); diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs b/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs deleted file mode 100644 index 32dd1953..00000000 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/Options/RemoteServices.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace EShopOnAbp.PublicWeb.Options -{ - public class RemoteServices - { - public Default Default { get; set; } = new(); - } - - public class Default - { - public string BaseUrl { get; set; } - } -} - - diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml b/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml index 7d7cb58b..e19737e6 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/Pages/Index.cshtml @@ -1,12 +1,12 @@ @page @using EShopOnAbp.Localization -@using EShopOnAbp.PublicWeb.Options @using Microsoft.Extensions.Localization @using System.Globalization @using Microsoft.Extensions.Options +@using Volo.Abp.Http.Client @model EShopOnAbp.PublicWeb.Pages.IndexModel @inject IStringLocalizer L -@inject IOptions options +@inject IOptions options @{ const int productsColumnSize = 4; // TODO: update abp-column helper to plain html for proper row and columns css @@ -14,12 +14,12 @@ } @section styles{ - + } @section scripts { - - + + } @if (Model.HasRemoteServiceError) @@ -31,7 +31,7 @@

      @pageHeader

      - @for (int i = 0; i < Math.Ceiling(Model.Products.Count / (double) productsColumnSize); i++) + @for (int i = 0; i < Math.Ceiling(Model.Products.Count / (double)productsColumnSize); i++) { @for (int j = 0; j < productsColumnSize; j++) @@ -41,7 +41,7 @@ { var product = Model.Products[(i * productsColumnSize) + j]; var productPrice = product.Price.ToString("C", new CultureInfo("en-US")); - string productImage = !product.ImageName.IsNullOrEmpty() ? $"{options.Value.Default.BaseUrl}product-images/{product.ImageName}" : $"{options.Value.Default.BaseUrl}product-images/@product.ImageName"; + string productImage = !product.ImageName.IsNullOrEmpty() ? $"{options.Value.RemoteServices.Default.BaseUrl}product-images/{product.ImageName}" : $"{options.Value.RemoteServices.Default.BaseUrl}product-images/@product.ImageName"; string buyText = L["Index:AddToBasket"];
      @@ -50,10 +50,10 @@ @product.Code - @L["StockCount"]: @product.StockCount
      - +
      - @if(product.StockCount > 0) - { + @if (product.StockCount > 0) + { } else diff --git a/services/basket/src/EShopOnAbp.BasketService/BasketServiceModule.cs b/services/basket/src/EShopOnAbp.BasketService/BasketServiceModule.cs index 97bef87e..5f84825a 100644 --- a/services/basket/src/EShopOnAbp.BasketService/BasketServiceModule.cs +++ b/services/basket/src/EShopOnAbp.BasketService/BasketServiceModule.cs @@ -28,18 +28,18 @@ namespace EShopOnAbp.BasketService; typeof(BasketServiceContractsModule), typeof(EShopOnAbpSharedHostingMicroservicesModule) )] -public class BasketServiceModule : AbpModule +public class BasketServiceModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = hostingEnvironment.IsDevelopment(); - + var configuration = context.Services.GetConfiguration(); ConfigureAutoMapper(); - ConfigureAspNetCoreRouting(context); + ConfigureAspNetCoreRouting(); ConfigureGrpc(context); ConfigureDistributedCache(); ConfigureVirtualFileSystem(); @@ -48,7 +48,7 @@ public class BasketServiceModule : AbpModule ConfigureAutoApiControllers(); } - private void ConfigureAspNetCoreRouting(ServiceConfigurationContext context) + private void ConfigureAspNetCoreRouting() { Configure(options => { @@ -91,7 +91,7 @@ public class BasketServiceModule : AbpModule app.UseUnitOfWork(); app.UseConfiguredEndpoints(); } - + private void ConfigureSwagger(ServiceConfigurationContext context, IConfiguration configuration) { SwaggerConfigurationHelper.ConfigureWithAuth( @@ -105,7 +105,7 @@ public class BasketServiceModule : AbpModule apiTitle: "Basket Service API" ); } - + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { JwtBearerConfigurationHelper.Configure(context, "BasketService"); @@ -128,7 +128,7 @@ public class BasketServiceModule : AbpModule .AllowCredentials(); }); }); - + Configure(options => { options.AutoValidate = false; }); } @@ -142,12 +142,12 @@ public class BasketServiceModule : AbpModule private void ConfigureGrpc(ServiceConfigurationContext context) { - context.Services.AddGrpcClient((services, options) => + context.Services.AddGrpcClient((services, options) => { var remoteServiceOptions = services.GetRequiredService>().CurrentValue; var catalogServiceConfiguration = remoteServiceOptions.RemoteServices.GetConfigurationOrDefault("Catalog"); var catalogGrpcUrl = catalogServiceConfiguration.GetOrDefault("GrpcUrl"); - + options.Address = new Uri(catalogGrpcUrl); }); } From 4bbc6e4a4384ffc239d74ae29d51ece51edfd4e4 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 23 Mar 2022 21:35:49 +0300 Subject: [PATCH 42/47] removed ocelot configurations and dependency --- .../EShopOnAbp.WebPublicGateway/ocelot.json | 113 ------------------ .../web/src/EShopOnAbp.WebGateway/ocelot.json | 90 -------------- .../EShopOnAbp.Shared.Hosting.Gateways.csproj | 6 - .../OcelotConfiguration.cs | 20 ---- 4 files changed, 229 deletions(-) delete mode 100644 gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json delete mode 100644 gateways/web/src/EShopOnAbp.WebGateway/ocelot.json delete mode 100644 shared/EShopOnAbp.Shared.Hosting.Gateways/OcelotConfiguration.cs diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json deleted file mode 100644 index a436b432..00000000 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/ocelot.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "GlobalConfiguration": { - "BaseUrl": "https://localhost:44373" - }, - "Routes": [ - { - "ServiceKey": "Account Service", - "DownstreamPathTemplate": "/api/account/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44330 - } - ], - "UpstreamPathTemplate": "/api/account/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Administration Service", - "DownstreamPathTemplate": "/api/abp/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44353 - } - ], - "UpstreamPathTemplate": "/api/abp/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ], - "QoSOptions": { - "ExceptionsAllowedBeforeBreaking": 3, - "DurationOfBreak": 3000, - "TimeoutValue": 2500 - } - }, - { - "ServiceKey": "Catalog Service", - "DownstreamPathTemplate": "/api/catalog/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44354 - } - ], - "UpstreamPathTemplate": "/api/catalog/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ], - "QoSOptions": { - "ExceptionsAllowedBeforeBreaking": 3, - "DurationOfBreak": 3000, - "TimeoutValue": 2500 - } - }, - { - "ServiceKey": "Catalog Service", - "DownstreamPathTemplate": "/product-images/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44354 - } - ], - "UpstreamPathTemplate": "/product-images/{everything}", - "UpstreamHttpMethod": [ "Get" ] - }, - { - "ServiceKey": "Basket Service", - "DownstreamPathTemplate": "/api/basket/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44355 - } - ], - "UpstreamPathTemplate": "/api/basket/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ], - "QoSOptions": { - "ExceptionsAllowedBeforeBreaking": 3, - "DurationOfBreak": 3000, - "TimeoutValue": 2500 - } - }, - { - "ServiceKey": "Ordering Service", - "DownstreamPathTemplate": "/api/ordering/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44356 - } - ], - "UpstreamPathTemplate": "/api/ordering/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Payment Service", - "DownstreamPathTemplate": "/api/payment/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44357 - } - ], - "UpstreamPathTemplate": "/api/payment/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - } - ] -} \ No newline at end of file diff --git a/gateways/web/src/EShopOnAbp.WebGateway/ocelot.json b/gateways/web/src/EShopOnAbp.WebGateway/ocelot.json deleted file mode 100644 index affe35be..00000000 --- a/gateways/web/src/EShopOnAbp.WebGateway/ocelot.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "GlobalConfiguration": { - "BaseUrl": "https://localhost:44372" - }, - "Routes": [ - { - "ServiceKey": "Identity Service", - "DownstreamPathTemplate": "/api/identity/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44351 - } - ], - "UpstreamPathTemplate": "/api/identity/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Account Service", - "DownstreamPathTemplate": "/api/account/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44330 - } - ], - "UpstreamPathTemplate": "/api/account/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Administration Service", - "DownstreamPathTemplate": "/api/abp/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44353 - } - ], - "UpstreamPathTemplate": "/api/abp/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ], - "QoSOptions": { - "ExceptionsAllowedBeforeBreaking": 3, - "DurationOfBreak": 5000, - "TimeoutValue": 2500 - } - }, - { - "ServiceKey": "Administration Service", - "DownstreamPathTemplate": "/api/feature-management/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44353 - } - ], - "UpstreamPathTemplate": "/api/feature-management/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Administration Service", - "DownstreamPathTemplate": "/api/permission-management/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44353 - } - ], - "UpstreamPathTemplate": "/api/permission-management/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - }, - { - "ServiceKey": "Administration Service", - "DownstreamPathTemplate": "/api/setting-management/{everything}", - "DownstreamScheme": "https", - "DownstreamHostAndPorts": [ - { - "Host": "localhost", - "Port": 44353 - } - ], - "UpstreamPathTemplate": "/api/setting-management/{everything}", - "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] - } - ] -} \ No newline at end of file diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj index 6f653505..c6e72cb3 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbp.Shared.Hosting.Gateways.csproj @@ -5,15 +5,9 @@ - - - - - - diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/OcelotConfiguration.cs b/shared/EShopOnAbp.Shared.Hosting.Gateways/OcelotConfiguration.cs deleted file mode 100644 index 288b697e..00000000 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/OcelotConfiguration.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Collections.Generic; - -namespace EShopOnAbp.Shared.Hosting.Gateways -{ - public class OcelotConfiguration - { - public string ServiceKey { get; set; } - public string DownstreamPathTemplate { get; set; } - public string DownstreamScheme { get; set; } - public string UpstreamPathTemplate { get; set; } - public List UpstreamHttpMethod { get; set; } - public List DownstreamHostAndPorts { get; set; } - } - - public class HostAndPort - { - public string Host { get; set; } - public int Port { get; set; } - } -} \ No newline at end of file From 1d33884d0f95265a743525b742c0584af9bdd3ae Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 23 Mar 2022 21:37:43 +0300 Subject: [PATCH 43/47] moved yarp configuration to explicit yarp file for easier overriding at deployment --- .../appsettings.json | 84 --------------- .../src/EShopOnAbp.WebPublicGateway/yarp.json | 100 ++++++++++++++++++ .../web/src/EShopOnAbp.WebGateway/yarp.json | 86 +++++++++++++++ 3 files changed, 186 insertions(+), 84 deletions(-) create mode 100644 gateways/web-public/src/EShopOnAbp.WebPublicGateway/yarp.json create mode 100644 gateways/web/src/EShopOnAbp.WebGateway/yarp.json diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json index 924dbd44..f1417cac 100644 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/appsettings.json @@ -22,89 +22,5 @@ }, "ElasticSearch": { "Url": "http://localhost:9200" - }, - "ReverseProxy": { - "Routes": { - "account-route": { - "ClusterId": "account-cluster", - "Match": { - "Path": "/api/account/{**everything}" - } - }, - "administration-route": { - "ClusterId": "administration-cluster", - "Match": { - "Path": "/api/abp/{**everything}" - } - }, - "catalog-route": { - "ClusterId": "catalog-cluster", - "Match": { - "Path": "/api/catalog/{**everything}" - } - }, - "basket-route": { - "ClusterId": "basket-cluster", - "Match": { - "Path": "/api/basket/{**everything}" - } - }, - "ordering-route": { - "ClusterId": "ordering-cluster", - "Match": { - "Path": "/api/ordering/{**everything}" - } - }, - "payment-route": { - "ClusterId": "payment-cluster", - "Match": { - "Path": "/api/payment/{**everything}" - } - } - }, - "Clusters": { - "account-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44330" - } - } - }, - "administration-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44353" - } - } - }, - "catalog-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44354" - } - } - }, - "basket-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44355" - } - } - }, - "ordering-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44356" - } - } - }, - "payment-cluster": { - "Destinations": { - "destination1": { - "Address": "https://localhost:44357" - } - } - } - } } } diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/yarp.json b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/yarp.json new file mode 100644 index 00000000..7e3b617a --- /dev/null +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/yarp.json @@ -0,0 +1,100 @@ +{ + "ReverseProxy": { + "Routes": { + "Account Service": { + "ClusterId": "account-cluster", + "Match": { + "Path": "/api/account/{**everything}" + } + }, + "Administration Service": { + "ClusterId": "administration-cluster", + "Match": { + "Path": "/api/abp/{**everything}" + } + }, + "Catalog Service": { + "ClusterId": "catalog-cluster", + "Match": { + "Path": "/api/catalog/{**everything}" + } + }, + "Basket Service": { + "ClusterId": "basket-cluster", + "Match": { + "Path": "/api/basket/{**everything}" + } + }, + "Ordering Service": { + "ClusterId": "ordering-cluster", + "Match": { + "Path": "/api/ordering/{**everything}" + } + }, + "Payment Service": { + "ClusterId": "payment-cluster", + "Match": { + "Path": "/api/payment/{**everything}" + } + }, + "product-picture-route": { + "ClusterId": "product-picture-cluster", + "Match": { + "Path": "/product-images/{**everything}", + "Methods" : [ "GET" ] + } + } + }, + "Clusters": { + "account-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44330" + } + } + }, + "administration-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + }, + "catalog-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44354" + } + } + }, + "product-picture-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44354" + } + } + }, + "basket-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44355" + } + } + }, + "ordering-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44356" + } + } + }, + "payment-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44357" + } + } + } + } + } +} \ No newline at end of file diff --git a/gateways/web/src/EShopOnAbp.WebGateway/yarp.json b/gateways/web/src/EShopOnAbp.WebGateway/yarp.json new file mode 100644 index 00000000..424e598e --- /dev/null +++ b/gateways/web/src/EShopOnAbp.WebGateway/yarp.json @@ -0,0 +1,86 @@ +{ + "ReverseProxy": { + "Routes": { + "Account Service": { + "ClusterId": "account-cluster", + "Match": { + "Path": "/api/account/{**everything}" + } + }, + "Identity Service": { + "ClusterId": "identity-cluster", + "Match": { + "Path": "/api/identity/{**everything}" + } + }, + "Administration Service": { + "ClusterId": "administration-cluster", + "Match": { + "Path": "/api/abp/{**everything}" + } + }, + "feature-management-route": { + "ClusterId": "feature-management-cluster", + "Match": { + "Path": "/api/feature-management/{**everything}" + } + }, + "permission-management-route": { + "ClusterId": "permission-management-cluster", + "Match": { + "Path": "/api/permission-management/{**everything}" + } + }, + "setting-management-route": { + "ClusterId": "setting-management-cluster", + "Match": { + "Path": "/api/setting-management/{**everything}" + } + } + }, + "Clusters": { + "account-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44330" + } + } + }, + "identity-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44351" + } + } + }, + "administration-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + }, + "feature-management-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + }, + "permission-management-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + }, + "setting-management-cluster": { + "Destinations": { + "destination1": { + "Address": "https://localhost:44353" + } + } + } + } + } +} \ No newline at end of file From e4f144af09faf84be6669e1214921ed61f8533b9 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 23 Mar 2022 21:38:04 +0300 Subject: [PATCH 44/47] Added yarp configuration and builder extensions --- .../EShopOnAbpSharedHostingGatewaysModule.cs | 12 ++--- .../GatewayHostBuilderExtensions.cs | 6 +-- .../YarpSwaggerUIBuilderExtensions.cs | 52 +++++++++++++++++++ 3 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 shared/EShopOnAbp.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs index a28d8444..11c1d509 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/EShopOnAbpSharedHostingGatewaysModule.cs @@ -1,24 +1,20 @@ using EShopOnAbp.Shared.Hosting.AspNetCore; using Microsoft.Extensions.DependencyInjection; -using Ocelot.DependencyInjection; -using Ocelot.Provider.Polly; -using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; using Volo.Abp.Modularity; namespace EShopOnAbp.Shared.Hosting.Gateways { [DependsOn( - typeof(EShopOnAbpSharedHostingAspNetCoreModule), - typeof(AbpAspNetCoreMvcUiMultiTenancyModule) + typeof(EShopOnAbpSharedHostingAspNetCoreModule) )] public class EShopOnAbpSharedHostingGatewaysModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); - - // context.Services.AddOcelot(configuration) - // .AddPolly(); + + context.Services.AddReverseProxy() + .LoadFromConfig(configuration.GetSection("ReverseProxy")); } } } \ No newline at end of file diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/GatewayHostBuilderExtensions.cs b/shared/EShopOnAbp.Shared.Hosting.Gateways/GatewayHostBuilderExtensions.cs index b53c608f..a2663f9a 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Gateways/GatewayHostBuilderExtensions.cs +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/GatewayHostBuilderExtensions.cs @@ -4,18 +4,18 @@ namespace Microsoft.Extensions.Hosting; public static class AbpHostingHostBuilderExtensions { - public const string AppOcelotJsonPath = "ocelot.json"; + public const string AppYarpJsonPath = "yarp.json"; public static IHostBuilder AddOcelotJson( this IHostBuilder hostBuilder, bool optional = true, bool reloadOnChange = true, - string path = AppOcelotJsonPath) + string path = AppYarpJsonPath) { return hostBuilder.ConfigureAppConfiguration((_, builder) => { builder.AddJsonFile( - path: AppOcelotJsonPath, + path: AppYarpJsonPath, optional: optional, reloadOnChange: reloadOnChange ); diff --git a/shared/EShopOnAbp.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs b/shared/EShopOnAbp.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs new file mode 100644 index 00000000..7a8cb5e0 --- /dev/null +++ b/shared/EShopOnAbp.Shared.Hosting.Gateways/YarpSwaggerUIBuilderExtensions.cs @@ -0,0 +1,52 @@ +using System.Linq; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Volo.Abp; +using Yarp.ReverseProxy.Configuration; + +namespace EShopOnAbp.Shared.Hosting.Gateways; + +public static class YarpSwaggerUIBuilderExtensions +{ + public static IApplicationBuilder ConfigureSwaggerUIWithYarp(this IApplicationBuilder app, + ApplicationInitializationContext context) + { + app.UseSwagger(); + app.UseSwaggerUI(options => + { + var configuration = context.ServiceProvider.GetRequiredService(); + var logger = context.ServiceProvider.GetRequiredService>(); + var proxyConfigProvider = context.ServiceProvider.GetRequiredService(); + var yarpConfig = proxyConfigProvider.GetConfig(); + + var routedClusters = yarpConfig.Clusters + .SelectMany(t => t.Destinations, + (clusterId, destination) => new {clusterId.ClusterId, destination.Value}); + + var groupedClusters = routedClusters + .GroupBy(q => q.Value.Address) + .Select(t => t.First()) + .Distinct() + .ToList(); + + foreach (var clusterGroup in groupedClusters) + { + var routeConfig = yarpConfig.Routes.FirstOrDefault(q => + q.ClusterId == clusterGroup.ClusterId); + if (routeConfig == null) + { + logger.LogWarning($"Swagger UI: Couldn't find route configuration for {clusterGroup.ClusterId}..."); + continue; + } + + options.SwaggerEndpoint($"{clusterGroup.Value.Address}/swagger/v1/swagger.json", $"{routeConfig.RouteId} API"); + options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); + } + }); + + return app; + } +} \ No newline at end of file From 679d04d2636d7277d9766b9ed6990500b4941f7d Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 23 Mar 2022 21:38:13 +0300 Subject: [PATCH 45/47] updated gateways --- .../EShopOnAbpWebPublicGatewayModule.cs | 82 ++++++------------- .../EShopOnAbpWebGatewayModule.cs | 29 +------ 2 files changed, 25 insertions(+), 86 deletions(-) diff --git a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs index 00f4da4f..6609c638 100644 --- a/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs +++ b/gateways/web-public/src/EShopOnAbp.WebPublicGateway/EShopOnAbpWebPublicGatewayModule.cs @@ -1,11 +1,8 @@ using EShopOnAbp.Shared.Hosting.Gateways; using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Ocelot.Middleware; using System.Collections.Generic; -using System.Linq; using EShopOnAbp.Shared.Hosting.AspNetCore; using Microsoft.AspNetCore.Http; using Volo.Abp; @@ -24,24 +21,24 @@ public class EShopOnAbpWebPublicGatewayModule : AbpModule var configuration = context.Services.GetConfiguration(); var hostingEnvironment = context.Services.GetHostingEnvironment(); - // SwaggerConfigurationHelper.ConfigureWithAuth( - // context: context, - // authority: configuration["AuthServer:Authority"], - // scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ - // { - // { "AccountService", "Account Service API" }, - // { "IdentityService", "Identity Service API" }, - // { "AdministrationService", "Administration Service API" }, - // { "CatalogService", "Catalog Service API" }, - // { "BasketService", "Basket Service API" }, - // { "PaymentService", "Payment Service API" }, - // { "OrderingService", "Ordering Service API" }, - // }, - // apiTitle: "WebPublic Gateway" - // ); + SwaggerConfigurationHelper.ConfigureWithAuth( + context: context, + authority: configuration["AuthServer:Authority"], + scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ + { + { "AccountService", "Account Service API" }, + { "IdentityService", "Identity Service API" }, + { "AdministrationService", "Administration Service API" }, + { "CatalogService", "Catalog Service API" }, + { "BasketService", "Basket Service API" }, + { "PaymentService", "Payment Service API" }, + { "OrderingService", "Ordering Service API" }, + }, + apiTitle: "WebPublic Gateway" + ); - context.Services.AddReverseProxy() - .LoadFromConfig(configuration.GetSection("ReverseProxy")); + // context.Services.AddReverseProxy() + // .LoadFromConfig(configuration.GetSection("ReverseProxy")); } public override void OnApplicationInitialization(ApplicationInitializationContext context) @@ -56,45 +53,12 @@ public class EShopOnAbpWebPublicGatewayModule : AbpModule app.UseCorrelationId(); app.UseAbpSerilogEnrichers(); - // app.UseSwagger(); - // app.UseSwaggerUI(options => - // { - // var configuration = context.ServiceProvider.GetRequiredService(); - // var routes = configuration.GetSection("Routes").Get>(); - // var routedServices = routes - // .GroupBy(t => t.ServiceKey) - // .Select(r => r.First()) - // .Distinct(); - // - // foreach (var config in routedServices) - // { - // var url = - // $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; - // if (!env.IsDevelopment()) - // { - // url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}"; - // } - // - // options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); - // options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - // options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); - // } - // }); - // - // app.UseRewriter(new RewriteOptions() - // // Regex for "", "/" and "" (whitespace) - // .AddRedirect("^(|\\|\\s+)$", "/swagger")); - // - // app.UseOcelot().Wait(); - // app.MapWhen( - // ctx => ctx.Request.Path.ToString().TrimEnd('/').Equals(""), - // app2 => - // { - // app2.UseRouting(); - // // app2.UseConfiguredEndpoints(); - // app2.UseEndpoints(endpoints => endpoints.MapReverseProxy()); - // } - // ); + app.ConfigureSwaggerUIWithYarp(context); + + app.UseRewriter(new RewriteOptions() + // Regex for "", "/" and "" (whitespace) + .AddRedirect("^(|\\|\\s+)$", "/swagger")); + app.UseRouting(); app.UseEndpoints(endpoints => { diff --git a/gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs b/gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs index 232fafb2..ae4cb249 100644 --- a/gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs +++ b/gateways/web/src/EShopOnAbp.WebGateway/EShopOnAbpWebGatewayModule.cs @@ -4,7 +4,6 @@ using Microsoft.AspNetCore.Cors; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Ocelot.Middleware; using System; using System.Collections.Generic; using System.Linq; @@ -71,39 +70,15 @@ public class EShopOnAbpWebGatewayModule : AbpModule { app.UseDeveloperExceptionPage(); } - app.UseCorrelationId(); app.UseAbpSerilogEnrichers(); app.UseCors(); - app.UseSwagger(); - app.UseSwaggerUI(options => - { - var configuration = context.ServiceProvider.GetRequiredService(); - var routes = configuration.GetSection("Routes").Get>(); - var routedServices = routes - .GroupBy(t => t.ServiceKey) - .Select(r => r.First()) - .Distinct(); - - foreach (var config in routedServices) - { - var url = - $"{config.DownstreamScheme}://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}:{config.DownstreamHostAndPorts.FirstOrDefault()?.Port}"; - if (!env.IsDevelopment()) - { - url = $"https://{config.DownstreamHostAndPorts.FirstOrDefault()?.Host}"; - } - - options.SwaggerEndpoint($"{url}/swagger/v1/swagger.json", $"{config.ServiceKey} API"); - options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); - } - }); + app.ConfigureSwaggerUIWithYarp(context); app.UseRewriter(new RewriteOptions() // Regex for "", "/" and "" (whitespace) .AddRedirect("^(|\\|\\s+)$", "/swagger")); - app.UseOcelot().Wait(); + // app.UseOcelot().Wait(); } } \ No newline at end of file From 536fcd316a4e28fe287c3be547f7b150c2c5bcfc Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 24 Mar 2022 10:24:25 +0300 Subject: [PATCH 46/47] Show the image on the cart correctly --- .../Components/Toolbar/Cart/Default.cshtml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/Components/Toolbar/Cart/Default.cshtml b/apps/public-web/src/EShopOnAbp.PublicWeb/Components/Toolbar/Cart/Default.cshtml index 5995e593..278186a5 100644 --- a/apps/public-web/src/EShopOnAbp.PublicWeb/Components/Toolbar/Cart/Default.cshtml +++ b/apps/public-web/src/EShopOnAbp.PublicWeb/Components/Toolbar/Cart/Default.cshtml @@ -1,7 +1,11 @@ @using EShopOnAbp.Localization @using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.Extensions.Options +@using Volo.Abp.Http.Client @inject IHtmlLocalizer L @model EShopOnAbp.BasketService.Services.BasketDto +@inject IOptions options +

      =|uTTJGY!sKidOy8X?Rkm+}!R; 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 diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/oki.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/oki.jpg deleted file mode 100644 index 6fefeec6e312d8baf88ca0a51217e42f36a2b39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15514 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 diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/playstation.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/playstation.jpg deleted file mode 100644 index 880832401aa9153eb759d338f4d9bbf51dc601dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12477 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 F{TBdKa8LjM diff --git a/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/rampage.jpg b/apps/public-web/src/EShopOnAbp.PublicWeb/wwwroot/product-images/rampage.jpg deleted file mode 100644 index e49660df170acdceee2a5c4167a09dbdd2baf95b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29142 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

    =|uTTJGY!sKidOy8X?Rkm+}!R; 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 literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/oki.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/oki.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fefeec6e312d8baf88ca0a51217e42f36a2b39e GIT binary patch literal 15514 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 literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/playstation.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/playstation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..880832401aa9153eb759d338f4d9bbf51dc601dd GIT binary patch literal 12477 zcmeHtXEBGllf@WAO;LIVHn44(;Ar|^5 z5-bvcJm4o9Mmn6|y6(rlU`#S7kRIDFEhTwIaf@He@yjAd-z zQdA;>6XfZ}FJ63s>7_d|hm5tYr*7AaYPo*YiBW7;S>|3qa{8(_@NLWi#~rM^W$UWB z{Exo>d?Zu++u|hg%tY;q{OyI_+{5gJ`Xi^s!n3Y>I`8{3#uZdr+Fq~vGiKia z8ibq*|JFh4rBxQrUa9?be|zpfG_4VUV|jaAI71Q6e7FJV`*ZwWi1XLcSi@(?#Z5?b6N_uvyF$+t zAds<5kVBV5_(y*6lS!twAyXvdlrZB~SF!hQ*z*!c-{(0qyo$c(1G)h`>60r! zEb!HO51UR_WEAA1QB%blPz~`1*8DKg7}Nf>+JbOk{SD>3EXeSCagro6_giX{edk{) zS(cg~-nWM>hrrv`u{+XZTD~9MPJ;?imr}X`DD> z2Jp1+x*)*MHfBS>4=0g`dMjn3&8i}r>qSa{%_ZAA=g7d}a1@^I=e9M9`W#MsCB%iv zK-0Zpm9U`sz&rm;M;!0>A0gsjH;LUtQ9_r;IWV)_O}n<4s8|ozM5*T0fvS^Vv)>+! z&1kCaIw0-ozrGm8j~BRvxu;i+S0RrmJIvwo-; zCk%^w`-X;h9gEqY6;YMttLojuSCgQTl*JR+m!V>L(QlieNbL?~AGQdy2}%GCMFGdZ z3n?a(l}AZKd0VZZLZ-H1vOV?lIO>qqIKiyVT`cBV(7X=C>MG{e>hdX^#;Vl6D=1#h zymxM2kPRZ8Lanu_IPs+uI!g$ROPWEIyF2S|QKibva%-lfvewafDy8`4f_z^Eo+_D| zHkVPoexkc#+nrNa5+_DP#CSk#bYd4^MY~S^Phc6=ys{8q6AgAf>(V(g&_aMpG)&<|;E(9+p9JwvhW>r3Py815Y@?klS1a9nAgmAKg3fYJ&>*zYx?X1+U~ z=Gyx@7r|!@A=vzt-th|fKX7_@XxF%1AEm2h$3M>iD}LW$a%5^cjSbHNE5=y%F>l~0 zCXDL{ZM$HX7?5k2Sz?b&8wiC~%!6Zuw!I^THW&JFo?3=QIw(Cm!EkS^=cq{tr6z}d z^;Rsa@@ut(@*p3Cxi=D&xT3suYEo zhXhMHfbvoGt)~pp=eT^AqVg4y$I(OkfYlZy#3{IkPWzwO_$DvgUS-!$?IzZxvt{(j zA?-1S-NrQy(&Wj)_3Eb%Bd3%Cf<|+=5lSh#lL^}?m!<*j0!Q}a16$vI5zDE|wZlt# z;QY+dUiVuWoS9+)6cE;|LKhAK(kDPiOqJD#6qu^KJq4>g*a_|1d08Gjp?qOn=|?DM z3L_|c`2)1S335$uZjRdf_M2L)!vyQTYfY#t!d)f`Sn~ zkAZp{sjFI5 z`_YtHCX}`PsT-O2oG`S}AWZ1cH?SYdLNixYr@Lus=~KPM8dbR&Z3zoA6|9 z^3tF35SDMgvNNT25MZxZvojh}F0b-D4&b@uj%K()iJK5@GNNN3!K4&yna4Vtn)|-a@(&OP?;;95a3OyOOHAM?>Nw2&GlVFRd-loBz9@9=Km%C zk4epx*oThr1$2bdWN@RCItq~!kl4{%Y9zjWj_1wsi&!4rb?}G8nIN4e4rpq&{&I5D zYPOyY<});Xd3%s5zhHuarj-piFgURXpJ6^@&FX&NPIudBEV0~qev;8{yc)C<`G1=IF9;+#{^4c- zI-tqrbRpI?^J`x3O3?tMbh^uOw*<7^06sRoo-bV#{Q=(*amx?5`2L5+ukZYEb8(dd zFs2bu{fYLnHD(l#iTOp1gb|>IX_e{I-3pdZ@nu=6%-OlvNKzdN0Eh|pn4^O2T|}Xl z=6Q*VTwz)U$*0vlnv=td4#edQNPMmNo2`v|wgK%_i3Su!XB8S@rKCPoi0f4|@cnY& z4t9(iSZD)H=;->lXbAxhg$Zp2C011kcJ1*5_R@DP_p!V75Qf$ZB78{$d!UH2tk)Iu zI8O~61rb&C9QCh!OsQ$sd^GHM?pbY2tnKNX7@C^Vg?0ZWgV1tJ@1uVJgIkx*RCr7B zx4^vp8yGdNtLDE5t`&;Td7Dj*)jz?%HUAeXB{NBdeDm{J*(9USEGIL~Un_&fn7B!U zg9Bs1cVpkNzI#EMEcTG}PVD2Cl)(Fue!9~4f<20LIK2w(nWi;I&o$O|>zX3Io(VXh+;=l9%#b9cs`jmO`lL{e|)^2AQo zGH=c_CdYkKSyzcrOjb8DACy}~Q)5t(uQu`q+(>bXoUCNJjpvBju5*A=@t(%C|))=CQ@jFFf0Kom}_86n4kE(ivl7b#Jtg+>=hIv%qzQ{+Cjg8 z!u5b+P1TED)W!RgCQd4|y3`B*TYmH6A82CiS%++071dAep>bu*KdRUk4c+q5x$yH# z`B~{xaNUUxst#pP<3mO^bkG$q>Nt(vR?O}D`X3)tG%r2_1oz&>!?*+Hh$UgddjN@IZsB!8QtF=DkxbkTGABPlZ-E8CKfd--`dIn$!LB^q*O8dMPElu#*2`V z6EpUwevJ@Y0@`0ucoIM2a8BY%jx_ih)}h(4bdfT41E`zi)Xv9OmztreEPwKX;%WR- zmf_I6iu4ek0!_X`gCow>EHQo32k1Y8=vd|xNWLwXKJ4P-H+|k*n z#&z)F4@_Bq!K4Zb;D`QLMt2rtGWd-!beT0}ie*^7yM@MsG=$>^;Mt=r6{BaYxJ;}7 z;QeQ$Ve{H$q+xXg*|B&}KZRj}Iij-Awq=n3(I0uAgWOPTV2Vc&p^a`NGdjsOlZI@5 z?qD(dqGr3H>}6=4QD5Vz=pih(sTWkv?m?I11iFvpjVQILtZ3VfmbG!MliL(Z?zZ`l zJn-lr0f2TpLq;E}=!{_Y+dYj{t8sghF*igz$t|Z$r(@r`UjyX#$Nh8pmB2q7Q;IGn zmP|~T1^~x9foyG$c}7D3ZB) zKLcWLI`D;~&7v?uX=ZA|ql!Fa2h|iknm%?OkZ*SHevhAvMT8>6C$lGMHY(VPX<+R6 zhN+w1x>8^N2I?O0LD{rm6)zz|y{8YJ!&>{2V}$XomQOKKcm{|zCZ40z=7M(pDgQW9 z`Hxd6uBQ6r!fs`OFE~hX`ry`)iLMERlCzcrPIz9wpN?8bRfA#nq%t-brj!K!I*Bl53|PR5apzPp{O?$zYZKm|_WP_Z z{UN$s6^*mxZ|Z$u`O|005Tc{uV|u*T6S>Lnk_+!`AO_JA^CNvy z06>EY06-TfOdjROOp*lb!`f+`6h^&IiNElGxWX_efaE-ZvEKNz##x);RA<3mN^aHk zAjfSJE)_Y1+tpeLUqjBFOk_4vkp+hluhOvbbKH;SR>=$N@MfW0Zn~w=PHj&Z;=ym) z7@@C2r4;bHO4mG^5Yz}>p1x#>SgJK6HE-U! z(A5g{g2eQNzjwC|kltEtAH+3Z=L3?;bujeyph$n%E^0Gs$K~QU;adZb(dK9w;kZ<% zR27s6KPY|||1@7lgKDhQR^-QT-c+GddFs=wE|cG}P9g65b{Zahi55c2*u{tTZ9kuw ztYmw3DIVucKX-9Y*s3)09<158(imY_5Aii{SFX>w0c@gXjSk#(j(^#z&bq1p?liKp z%jlFozCS-bCLda};ioaN?3+%%x&*uzX-H5)`cR1^ARer7RUyUQrQ^HKzRvx1bmky^ z*%aQX@rx0<=jEf!zf>vRx+pLSa;s3re*gywrE%5RaRLKEzPn1^bK~`M#4LWUtD-jA zq3%|wjnL^%&7qbpZ`!GLH<{@B#$TkUdgY`iIr!3E2X$V=!(OOVY)Jm2ZWhKmBQf}S zrqac)Nsy23km7?$)L4#Yw)>X?kgCC(?B$aBx}hU_$>E~2XCmPx)}|zS1njDz5za^P zqBMTx3w3h~jw2ehNfx%l2qRjl>8~vZ&9gi_UXD^kjESf=`#jm!5k}_OB6+B z6cdW5(P6yyYN;w9kF1wNB*+vK?6(QGP!zJGPBmc{faR#v6k@Z*CtQdjFPhdI*n0#f zjb#q0ePCwfC5u0P%?Bla*7^tsj`UK;!+0`RotlEoXAX z`!a-me`&lxxVyde8d49o8P8H5QcoVmc8VH}e zZd|qk`u>w+=uTgOKOVjIU$0AN{X4;I&98@|(OsY8w^mfI@@OP4kLmOu;+ir&5b?Vu zV9dVR%7;OBNO{n|fS5)R0JCl@0HBJAXVk-rw+iGlCy`l{#AEShCF={jE&rjccxKn$UWp55@uT4mK)Zrjs!O4}i zJX&r56fQMWEyML{5jtviZce@O*E|y~8i=AY%FUCKcix_tV9LqUqc^b`8vOFl?$-pI z7~KFQ@fTj*05l$pZ=M8+nO>MPUONJ18-BCS83knDoeH?F8*GboanIk*UOuSxkM4cC zeKymQnD!<$*FjIWgyGv;(va)vM-EDkwjiy1U~j27Hy^Yq*vgtdV#ko+UE74$j)`1c zDV->E1u52o3YBqB9f(A@ZCog_~TyxJ!@^i#qbbheer&a&vU3?~Gi@o1hBXF>t?I34v zX%)v4*xNgrTYPl|&KqWu+r>A4if?W;mE|@JpLB7MVUDZ7n9zwJQdrL{(e#U)L>!Viwn=3h=GAx?rPT0DS% zk9#i5D(E8e&7rCPP-J4oYJA|O)W?Lssz#GMW+{+SQ>3c2UGTOxPn}c9-7f0_W3aPz z0x<~Ck1AMYe?+|i5CmeS0_wP30C?=M53Lk;joBVM28K2dzaSe|oqe*wihU7|G;$Rj z2r>}XqV~4ydNVs2H*MLml;$;P+(nsYSV$Z%?ytgCt`VzhCn=gc=KjDUu}^FDT$v~& zzfcmK-pf0&DlC%lgU4yrxj5VV!}crpmEexysX|J7X-9~duc=vP%J<^fHNga&icWCe zbX3h?%|N1t@Tw%?dqGrLmCFOcF?y*ec*344w+|upsafI*Fc=<~TA&>a@z|}HF7^%V z&`>$7TBoGLE@1bn;Vw+F9nIIkE7JgsD@ju28M0c)z|nJyXmZZHkG#KB8x z?BLM)_a4pNH5UU6=dn{#ukDt4S_x_}8HvVn@;J-#kd`gqOw-;3`jkuj;^ya8Yd zH9F`^tLoHVQ5*8x`=)HH11;?2udyD^206$ z7CRt?mL}+>O;GVc?Tw0R^|h~66ECO}vJZvfG)ahqpW2$HVw?snO;-9mG*OKk-7ZF} zn&T%s;x1IL5wy6V2W4>?A~YHUW(q|c*ZyI>R+>$8vNF1~BpRBZcoZCSARD zg-fGaN81(!9vt))8vZ1gH8T9o?>O!vdce(BEag1DOk1zHfIBd%tKK_lT-Y0~kxI_7cWiat*+SBIS}}A!O%*u&TuCD&fq?S8em@1WiejeiBE`N6 zm12D!vG>6Fi9BL}A#I#_4=b?{-!hGwNxc( z#`r!{oMKUllB65JRCCAokWaO|{prfNQ~usfhOT*;e2DT(>g};=GBzdv$)ms12;I=K zr(9Xqe|s(4fB5`b6Y{EzULJJyR|lIBWbp&OrIe811-fm;sym0}Nk> zV@pE{c3^2Y02I*vboSAYgCt|1<(380wsyk!I-8-k?aOk(kBkP3+kVtTarMx3r5s~6 z@q4m5Aa~oVY1nv0?E0iN0>2ELz`ZE{nX;t_9@5ng?lv!Tr_Fe<^Lc)GY~%(oXi+rr zCdbfimHhw`g;Jm-bo5PHW;rs&Ni~%#-g9ppw)2i+(R2O$lnQ7&APGUa9>-ASX_&jf zbW1_TU&XViWsYBOW2^fawz(YaC#zQ=e0+v9!)H8pE+j9B^*;C^u;NxEBI-mRS95`i z^#`-%@F$>^%_Y^d#x*7WIY&l$1#vK#mZvrU$2j-0b1%?f_9%aUovB&7l3}%NO@o2Y zK>cLm$F3#&;?ecD!}qduBgwf$wv$HB%*WpQ$u`D?0{xKD^A@*-M6rB?8El-ajFSm<$2$XWA)$Pd(Eu5zv1e1&kp(O<*x8`%B2DXzWkj@=$%IL zQBz`wbv63IOGN+!I+K35&2b;VZWp~G)B7AHCTG#bRBom1+~~bH;dy&rv{SS5mB8_r z%qcc`%XiDo=|j0B@vzCutil87S&u$pz4Q&eXM>)8l6mnNQy^v!rT(cl%$ZIn(Nv*UX^;3Y3Ai%80WTvsbzuMyom+9kKh93v^|%aG?Jw0U8iR* zb%7tWI@L`y$6Fk!zBBc~N}^VYcOmH;A#bcwrD=tu{g&coi&92y>sgFC^jixS_yTyex@0v%q$R|R-PA5L|ZZD#aPs=0=MxHX$hr<>dQ?9rp zDvC_rXv)_8E#_qQYDHvFE~ZX#mrE`>iz-KCQ)MT%{AbB}zmt!xl5Ilov}pczms{7b z&vN(RR3WNlY9|@s#dXGcI^b%&lg)Ta?hRn9a@yoT_Br4`8z*PNUG8G)5bLTRXYj7- z5gp5v84o9n5x2s>VkLJT0#DS*a9%pb2}zb(EMB%&SHZ%lMs>RiQz?ajuEX zisSVTCh zwh>?~ucQ~DV8Wy3Aoiu&7UMnMlk*QLQ;n-Iimz6aW^E(Ls@)cIvDh*yF0;*V4#lGu z`ZNx^ujjx#SvXwUnJR`PD%7NW@Un_fs$pL9%LY6!)0cROv8bZu>h9DTlE+ z;HE}DvvRQg$e7+!u&-L9gRFr%ufy}uI|4l9qy?B*mN1uS*+!-nwj#+1BLlAPxHub;!L9Sz7QF3;nb1Y#@G2 zL?+OhnmZRtrqE7f^dT-y<~cQmV*GSg*VJc>TxXdhpKcnfJfR2Oe@PR~U1R z&u<`9&})C2jifz*n}?2-7Eix09R>2z5uATdbog!TEDK6V(cp|{rS4c3q3MbemT4d- z*wJy{RJkYyZc1I96OHKbzklD3$}!K}$67VZ0AIg%TR5c?|CQ(4(yKInV!Ra}Mwd8zO;qQM6LoBK4Ub~kGCJJ{c zO!)ddR_E4_v@ogG16Aesr73eD(~FD~le3~4TeM8Krf_CrAQtLg)$|p?Iukgd`+feh z!L%uDsMO*8KF`&id(;|frxBXMkI=Ll<4ZkNqYo*j4hPZte&5s ztV>fz_R6{~-T>ClU@yy~3dBS`s0zL=2IZa((1M|Es2+{s^ZLw8z^Rb(p0|6e?&s3)2N`=`aQiiR z5=J%`zMFi0+lzkP#T^qBI3Tv#ZYDqX==~a3SFBuWE#Zjilt9K_7Q~r0H>1K#ezx;o zVz!a?<-0|3HU0}WvfrbsC0HUOr_b4cB?TP~XxU?YD1>%_JC-)<;|m6!+z0JxI`%TE z<+Pe4tJ?`>zROJ?ur=3GtyrJ%;#~~D%ks*57pM*02A8U9uQPa6TW<>o%F9Y9^lWWh z!`7(X-4F7{VEhi7veARcG+AZcoM<&q!;P8$zT!qK1xOaU zhh%=ts-uBA4NuKl&mM+e)HNJ0-2kp5NcX(I`pwSE`APrkcyZAz{y~Qw1NvbiS8q%CA$?)*wW7Cn4ps8RC%EXiv2cWNm#*=zyA$!}ABSf6wS z(TFth&!rwO$b->}qq_%DW4O(0Ij9%r(&3p`8JM7Sq@CM>v zeE3yJ`8iF09hQAT)O#Wx(>d~hD7ixmxQp|lo*7rFjJBsoWZ+3&u4twd}vV_Bg2*p*p z8Qek*BKCXR~J#+|~!-ed9YglSxDN*%o4WgtFxr{(>COOV5g%tvBV3 z>Se$X-fZ|r9nvuW(}-z9-{ihqDd7Zp#w%JGyFru6l(vJfx##wF>pEr`ayHc0jdN`xBU}uZa89~rOnX&AKyDwK#%8BXKiS^F& z^#eNI4G+N_4arQ33$~yB)+o+1*~P@}?&S>Y+Nqq`-wB2G<}OaZRcFN*ZQ3`HQRWVv z>k`!B*Ibfz)Xk7km7(q>#9O=kUmBr9i`+cnApN2@CI+b=DT8DZKC6AB*}VbmsQDy| zG1>;}Yb>h^ZF%zf-2jv&Wcplh@(ezw_%{Vb|Z#(4ywxBieu zm6LNxo3u*KLaA9Kn%8?Z9Wz5YQ<p#4f zJ5GGDZ`?u@VtSC@O&{Lfiu2%a?gUT(?z(7vihOoV0nmd+3$cVp3-JNIc6KBav(feR z{EdIkX#`=Ga6ERCC9c~bzpvv_`VV$6%6 zH+LKYMSitMhd12yc4s8_p#4I`*jDAIIH`c*@Pd{t09AeEGG4u>`zZzR?QW`!=5EONAnS;C<% zz5MW@>9oBcdk15V%NbV{^Yt0F8zB$QvUP^vFWfyPU|{b)Fv>pRs%^ZJ+i0UAGH9)M z&fcZl+3vkhuS}da$0gXfI^-9-FM1K?H3&O-Si>um>&($A#R&LL4URr<5@6np?E9~iQk0gT-KfvGbe7XOyUyJ z83hRR(kTQ8ta^o;7Dk)N=*W}G2D%ItEer^C!w=Qw{}7g@Ob?N)=W>XoSMFNDnu0F+ zE2XXpr?QFt+9k0v`fKE~^E_hdW;^~Ag|1Ok(bPmV{}A7viWTA2m)ai^QP@AI5sp9u z>7sr0>=dI*#=(?4iF?If9rk6Dvs(p$?nCR62mdIExiZ2ST4h#quSkaa%i{$NfW(KX zb93a#v`a~gv8qj2E&Z^GxQ=E{;fmyrY*6ROA5Gj!0e z37w}Hk!>d&?^8R_=s)L`k)w&=7(&qNKf&*1anj^o%X(e+VIU9?_^&|w-@pIg2w>ez F{TBdKa8LjM literal 0 HcmV?d00001 diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/rampage.jpg b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/wwwroot/product-images/rampage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e49660df170acdceee2a5c4167a09dbdd2baf95b GIT binary patch literal 29142 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