fix(TorobGetProducts) , fix(EmallsProducts), VER 1.0.4.5
- Fix torob product price to Tooman - Fix emalls product price to Tooman - Add version 1.0.4.5subProduct
parent
d2085e282d
commit
da64ae5b40
|
@ -11,6 +11,9 @@ public class HealthController : ICarterModule
|
||||||
group.MapGet("", GetHealth)
|
group.MapGet("", GetHealth)
|
||||||
.WithDisplayName("GetHealth")
|
.WithDisplayName("GetHealth")
|
||||||
.HasApiVersion(1.0);
|
.HasApiVersion(1.0);
|
||||||
|
group.MapGet("/error/test", () => { throw new Exception("Error test message");})
|
||||||
|
.WithDisplayName("GetHealth")
|
||||||
|
.HasApiVersion(1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IResult> GetHealth([FromServices]ISiteMapService siteMapService)
|
public async Task<IResult> GetHealth([FromServices]ISiteMapService siteMapService)
|
||||||
|
|
|
@ -32,8 +32,8 @@ public class OrderBagController : ICarterModule
|
||||||
.HasApiVersion(1.0);
|
.HasApiVersion(1.0);
|
||||||
|
|
||||||
|
|
||||||
group.MapPost("discount/{orderId}", AddDiscountToOrderBagAsync)
|
group.MapPost("discount/{orderId}", DiscountActionOrderBagAsync)
|
||||||
.WithDisplayName("AddDiscountToOrderBag")
|
.WithDisplayName("DiscountActionOrderBag")
|
||||||
.HasApiVersion(1.0);
|
.HasApiVersion(1.0);
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,8 +62,8 @@ public class OrderBagController : ICarterModule
|
||||||
public async Task<IResult> RemoveFromOrderBagAsync([FromBody] List<OrderBagRequestDto> requestDtos, IMediator mediator, CancellationToken cancellationToken)
|
public async Task<IResult> RemoveFromOrderBagAsync([FromBody] List<OrderBagRequestDto> requestDtos, IMediator mediator, CancellationToken cancellationToken)
|
||||||
=> TypedResults.Ok(await mediator.Send(new RemoveFromOrderBagCommand(requestDtos), cancellationToken));
|
=> TypedResults.Ok(await mediator.Send(new RemoveFromOrderBagCommand(requestDtos), cancellationToken));
|
||||||
|
|
||||||
public async Task<IResult> AddDiscountToOrderBagAsync(Guid orderId, [FromQuery] string discountCode, IMediator mediator, CancellationToken cancellationToken)
|
public async Task<IResult> DiscountActionOrderBagAsync(Guid orderId, [FromQuery] string? discountCode, IMediator mediator, CancellationToken cancellationToken)
|
||||||
=> TypedResults.Ok(await mediator.Send(new SubmitDiscountCommand(orderId, discountCode), cancellationToken));
|
=> TypedResults.Ok(await mediator.Send(new SubmitDiscountActionCommand(orderId, discountCode), cancellationToken));
|
||||||
|
|
||||||
public async Task<IResult> AddShippingToOrderBagAsync(Guid orderId, [FromBody] SubmitOrderDeliveryCommand request, IMediator mediator, CancellationToken cancellationToken)
|
public async Task<IResult> AddShippingToOrderBagAsync(Guid orderId, [FromBody] SubmitOrderDeliveryCommand request, IMediator mediator, CancellationToken cancellationToken)
|
||||||
=> TypedResults.Ok(await mediator.Send(request with { OrderId = orderId }, cancellationToken));
|
=> TypedResults.Ok(await mediator.Send(request with { OrderId = orderId }, cancellationToken));
|
||||||
|
|
|
@ -22,8 +22,6 @@ RUN dotnet publish "./Netina.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish
|
||||||
FROM base AS final
|
FROM base AS final
|
||||||
|
|
||||||
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get install-y libgdiplus
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=publish /app/publish .
|
COPY --from=publish /app/publish .
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<InvariantGlobalization>true</InvariantGlobalization>
|
<InvariantGlobalization>true</InvariantGlobalization>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<AssemblyVersion>1.0.3.3</AssemblyVersion>
|
<AssemblyVersion>1.0.4.5</AssemblyVersion>
|
||||||
<FileVersion>1.0.3.3</FileVersion>
|
<FileVersion>1.0.4.5</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -96,7 +96,6 @@ builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
|
|
||||||
//app.UseCustomSwagger(siteSetting.BaseUrl);
|
//app.UseCustomSwagger(siteSetting.BaseUrl);
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
"ASPNETCORE_URLS": "http://+:80"
|
"ASPNETCORE_URLS": "http://+:80"
|
||||||
},
|
},
|
||||||
"publishAllPorts": true,
|
"publishAllPorts": true,
|
||||||
"DockerfileRunArguments": " --network=mother -p 32770:80"
|
"DockerfileRunArguments": " --network=mother -p 32780:80"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
using Netina.Common.Models.Api;
|
using Refit;
|
||||||
using Netina.Common.Models.Exception;
|
|
||||||
using Netina.Core.Models.Api;
|
|
||||||
using Refit;
|
|
||||||
|
|
||||||
namespace Netina.Api.WebFramework.MiddleWares;
|
namespace Netina.Api.WebFramework.MiddleWares;
|
||||||
|
|
||||||
|
|
|
@ -51,11 +51,11 @@ public class GetEmallsProductsQueryHandler : IRequestHandler<GetEmallsProductsQu
|
||||||
};
|
};
|
||||||
if (product.Cost > product.CostWithDiscount)
|
if (product.Cost > product.CostWithDiscount)
|
||||||
{
|
{
|
||||||
torobProduct.old_price = (int)product.Cost;
|
torobProduct.old_price = (int)product.Cost / 10;
|
||||||
torobProduct.price = (int)product.CostWithDiscount;
|
torobProduct.price = (int)product.CostWithDiscount / 10;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
torobProduct.price = (int)product.Cost;
|
torobProduct.price = (int)product.Cost / 10;
|
||||||
products.Add(torobProduct);
|
products.Add(torobProduct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,11 +49,11 @@ public class GetTorobProductsQueryHandler : IRequestHandler<GetTorobProductsQuer
|
||||||
};
|
};
|
||||||
if (product.Cost > product.CostWithDiscount)
|
if (product.Cost > product.CostWithDiscount)
|
||||||
{
|
{
|
||||||
torobProduct.old_price = product.Cost;
|
torobProduct.old_price = product.Cost / 10;
|
||||||
torobProduct.price = product.CostWithDiscount;
|
torobProduct.price = product.CostWithDiscount / 10;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
torobProduct.price = product.Cost;
|
torobProduct.price = product.Cost / 10;
|
||||||
products.Add(torobProduct);
|
products.Add(torobProduct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
namespace Netina.Core.EntityServices.OrderBagHandlers;
|
||||||
|
|
||||||
|
public class SubmitDiscountActionCommandHandler : IRequestHandler<SubmitDiscountActionCommand, OrderSDto>
|
||||||
|
{
|
||||||
|
private readonly IRepositoryWrapper _repositoryWrapper;
|
||||||
|
private readonly IMediator _mediator;
|
||||||
|
|
||||||
|
public SubmitDiscountActionCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator)
|
||||||
|
{
|
||||||
|
_repositoryWrapper = repositoryWrapper;
|
||||||
|
_mediator = mediator;
|
||||||
|
}
|
||||||
|
public async Task<OrderSDto> Handle(SubmitDiscountActionCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var order = await _repositoryWrapper.SetRepository<Order>()
|
||||||
|
.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<Discount>()
|
||||||
|
.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<Order>().Update(order);
|
||||||
|
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||||
|
var calculateOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken);
|
||||||
|
|
||||||
|
return calculateOrder.AdaptToSDto();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,32 +0,0 @@
|
||||||
namespace Netina.Core.EntityServices.OrderBagHandlers;
|
|
||||||
|
|
||||||
public class SubmitDiscountCommandHandler : IRequestHandler<SubmitDiscountCommand,OrderSDto>
|
|
||||||
{
|
|
||||||
private readonly IRepositoryWrapper _repositoryWrapper;
|
|
||||||
private readonly IMediator _mediator;
|
|
||||||
|
|
||||||
public SubmitDiscountCommandHandler(IRepositoryWrapper repositoryWrapper,IMediator mediator)
|
|
||||||
{
|
|
||||||
_repositoryWrapper = repositoryWrapper;
|
|
||||||
_mediator = mediator;
|
|
||||||
}
|
|
||||||
public async Task<OrderSDto> Handle(SubmitDiscountCommand request, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
var order = await _repositoryWrapper.SetRepository<Order>()
|
|
||||||
.TableNoTracking
|
|
||||||
.FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken);
|
|
||||||
if (order == null)
|
|
||||||
throw new AppException("Order not found", ApiResultStatusCode.NotFound);
|
|
||||||
var discount = await _repositoryWrapper.SetRepository<Discount>()
|
|
||||||
.TableNoTracking
|
|
||||||
.FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken);
|
|
||||||
if (discount == null || discount.IsExpired())
|
|
||||||
throw new AppException("تخفیف منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound);
|
|
||||||
order.SetDiscount(request.DiscountCode);
|
|
||||||
_repositoryWrapper.SetRepository<Order>().Update(order);
|
|
||||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
|
||||||
var calculateOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken);
|
|
||||||
|
|
||||||
return calculateOrder.AdaptToSDto();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,7 +6,7 @@ public sealed record CheckOrderBagCommand(List<CheckOrderBagRequestItem> OrderBa
|
||||||
public sealed record AddToOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
public sealed record AddToOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
||||||
public sealed record RemoveFromOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
public sealed record RemoveFromOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
||||||
|
|
||||||
public sealed record SubmitDiscountCommand(Guid OrderId,string DiscountCode) : IRequest<OrderSDto>;
|
public sealed record SubmitDiscountActionCommand(Guid OrderId,string? DiscountCode) : IRequest<OrderSDto>;
|
||||||
public sealed record SubmitOrderDeliveryCommand(Guid AddressId, Guid OrderId, Guid ShippingId) : IRequest<OrderSDto>;
|
public sealed record SubmitOrderDeliveryCommand(Guid AddressId, Guid OrderId, Guid ShippingId) : IRequest<OrderSDto>;
|
||||||
|
|
||||||
public sealed record SubmitOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
public sealed record SubmitOrderBagCommand(List<OrderBagRequestDto> RequestDtos) : IRequest<OrderSDto>;
|
||||||
|
|
|
@ -61,6 +61,8 @@ public partial class Order
|
||||||
|
|
||||||
public void SetDiscount(string discountCode)
|
public void SetDiscount(string discountCode)
|
||||||
=> DiscountCode = discountCode;
|
=> DiscountCode = discountCode;
|
||||||
|
public void RemoveDiscount()
|
||||||
|
=> DiscountCode = string.Empty;
|
||||||
public void AddOrderProduct(OrderProduct orderProduct)
|
public void AddOrderProduct(OrderProduct orderProduct)
|
||||||
=> OrderProducts.Add(orderProduct);
|
=> OrderProducts.Add(orderProduct);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue