feat : complete ordering , add version 0.17.18.25

release
Amir Hossein Khademi 2024-02-26 18:16:28 +03:30
parent 5969c26eb3
commit b8c6a36e06
10 changed files with 87 additions and 14 deletions

View File

@ -1 +1 @@
0.17.17.24
0.17.18.25

View File

@ -17,12 +17,19 @@ public class OrderController : ICarterModule
.WithDisplayName("GetOneOrder")
.HasApiVersion(1.0);
group.MapPost("{id}/confirm", ConfirmOrderStepAsync)
.WithDisplayName("ConfirmOrderStep")
.HasApiVersion(1.0);
group.MapDelete("{id}", DeleteAsync)
.WithDisplayName("DeleteOneOrder")
.HasApiVersion(1.0);
}
private async Task<IResult> ConfirmOrderStepAsync(Guid id, [FromQuery] OrderStatus nextOrderStatus, [FromServices] IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(new ConfirmOrderStepCommand(id, nextOrderStatus), cancellationToken));
public async Task<IResult> GetAllAsync(IMediator mediator, [FromQuery]long? selectedDate, [FromQuery] OrderStatus? orderStatus, [FromQuery] OrderQueryDateFilter? dateFilter, [FromQuery] int page = 0, CancellationToken cancellationToken = default)
=> TypedResults.Ok(await mediator.Send(new GetOrdersQuery(Page:page, SelectedDate: selectedDate, OrderStatus:orderStatus, DateFilter:dateFilter), cancellationToken));

View File

@ -6,8 +6,8 @@
<ImplicitUsings>enable</ImplicitUsings>
<InvariantGlobalization>true</InvariantGlobalization>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<AssemblyVersion>0.17.16.23</AssemblyVersion>
<FileVersion>0.17.16.23</FileVersion>
<AssemblyVersion>0.17.18.25</AssemblyVersion>
<FileVersion>0.17.18.25</FileVersion>
</PropertyGroup>
<ItemGroup>

View File

@ -34,7 +34,7 @@ public class SubmitOrderPaymentCommandHandler : IRequestHandler<SubmitOrderPayme
if (request.HasPaid)
{
response.NeedToPayOnline = false;
order.SetSubmitOrder(request.PaymentMethod);
order.SetOrderPayment(request.PaymentMethod);
}
else
{
@ -45,7 +45,7 @@ public class SubmitOrderPaymentCommandHandler : IRequestHandler<SubmitOrderPayme
else if (request.PaymentMethod == OrderPaymentMethod.PayOnDoor)
{
response.NeedToPayOnline = false;
order.SetSubmitOrder(request.PaymentMethod);
order.SetOrderPayment(request.PaymentMethod);
_repositoryWrapper.SetRepository<Order>().Update(order);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
@ -57,7 +57,7 @@ public class SubmitOrderPaymentCommandHandler : IRequestHandler<SubmitOrderPayme
else if (request.PaymentMethod == OrderPaymentMethod.CardTransfer)
{
response.NeedToPayOnline = false;
order.SetSubmitOrder(request.PaymentMethod);
order.SetOrderPayment(request.PaymentMethod);
_repositoryWrapper.SetRepository<Order>().Update(order);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);

View File

@ -0,0 +1,27 @@
namespace NetinaShop.Core.EntityServices.OrderHandlers;
public class ConfirmOrderStepCommandHandler : IRequestHandler<ConfirmOrderStepCommand,bool>
{
private readonly IRepositoryWrapper _repositoryWrapper;
public ConfirmOrderStepCommandHandler(IRepositoryWrapper repositoryWrapper)
{
_repositoryWrapper = repositoryWrapper;
}
public async Task<bool> Handle(ConfirmOrderStepCommand 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);
order.SetOrderStatus(request.NextOrderStatus);
_repositoryWrapper.SetRepository<Order>()
.Update(order);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
return true;
}
}

View File

@ -3,5 +3,6 @@
public sealed record CreateBaseOrderCommand(Guid UserId) : IRequest<Order>;
public sealed record CalculateOrderCommand(Guid OrderId , bool NamoosiCalculate = false) : IRequest<Order>;
public sealed record ConfirmOrderStepCommand(Guid OrderId , OrderStatus NextOrderStatus) : IRequest<bool>;
public sealed record DeleteOrderCommand(Guid OrderId) : IRequest<bool>;

View File

@ -1,4 +1,7 @@
namespace NetinaShop.Domain.Entities.Orders;
using NetinaShop.Common.Models.Api;
using NetinaShop.Common.Models.Exception;
namespace NetinaShop.Domain.Entities.Orders;
public partial class Order
{
@ -46,7 +49,7 @@ public partial class Order
public void AddOrderProduct(OrderProduct orderProduct)
=> OrderProducts.Add(orderProduct);
public void SetSubmitOrder(OrderPaymentMethod paymentMethod)
public void SetOrderPayment(OrderPaymentMethod paymentMethod)
{
switch (paymentMethod)
{
@ -72,6 +75,34 @@ public partial class Order
}
}
public void SetOrderStatus(OrderStatus orderStatus)
{
switch (orderStatus)
{
case OrderStatus.OrderBag:
throw new AppException("Order is in cart so you cant change it", ApiResultStatusCode.BadRequest);
break;
case OrderStatus.Submitted:
break;
case OrderStatus.Paid:
throw new AppException("use set payment method", ApiResultStatusCode.BadRequest);
break;
case OrderStatus.Processing:
break;
case OrderStatus.Delivered:
DeliveredAt = DateTime.Now;
break;
case OrderStatus.Done:
DoneAt = DateTime.Now;
break;
case OrderStatus.Canceled:
break;
default:
throw new ArgumentOutOfRangeException(nameof(orderStatus), orderStatus, null);
}
OrderStatus = orderStatus;
}
public void AddOrderDelivery(Guid addressId, double deliveryCost, Guid shippingId, Guid orderId)
{
var orderDelivery = OrderDelivery.Create(addressId, deliveryCost, shippingId, orderId);

View File

@ -60,11 +60,13 @@ public partial class Order : ApiEntity
public double TaxesPrice { get; internal set; }
public double TotalPrice { get; internal set; }
public bool IsPayed { get; internal set; }
public DateTime PayedAt { get; internal set; }
public OrderPaymentMethod PaymentMethod { get; internal set; }
public OrderStatus OrderStatus { get; internal set; }
public DateTime DeliveredAt { get; internal set; }
public DateTime DoneAt { get; internal set; }
public DateTime OrderAt { get; internal set; }
public DateTime PayedAt { get; internal set; }
public int PreparingMinute { get; internal set; }
public string DiscountCode { get; internal set; } = string.Empty;

View File

@ -11,12 +11,15 @@ public enum OrderStatus
[Display(Name = "پرداخت شده", Description = "PAID")]
Paid = 2,
[Display(Name = "درحال پردازش", Description = "PROCESSING")]
Processing = 10,
[Display(Name = "ارسال شده", Description = "DELIVERED")]
Delivered = 3,
Delivered = 20,
[Display(Name = "انجام شده", Description = "DONE")]
Done = 4,
Done = 200,
[Display(Name = "کنسل شده", Description = "CANCELED")]
Canceled = 5
Canceled = 500
}

View File

@ -14,8 +14,10 @@ public class GetOrdersQueryHandler : IRequestHandler<GetOrdersQuery,List<OrderSD
public async Task<List<OrderSDto>> Handle(GetOrdersQuery request, CancellationToken cancellationToken)
{
IQueryable<Order> orders = _repositoryWrapper.SetRepository<Order>()
.TableNoTracking;
IQueryable<Order> orders = _repositoryWrapper
.SetRepository<Order>()
.TableNoTracking
.Where(o=>o.OrderStatus != OrderStatus.OrderBag);
if (request.DateFilter != null)
{