diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj
index eed7a18..70857a6 100644
--- a/Netina.Api/Netina.Api.csproj
+++ b/Netina.Api/Netina.Api.csproj
@@ -75,7 +75,6 @@
-
diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderPaymentCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderPaymentCommandHandler.cs
index d61cd5d..4ac23f1 100644
--- a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderPaymentCommandHandler.cs
+++ b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderPaymentCommandHandler.cs
@@ -1,24 +1,14 @@
namespace Netina.Core.EntityServices.OrderBagHandlers;
-public class SubmitOrderPaymentCommandHandler : IRequestHandler
+public class SubmitOrderPaymentCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper, IPaymentService paymentService, ISmsService smsService, IOptionsSnapshot optionsSnapshot)
+ : IRequestHandler
{
- private readonly IMediator _mediator;
- private readonly IRepositoryWrapper _repositoryWrapper;
- private readonly IPaymentService _paymentService;
- private readonly ISmsService _smsService;
-
- public SubmitOrderPaymentCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper, IPaymentService paymentService,ISmsService smsService)
- {
- _mediator = mediator;
- _repositoryWrapper = repositoryWrapper;
- _paymentService = paymentService;
- _smsService = smsService;
- }
public async Task Handle(SubmitOrderPaymentCommand request, CancellationToken cancellationToken)
{
- await _mediator.Send(new CalculateOrderCommand(request.OrderId, true), cancellationToken);
+ var _siteSetting = optionsSnapshot.Value;
+ await mediator.Send(new CalculateOrderCommand(request.OrderId, true), cancellationToken);
- var order = await _repositoryWrapper.SetRepository()
+ var order = await repositoryWrapper.SetRepository()
.TableNoTracking
.Where(o => o.Id == request.OrderId)
.FirstOrDefaultAsync(cancellationToken);
@@ -34,46 +24,53 @@ public class SubmitOrderPaymentCommandHandler : IRequestHandler().Update(order);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
-
+ repositoryWrapper.SetRepository().Update(order);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
+ if (!_siteSetting.Manager.Phone.IsNullOrEmpty())
+ await smsService.SendLookUpAsync(_siteSetting.Manager.Phone, "manager-submitOrder",order.FactorCode,null,null, $"{_siteSetting.Manager.FirstName} {_siteSetting.Manager.LastName}");
}
else
{
response.NeedToPayOnline = true;
- var orderSDto = await _repositoryWrapper.SetRepository()
+ var orderSDto = await repositoryWrapper.SetRepository()
.TableNoTracking
.Where(o => o.Id == request.OrderId)
.Select(OrderMapper.ProjectToSDto)
.FirstOrDefaultAsync(cancellationToken);
if (orderSDto == null)
throw new AppException("Order not found", ApiResultStatusCode.NotFound);
- response.PaymentUrl = await _paymentService.GetPaymentLinkAsync(orderSDto.TotalPrice, orderSDto.FactorCode, orderSDto.Id, orderSDto.CustomerId, orderSDto.CustomerPhoneNumber, orderSDto.CustomerFullName, cancellationToken);
+ response.PaymentUrl = await paymentService.GetPaymentLinkAsync(orderSDto.TotalPrice, orderSDto.FactorCode, orderSDto.Id, orderSDto.CustomerId, orderSDto.CustomerPhoneNumber, orderSDto.CustomerFullName, cancellationToken);
}
}
else if (request.PaymentMethod == OrderPaymentMethod.PayOnDoor)
{
response.NeedToPayOnline = false;
order.SetOrderPayment(request.PaymentMethod);
- _repositoryWrapper.SetRepository().Update(order);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ repositoryWrapper.SetRepository().Update(order);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
- await _mediator.Send(new CreateOrUpdatePaymentCommand(null,order.FactorCode, order.TotalPrice,
+ await mediator.Send(new CreateOrUpdatePaymentCommand(null,order.FactorCode, order.TotalPrice,
$"پرداخت نقدی سفارش {order.FactorCode}", string.Empty, string.Empty, string.Empty,
PaymentType.PayOnDoor, PaymentStatus.Paid, order.Id
, order.CustomerId), cancellationToken);
+
+ if (!_siteSetting.Manager.Phone.IsNullOrEmpty())
+ await smsService.SendLookUpAsync(_siteSetting.Manager.Phone, "manager-submitOrder", order.FactorCode, null, null, $"{_siteSetting.Manager.FirstName} {_siteSetting.Manager.LastName}");
}
else if (request.PaymentMethod == OrderPaymentMethod.CardTransfer)
{
response.NeedToPayOnline = false;
order.SetOrderPayment(request.PaymentMethod);
- _repositoryWrapper.SetRepository().Update(order);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ repositoryWrapper.SetRepository().Update(order);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
- await _mediator.Send(new CreateOrUpdatePaymentCommand(null,order.FactorCode, order.TotalPrice,
+ await mediator.Send(new CreateOrUpdatePaymentCommand(null,order.FactorCode, order.TotalPrice,
$"پرداخت نقدی سفارش {order.FactorCode}", string.Empty, string.Empty, string.Empty,
PaymentType.CardTransfer, PaymentStatus.Paid, order.Id
, order.CustomerId), cancellationToken);
+
+ if (!_siteSetting.Manager.Phone.IsNullOrEmpty())
+ await smsService.SendLookUpAsync(_siteSetting.Manager.Phone, "manager-submitOrder", order.FactorCode, null, null, $"{_siteSetting.Manager.FirstName} {_siteSetting.Manager.LastName}");
}
return response;
diff --git a/Netina.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs b/Netina.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs
index 35c97bc..292cc9e 100644
--- a/Netina.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs
+++ b/Netina.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs
@@ -1,19 +1,11 @@
namespace Netina.Core.EntityServices.OrderHandlers;
-public class CalculateOrderCommandHandler : IRequestHandler
+public class CalculateOrderCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) : IRequestHandler
{
- private readonly IRepositoryWrapper _repositoryWrapper;
- private readonly IMediator _mediator;
-
- public CalculateOrderCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator)
- {
- _repositoryWrapper = repositoryWrapper;
- _mediator = mediator;
- }
public async Task Handle(CalculateOrderCommand request, CancellationToken cancellationToken)
{
- var order = await _mediator.Send(new GetOrderQuery(request.OrderId), cancellationToken);
+ var order = await mediator.Send(new GetOrderQuery(request.OrderId), cancellationToken);
if (order.OrderStatus != OrderStatus.OrderBag)
throw new AppException("Order is not in bag status and cant be calculate", ApiResultStatusCode.BadRequest);
var totalProductPrice = order.OrderProducts.Sum(op => op.ProductFee * op.Count);
@@ -28,7 +20,7 @@ public class CalculateOrderCommandHandler : IRequestHandler(op.ProductFee - op.ProductFeeWithDiscount) * op.Count);
double discountCodePrice = 0;
if (!order.DiscountCode.IsNullOrEmpty())
- discountCodePrice += await _mediator.Send(new CalculateOrderDiscountCommand(order.DiscountCode, order),cancellationToken);
+ discountCodePrice += await mediator.Send(new CalculateOrderDiscountCommand(order.DiscountCode, order),cancellationToken);
//var taxesPrice = (((totalProductPrice - discountPrice) + totalPackingPrice + servicePrice) / 100) * _shopSettings.TaxesFee;
@@ -37,8 +29,8 @@ public class CalculateOrderCommandHandler : IRequestHandler().Update(order);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ repositoryWrapper.SetRepository().Update(order);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
return order;
}
}
\ No newline at end of file
diff --git a/Netina.Core/EntityServices/OrderHandlers/ConfirmOrderStepCommandHandler.cs b/Netina.Core/EntityServices/OrderHandlers/ConfirmOrderStepCommandHandler.cs
index 6e4fcb7..7c6f266 100644
--- a/Netina.Core/EntityServices/OrderHandlers/ConfirmOrderStepCommandHandler.cs
+++ b/Netina.Core/EntityServices/OrderHandlers/ConfirmOrderStepCommandHandler.cs
@@ -1,28 +1,33 @@
-namespace Netina.Core.EntityServices.OrderHandlers;
+using MD.PersianDateTime.Standard;
-public class ConfirmOrderStepCommandHandler : IRequestHandler
+namespace Netina.Core.EntityServices.OrderHandlers;
+
+public class ConfirmOrderStepCommandHandler(IRepositoryWrapper repositoryWrapper, ISmsService smsService) : IRequestHandler
{
- private readonly IRepositoryWrapper _repositoryWrapper;
- private readonly ISmsService _smsService;
-
- public ConfirmOrderStepCommandHandler(IRepositoryWrapper repositoryWrapper,ISmsService smsService)
- {
- _repositoryWrapper = repositoryWrapper;
- _smsService = smsService;
- }
public async Task Handle(ConfirmOrderStepCommand request, CancellationToken cancellationToken)
{
- var order = await _repositoryWrapper.SetRepository()
+ var order = await repositoryWrapper.SetRepository()
.TableNoTracking
.FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken);
if (order == null)
throw new AppException("Order not found", ApiResultStatusCode.NotFound);
order.SetOrderStatus(request.NextOrderStatus);
-
+ if (request.NextOrderStatus == OrderStatus.Processing)
+ {
+ var customer = await repositoryWrapper.SetRepository().TableNoTracking
+ .Where(c => c.Id == order.CustomerId)
+ .Select(CustomerMapper.ProjectToSDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (customer != null)
+ {
+ await smsService.SendLookUpAsync(customer.PhoneNumber, "customer-submitOrder",
+ (order.TotalPrice/10).ToString("N0"),order.FactorCode,null, $"{customer.FirstName} {customer.LastName}");
+ }
+ }
if (request.NextOrderStatus == OrderStatus.Delivered)
{
- var delivery = await _repositoryWrapper.SetRepository()
+ var delivery = await repositoryWrapper.SetRepository()
.TableNoTracking
.FirstOrDefaultAsync(od => od.OrderId == order.Id, cancellationToken);
if (delivery != null)
@@ -30,23 +35,26 @@ public class ConfirmOrderStepCommandHandler : IRequestHandler()
+ repositoryWrapper.SetRepository()
.Update(delivery);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
+
+ }
+ var customer = await repositoryWrapper.SetRepository().TableNoTracking
+ .Where(c => c.Id == order.CustomerId)
+ .Select(CustomerMapper.ProjectToSDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (customer != null)
+ {
+ await smsService.SendLookUpAsync(customer.PhoneNumber, "customer-deliveryOrder",
+ order.FactorCode, request.TrackingCode,null, PersianDateTime.Today.ToLongDateString(), $"{customer.FirstName} {customer.LastName}");
}
}
- switch (request.NextOrderStatus)
- {
- case :
- break;
- }
-
-
- _repositoryWrapper.SetRepository()
+ repositoryWrapper.SetRepository()
.Update(order);
- await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ await repositoryWrapper.SaveChangesAsync(cancellationToken);
return true;
}
diff --git a/Netina.Core/Netina.Core.csproj b/Netina.Core/Netina.Core.csproj
index 612cf73..f9710f9 100644
--- a/Netina.Core/Netina.Core.csproj
+++ b/Netina.Core/Netina.Core.csproj
@@ -47,7 +47,6 @@
-