feat : complete ordering , add version 0.17.18.25
parent
5969c26eb3
commit
b8c6a36e06
|
@ -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));
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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>;
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue