feat: Add discount module with protobuf definitions and gRPC services

This commit is contained in:
masoodafar-web
2025-12-06 01:39:22 +03:30
parent 4aa9f28f6e
commit 09fc0d85af
51 changed files with 1964 additions and 80 deletions
@@ -1,9 +1,9 @@
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.ApplyDiscountToOrder;
public record ApplyDiscountToOrderCommand : IRequest<ApplyDiscountToOrderResponse>
public record ApplyDiscountToOrderCommand : IRequest<BffProto.ApplyDiscountToOrderResponse>
{
public long OrderId { get; init; }
public long DiscountAmount { get; init; }
@@ -1,12 +1,12 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using MediatR;
using Microsoft.Extensions.Logging;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CmsProto = CMSMicroservice.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.ApplyDiscountToOrder;
public class ApplyDiscountToOrderCommandHandler : IRequestHandler<ApplyDiscountToOrderCommand, ApplyDiscountToOrderResponse>
public class ApplyDiscountToOrderCommandHandler : IRequestHandler<ApplyDiscountToOrderCommand, BffProto.ApplyDiscountToOrderResponse>
{
private readonly IApplicationContractContext _context;
private readonly ILogger<ApplyDiscountToOrderCommandHandler> _logger;
@@ -19,9 +19,9 @@ public class ApplyDiscountToOrderCommandHandler : IRequestHandler<ApplyDiscountT
_logger = logger;
}
public async Task<ApplyDiscountToOrderResponse> Handle(ApplyDiscountToOrderCommand request, CancellationToken cancellationToken)
public async Task<BffProto.ApplyDiscountToOrderResponse> Handle(ApplyDiscountToOrderCommand request, CancellationToken cancellationToken)
{
var grpcRequest = new ApplyDiscountToOrderRequest
var grpcRequest = new CmsProto.ApplyDiscountToOrderRequest
{
OrderId = request.OrderId,
DiscountAmount = request.DiscountAmount,
@@ -37,7 +37,7 @@ public class ApplyDiscountToOrderCommandHandler : IRequestHandler<ApplyDiscountT
response.DiscountAmount,
response.FinalAmount);
return new ApplyDiscountToOrderResponse
return new BffProto.ApplyDiscountToOrderResponse
{
Success = response.Success,
Message = response.Message,
@@ -1,9 +1,9 @@
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.CancelOrder;
public record CancelOrderCommand : IRequest<CancelOrderResponse>
public record CancelOrderCommand : IRequest<BffProto.CancelOrderResponse>
{
public long OrderId { get; init; }
public string CancelReason { get; init; } = string.Empty;
@@ -1,12 +1,12 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using MediatR;
using Microsoft.Extensions.Logging;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CmsProto = CMSMicroservice.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.CancelOrder;
public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, CancelOrderResponse>
public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, BffProto.CancelOrderResponse>
{
private readonly IApplicationContractContext _context;
private readonly ILogger<CancelOrderCommandHandler> _logger;
@@ -19,9 +19,9 @@ public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, Can
_logger = logger;
}
public async Task<CancelOrderResponse> Handle(CancelOrderCommand request, CancellationToken cancellationToken)
public async Task<BffProto.CancelOrderResponse> Handle(CancelOrderCommand request, CancellationToken cancellationToken)
{
var grpcRequest = new CMSMicroservice.Protobuf.Protos.UserOrder.CancelOrderRequest
var grpcRequest = new CmsProto.CancelOrderRequest
{
OrderId = request.OrderId,
CancelReason = request.CancelReason ?? string.Empty,
@@ -36,7 +36,7 @@ public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, Can
response.Status,
response.RefundProcessed);
return new CancelOrderResponse
return new BffProto.CancelOrderResponse
{
OrderId = response.OrderId,
Status = (int)response.Status,
@@ -1,9 +1,9 @@
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateOrderStatus;
public record UpdateOrderStatusCommand : IRequest<UpdateOrderStatusResponse>
public record UpdateOrderStatusCommand : IRequest<BffProto.UpdateOrderStatusResponse>
{
public long OrderId { get; init; }
public int NewStatus { get; init; }
@@ -1,12 +1,12 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using MediatR;
using Microsoft.Extensions.Logging;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CmsProto = CMSMicroservice.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.UpdateOrderStatus;
public class UpdateOrderStatusCommandHandler : IRequestHandler<UpdateOrderStatusCommand, UpdateOrderStatusResponse>
public class UpdateOrderStatusCommandHandler : IRequestHandler<UpdateOrderStatusCommand, BffProto.UpdateOrderStatusResponse>
{
private readonly IApplicationContractContext _context;
private readonly ILogger<UpdateOrderStatusCommandHandler> _logger;
@@ -19,9 +19,9 @@ public class UpdateOrderStatusCommandHandler : IRequestHandler<UpdateOrderStatus
_logger = logger;
}
public async Task<UpdateOrderStatusResponse> Handle(UpdateOrderStatusCommand request, CancellationToken cancellationToken)
public async Task<BffProto.UpdateOrderStatusResponse> Handle(UpdateOrderStatusCommand request, CancellationToken cancellationToken)
{
var grpcRequest = new UpdateOrderStatusRequest
var grpcRequest = new CmsProto.UpdateOrderStatusRequest
{
OrderId = request.OrderId,
NewStatus = request.NewStatus
@@ -36,7 +36,7 @@ public class UpdateOrderStatusCommandHandler : IRequestHandler<UpdateOrderStatus
response.NewStatus,
response.Success);
return new UpdateOrderStatusResponse
return new BffProto.UpdateOrderStatusResponse
{
Success = response.Success,
Message = response.Message,
@@ -1,9 +1,9 @@
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Queries.CalculateOrderPV;
public record CalculateOrderPVQuery : IRequest<CalculateOrderPVResponse>
public record CalculateOrderPVQuery : IRequest<BffProto.CalculateOrderPVResponse>
{
public long OrderId { get; init; }
}
@@ -1,11 +1,11 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CmsProto = CMSMicroservice.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Queries.CalculateOrderPV;
public class CalculateOrderPVQueryHandler : IRequestHandler<CalculateOrderPVQuery, CalculateOrderPVResponse>
public class CalculateOrderPVQueryHandler : IRequestHandler<CalculateOrderPVQuery, BffProto.CalculateOrderPVResponse>
{
private readonly IApplicationContractContext _context;
@@ -14,16 +14,16 @@ public class CalculateOrderPVQueryHandler : IRequestHandler<CalculateOrderPVQuer
_context = context;
}
public async Task<CalculateOrderPVResponse> Handle(CalculateOrderPVQuery request, CancellationToken cancellationToken)
public async Task<BffProto.CalculateOrderPVResponse> Handle(CalculateOrderPVQuery request, CancellationToken cancellationToken)
{
var grpcRequest = new CalculateOrderPVRequest
var grpcRequest = new CmsProto.CalculateOrderPVRequest
{
OrderId = request.OrderId
};
var response = await _context.UserOrders.CalculateOrderPVAsync(grpcRequest, cancellationToken: cancellationToken);
var result = new CalculateOrderPVResponse
var result = new BffProto.CalculateOrderPVResponse
{
OrderId = response.OrderId,
TotalPv = response.TotalPv
@@ -31,7 +31,7 @@ public class CalculateOrderPVQueryHandler : IRequestHandler<CalculateOrderPVQuer
foreach (var product in response.Products)
{
result.Products.Add(new ProductPVDto
result.Products.Add(new BffProto.ProductPVDto
{
ProductId = product.ProductId,
ProductTitle = product.ProductTitle,
@@ -1,9 +1,9 @@
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Queries.GetOrdersByDateRange;
public record GetOrdersByDateRangeQuery : IRequest<GetOrdersByDateRangeResponse>
public record GetOrdersByDateRangeQuery : IRequest<BffProto.GetOrdersByDateRangeResponse>
{
public DateTime StartDate { get; init; }
public DateTime EndDate { get; init; }
@@ -1,12 +1,12 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using Google.Protobuf.WellKnownTypes;
using MediatR;
using BffProto = BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CmsProto = CMSMicroservice.Protobuf.Protos.UserOrder;
namespace BackOffice.BFF.Application.UserOrderCQ.Queries.GetOrdersByDateRange;
public class GetOrdersByDateRangeQueryHandler : IRequestHandler<GetOrdersByDateRangeQuery, GetOrdersByDateRangeResponse>
public class GetOrdersByDateRangeQueryHandler : IRequestHandler<GetOrdersByDateRangeQuery, BffProto.GetOrdersByDateRangeResponse>
{
private readonly IApplicationContractContext _context;
@@ -15,9 +15,9 @@ public class GetOrdersByDateRangeQueryHandler : IRequestHandler<GetOrdersByDateR
_context = context;
}
public async Task<GetOrdersByDateRangeResponse> Handle(GetOrdersByDateRangeQuery request, CancellationToken cancellationToken)
public async Task<BffProto.GetOrdersByDateRangeResponse> Handle(GetOrdersByDateRangeQuery request, CancellationToken cancellationToken)
{
var grpcRequest = new GetOrdersByDateRangeRequest
var grpcRequest = new CmsProto.GetOrdersByDateRangeRequest
{
StartDate = Timestamp.FromDateTime(request.StartDate.ToUniversalTime()),
EndDate = Timestamp.FromDateTime(request.EndDate.ToUniversalTime()),
@@ -27,19 +27,19 @@ public class GetOrdersByDateRangeQueryHandler : IRequestHandler<GetOrdersByDateR
if (request.Status.HasValue)
{
grpcRequest.Status = new Int32Value { Value = request.Status.Value };
grpcRequest.Status = request.Status.Value;
}
if (request.UserId.HasValue)
{
grpcRequest.UserId = new Int64Value { Value = request.UserId.Value };
grpcRequest.UserId = request.UserId.Value;
}
var response = await _context.UserOrders.GetOrdersByDateRangeAsync(grpcRequest, cancellationToken: cancellationToken);
var result = new GetOrdersByDateRangeResponse
var result = new BffProto.GetOrdersByDateRangeResponse
{
MetaData = new MetaData
MetaData = new BffProto.MetaData
{
CurrentPage = response.MetaData.CurrentPage,
TotalPage = response.MetaData.TotalPage,
@@ -52,7 +52,7 @@ public class GetOrdersByDateRangeQueryHandler : IRequestHandler<GetOrdersByDateR
foreach (var order in response.Orders)
{
result.Orders.Add(new OrderSummaryDto
result.Orders.Add(new BffProto.OrderSummaryDto
{
OrderId = order.OrderId,
OrderNumber = order.OrderNumber,