update
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
using CMSMicroservice.Domain.Events;
|
||||
|
||||
namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder;
|
||||
public class SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrderCommand, SubmitShopBuyOrderResponseDto>
|
||||
|
||||
public class
|
||||
SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrderCommand, SubmitShopBuyOrderResponseDto>
|
||||
{
|
||||
private readonly IApplicationDbContext _context;
|
||||
|
||||
@@ -9,9 +13,35 @@ public class SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrd
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<SubmitShopBuyOrderResponseDto> Handle(SubmitShopBuyOrderCommand request, CancellationToken cancellationToken)
|
||||
public async Task<SubmitShopBuyOrderResponseDto> Handle(SubmitShopBuyOrderCommand request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
//TODO: Implement your business logic
|
||||
var user = await _context.Users
|
||||
.Include(i => i.UserAddresss)
|
||||
.Include(i => i.UserCartss)
|
||||
.ThenInclude(i => i.Product)
|
||||
.FirstOrDefaultAsync(w => w.Id == request.UserId, cancellationToken: cancellationToken);
|
||||
if (user.UserCartss.Count == 0)
|
||||
throw new NotFoundException("UserCart", request.UserId);
|
||||
if (user.UserCartss.Sum(s => s.Count * s.Product.Price) != request.TotalAmount)
|
||||
throw new Exception("مبلغ سفارش با مجموع سبد خرید مطابقت ندارد.");
|
||||
|
||||
await _context.UserOrders.AddAsync(new UserOrder()
|
||||
{
|
||||
Price = request.TotalAmount,
|
||||
PaymentStatus = PaymentStatus.Success,
|
||||
PaymentMethod = PaymentMethod.Wallet,
|
||||
PaymentDate =DateTime.Now,
|
||||
UserId = request.UserId,
|
||||
UserAddressId = user.UserAddresss.First(f=>f.IsDefault).Id
|
||||
}, cancellationToken);
|
||||
await _context.FactorDetailss.AddRangeAsync(user.UserCartss.Select(s => new FactorDetails()
|
||||
{
|
||||
ProductId = s.ProductId,
|
||||
Count = s.Count,
|
||||
UnitPrice = s.Product.Price,
|
||||
|
||||
}), cancellationToken);
|
||||
return new SubmitShopBuyOrderResponseDto();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder;
|
||||
public class SubmitShopBuyOrderResponseDto
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user