diff --git a/.version b/.version index 5db2b15..2470470 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.0.3.3 \ No newline at end of file +1.0.4.5 \ No newline at end of file diff --git a/Netina.Api/Controllers/HealthController.cs b/Netina.Api/Controllers/HealthController.cs index b64ced1..4bbe158 100644 --- a/Netina.Api/Controllers/HealthController.cs +++ b/Netina.Api/Controllers/HealthController.cs @@ -11,6 +11,9 @@ public class HealthController : ICarterModule group.MapGet("", GetHealth) .WithDisplayName("GetHealth") .HasApiVersion(1.0); + group.MapGet("/error/test", () => { throw new Exception("Error test message");}) + .WithDisplayName("GetHealth") + .HasApiVersion(1.0); } public async Task GetHealth([FromServices]ISiteMapService siteMapService) diff --git a/Netina.Api/Controllers/OrderBagController.cs b/Netina.Api/Controllers/OrderBagController.cs index 636ea42..aa6d169 100644 --- a/Netina.Api/Controllers/OrderBagController.cs +++ b/Netina.Api/Controllers/OrderBagController.cs @@ -32,8 +32,8 @@ public class OrderBagController : ICarterModule .HasApiVersion(1.0); - group.MapPost("discount/{orderId}", AddDiscountToOrderBagAsync) - .WithDisplayName("AddDiscountToOrderBag") + group.MapPost("discount/{orderId}", DiscountActionOrderBagAsync) + .WithDisplayName("DiscountActionOrderBag") .HasApiVersion(1.0); @@ -62,8 +62,8 @@ public class OrderBagController : ICarterModule public async Task RemoveFromOrderBagAsync([FromBody] List requestDtos, IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new RemoveFromOrderBagCommand(requestDtos), cancellationToken)); - public async Task AddDiscountToOrderBagAsync(Guid orderId, [FromQuery] string discountCode, IMediator mediator, CancellationToken cancellationToken) - => TypedResults.Ok(await mediator.Send(new SubmitDiscountCommand(orderId, discountCode), cancellationToken)); + public async Task DiscountActionOrderBagAsync(Guid orderId, [FromQuery] string? discountCode, IMediator mediator, CancellationToken cancellationToken) + => TypedResults.Ok(await mediator.Send(new SubmitDiscountActionCommand(orderId, discountCode), cancellationToken)); public async Task AddShippingToOrderBagAsync(Guid orderId, [FromBody] SubmitOrderDeliveryCommand request, IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request with { OrderId = orderId }, cancellationToken)); diff --git a/Netina.Api/Dockerfile b/Netina.Api/Dockerfile index 3f4952d..76221d4 100644 --- a/Netina.Api/Dockerfile +++ b/Netina.Api/Dockerfile @@ -22,8 +22,6 @@ RUN dotnet publish "./Netina.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish FROM base AS final -RUN apt-get update -RUN apt-get install-y libgdiplus WORKDIR /app COPY --from=publish /app/publish . diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj index ef3b7ca..c2a9cbe 100644 --- a/Netina.Api/Netina.Api.csproj +++ b/Netina.Api/Netina.Api.csproj @@ -6,8 +6,8 @@ enable true Linux - 1.0.3.3 - 1.0.3.3 + 1.0.4.5 + 1.0.4.5 diff --git a/Netina.Api/Program.cs b/Netina.Api/Program.cs index 2ce7f17..76f3385 100644 --- a/Netina.Api/Program.cs +++ b/Netina.Api/Program.cs @@ -96,7 +96,6 @@ builder.Host.ConfigureContainer(builder => var app = builder.Build(); - // Configure the HTTP request pipeline. //app.UseCustomSwagger(siteSetting.BaseUrl); diff --git a/Netina.Api/Properties/launchSettings.json b/Netina.Api/Properties/launchSettings.json index 8d264f8..6e06a47 100644 --- a/Netina.Api/Properties/launchSettings.json +++ b/Netina.Api/Properties/launchSettings.json @@ -26,7 +26,7 @@ "ASPNETCORE_URLS": "http://+:80" }, "publishAllPorts": true, - "DockerfileRunArguments": " --network=mother -p 32770:80" + "DockerfileRunArguments": " --network=mother -p 32780:80" } }, "$schema": "http://json.schemastore.org/launchsettings.json", diff --git a/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs b/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs index 4b2f568..83be13e 100644 --- a/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs +++ b/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs @@ -1,7 +1,4 @@ -using Netina.Common.Models.Api; -using Netina.Common.Models.Exception; -using Netina.Core.Models.Api; -using Refit; +using Refit; namespace Netina.Api.WebFramework.MiddleWares; diff --git a/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs b/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs index 6a1a9ae..b7865f4 100644 --- a/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs +++ b/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs @@ -51,11 +51,11 @@ public class GetEmallsProductsQueryHandler : IRequestHandler product.CostWithDiscount) { - torobProduct.old_price = (int)product.Cost; - torobProduct.price = (int)product.CostWithDiscount; + torobProduct.old_price = (int)product.Cost / 10; + torobProduct.price = (int)product.CostWithDiscount / 10; } else - torobProduct.price = (int)product.Cost; + torobProduct.price = (int)product.Cost / 10; products.Add(torobProduct); } diff --git a/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs b/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs index 473b1cd..6da036c 100644 --- a/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs +++ b/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs @@ -49,11 +49,11 @@ public class GetTorobProductsQueryHandler : IRequestHandler product.CostWithDiscount) { - torobProduct.old_price = product.Cost; - torobProduct.price = product.CostWithDiscount; + torobProduct.old_price = product.Cost / 10; + torobProduct.price = product.CostWithDiscount / 10; } else - torobProduct.price = product.Cost; + torobProduct.price = product.Cost / 10; products.Add(torobProduct); } diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs new file mode 100644 index 0000000..5960ae0 --- /dev/null +++ b/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs @@ -0,0 +1,40 @@ +namespace Netina.Core.EntityServices.OrderBagHandlers; + +public class SubmitDiscountActionCommandHandler : IRequestHandler +{ + private readonly IRepositoryWrapper _repositoryWrapper; + private readonly IMediator _mediator; + + public SubmitDiscountActionCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) + { + _repositoryWrapper = repositoryWrapper; + _mediator = mediator; + } + public async Task Handle(SubmitDiscountActionCommand request, CancellationToken cancellationToken) + { + var order = await _repositoryWrapper.SetRepository() + .TableNoTracking + .FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken); + if (order == null) + throw new AppException("Order not found", ApiResultStatusCode.NotFound); + + if (request.DiscountCode != null) + { + + var discount = await _repositoryWrapper.SetRepository() + .TableNoTracking + .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); + if (discount == null || discount.IsExpired()) + throw new AppException("تخفیف منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound); + order.SetDiscount(request.DiscountCode); + } + else + order.RemoveDiscount(); + + _repositoryWrapper.SetRepository().Update(order); + await _repositoryWrapper.SaveChangesAsync(cancellationToken); + var calculateOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); + + return calculateOrder.AdaptToSDto(); + } +} \ No newline at end of file diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs deleted file mode 100644 index 791452c..0000000 --- a/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Netina.Core.EntityServices.OrderBagHandlers; - -public class SubmitDiscountCommandHandler : IRequestHandler -{ - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - - public SubmitDiscountCommandHandler(IRepositoryWrapper repositoryWrapper,IMediator mediator) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - } - public async Task Handle(SubmitDiscountCommand request, CancellationToken cancellationToken) - { - var order = await _repositoryWrapper.SetRepository() - .TableNoTracking - .FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken); - if (order == null) - throw new AppException("Order not found", ApiResultStatusCode.NotFound); - var discount = await _repositoryWrapper.SetRepository() - .TableNoTracking - .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); - if (discount == null || discount.IsExpired()) - throw new AppException("تخفیف منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound); - order.SetDiscount(request.DiscountCode); - _repositoryWrapper.SetRepository().Update(order); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); - var calculateOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); - - return calculateOrder.AdaptToSDto(); - } -} \ No newline at end of file diff --git a/Netina.Domain/CommandQueries/Commands/OrderBagCommands.cs b/Netina.Domain/CommandQueries/Commands/OrderBagCommands.cs index ed3951a..a4d0b30 100644 --- a/Netina.Domain/CommandQueries/Commands/OrderBagCommands.cs +++ b/Netina.Domain/CommandQueries/Commands/OrderBagCommands.cs @@ -6,7 +6,7 @@ public sealed record CheckOrderBagCommand(List OrderBa public sealed record AddToOrderBagCommand(List RequestDtos) : IRequest; public sealed record RemoveFromOrderBagCommand(List RequestDtos) : IRequest; -public sealed record SubmitDiscountCommand(Guid OrderId,string DiscountCode) : IRequest; +public sealed record SubmitDiscountActionCommand(Guid OrderId,string? DiscountCode) : IRequest; public sealed record SubmitOrderDeliveryCommand(Guid AddressId, Guid OrderId, Guid ShippingId) : IRequest; public sealed record SubmitOrderBagCommand(List RequestDtos) : IRequest; diff --git a/Netina.Domain/Entities/Orders/Order.Aggregate.cs b/Netina.Domain/Entities/Orders/Order.Aggregate.cs index 0d3a15b..1d4355c 100644 --- a/Netina.Domain/Entities/Orders/Order.Aggregate.cs +++ b/Netina.Domain/Entities/Orders/Order.Aggregate.cs @@ -61,6 +61,8 @@ public partial class Order public void SetDiscount(string discountCode) => DiscountCode = discountCode; + public void RemoveDiscount() + => DiscountCode = string.Empty; public void AddOrderProduct(OrderProduct orderProduct) => OrderProducts.Add(orderProduct);