feat: Implement user permission checks and manual payment functionalities

- Added CheckUserPermissionQuery and CheckUserPermissionQueryHandler for permission validation.
- Introduced GetUserRolesQuery and GetUserRolesQueryHandler to retrieve user roles.
- Created IPermissionService interface and its implementation in PermissionService.
- Defined permission and role constants in PermissionDefinitions.
- Developed SetDefaultVatPercentageCommand and its handler for VAT configuration.
- Implemented GetCurrentVatPercentageQuery and handler to fetch current VAT settings.
- Added manual payment commands: CreateManualPayment, ApproveManualPayment, and RejectManualPayment with respective handlers and validators.
- Created GetManualPaymentsQuery and handler for retrieving manual payment records.
- Integrated gRPC services for manual payments with appropriate permission checks.
- Established Protobuf definitions for manual payment operations and metadata.
This commit is contained in:
masoodafar-web
2025-12-05 17:27:38 +03:30
parent 67b43fea7a
commit 4aa9f28f6e
51 changed files with 1294 additions and 107 deletions

View File

@@ -15,53 +15,3 @@ public class CancelOrderCommandValidator : AbstractValidator<CancelOrderCommand>
.WithMessage("دلیل لغو سفارش الزامی است");
}
}
*** Add File: BackOffice.BFF/src/BackOffice.BFF.Application/UserOrderCQ/Commands/CancelOrder/CancelOrderCommandHandler.cs
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using MediatR;
using Microsoft.Extensions.Logging;
namespace BackOffice.BFF.Application.UserOrderCQ.Commands.CancelOrder;
public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, CancelOrderResponse>
{
private readonly IApplicationContractContext _context;
private readonly ILogger<CancelOrderCommandHandler> _logger;
public CancelOrderCommandHandler(
IApplicationContractContext context,
ILogger<CancelOrderCommandHandler> logger)
{
_context = context;
_logger = logger;
}
public async Task<CancelOrderResponse> Handle(CancelOrderCommand request, CancellationToken cancellationToken)
{
var grpcRequest = new CMSMicroservice.Protobuf.Protos.UserOrder.CancelOrderRequest
{
OrderId = request.OrderId,
CancelReason = request.CancelReason ?? string.Empty,
RefundPayment = request.RefundPayment
};
var response = await _context.UserOrders.CancelOrderAsync(grpcRequest, cancellationToken: cancellationToken);
_logger.LogInformation(
"Cancelled order {OrderId}. Status={Status} RefundProcessed={RefundProcessed}",
response.OrderId,
response.Status,
response.RefundProcessed);
return new CancelOrderResponse
{
OrderId = response.OrderId,
Status = (int)response.Status,
Message = response.Message,
RefundProcessed = response.RefundProcessed
};
}
}