feat: Implement customer profile and referral queries
- Add GetCustomerProfileResponseDto for retrieving customer profile information. - Create GetCustomerReferralsQuery and GetCustomerReferralsQueryHandler to fetch customer referrals with pagination and filtering options. - Introduce GetCustomerReferralsResponseDto to structure the response for customer referrals. - Implement GetCustomerSettingsQuery and GetCustomerSettingsQueryHandler to retrieve user settings. - Add GetCustomerOrder and GetCustomerOrderQueryHandler for fetching specific customer orders. - Create GetCustomerOrderHistoryQuery and GetCustomerOrderHistoryQueryHandler to retrieve order history with filtering options. - Implement GetCustomerOrdersQuery and GetCustomerOrdersQueryHandler for fetching multiple customer orders with filters. - Add GetCustomerWalletChangeLogQuery and GetCustomerWalletChangeLogQueryHandler for retrieving wallet change logs. - Implement GetCustomerWithdrawalSettingsQuery and GetCustomerWithdrawalSettingsQueryHandler for fetching withdrawal settings. - Create GetCustomerWithdrawalsQuery and GetCustomerWithdrawalsQueryHandler to retrieve customer withdrawal requests.
This commit is contained in:
@@ -7,15 +7,22 @@ using CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactions;
|
||||
using CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||
using CMSMicroservice.Application.TransactionsCQ.Commands.VerifyTransaction;
|
||||
using CMSMicroservice.Application.TransactionsCQ.Commands.RefundTransaction;
|
||||
using CMSMicroservice.Application.TransactionsCQ.Queries.GetCustomerTransaction;
|
||||
using CMSMicroservice.Application.TransactionsCQ.Queries.GetCustomerTransactionsByFilter;
|
||||
using AppModels = CMSMicroservice.Application.Common.Models;
|
||||
using MediatR;
|
||||
using Mapster;
|
||||
|
||||
namespace CMSMicroservice.WebApi.Services;
|
||||
public class TransactionsService : TransactionsContract.TransactionsContractBase
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
private readonly ISender _sender;
|
||||
|
||||
public TransactionsService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
public TransactionsService(IDispatchRequestToCQRS dispatchRequestToCQRS, ISender sender)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
_sender = sender;
|
||||
}
|
||||
public override async Task<CreateNewTransactionsResponse> CreateNewTransactions(CreateNewTransactionsRequest request, ServerCallContext context)
|
||||
{
|
||||
@@ -52,87 +59,64 @@ public class TransactionsService : TransactionsContract.TransactionsContractBase
|
||||
|
||||
public override async Task<GetCustomerTransactionResponse> GetCustomerTransaction(GetCustomerTransactionRequest request, ServerCallContext context)
|
||||
{
|
||||
// Mock response for customer transaction
|
||||
var query = new GetCustomerTransactionQuery
|
||||
{
|
||||
Id = request.Id,
|
||||
Authority = request.Authority,
|
||||
UserId = 0 // از JWT دریافت میشود
|
||||
};
|
||||
|
||||
var result = await _sender.Send(query, context.CancellationToken);
|
||||
|
||||
return new GetCustomerTransactionResponse
|
||||
{
|
||||
Id = request.Id ?? 1,
|
||||
MerchantId = "MERCHANT123",
|
||||
Amount = 150000,
|
||||
CallbackUrl = "https://mysite.com/callback",
|
||||
Description = "خرید محصولات",
|
||||
Mobile = "09123456789",
|
||||
Email = "customer@example.com",
|
||||
RequestStatusCode = 100,
|
||||
RequestStatusMessage = "Success",
|
||||
Authority = request.Authority ?? "A0000000000000000000000000001234567",
|
||||
FeeType = "Payer",
|
||||
Fee = 1500,
|
||||
Currency = CurrencyEnum.Irr,
|
||||
PaymentStatus = true,
|
||||
VerificationStatusCode = 101,
|
||||
VerificationStatusMessage = "Verified",
|
||||
CardHash = "4F8A56B2C1D3E9A7B5C2F1E8D6A9B4C7E3F2A1D5",
|
||||
CardPan = "622106******4567",
|
||||
RefId = "REF123456789",
|
||||
OrderId = "ORDER001",
|
||||
Type = TransactionTypeEnum.Real
|
||||
Id = result.Id,
|
||||
Amount = result.Amount,
|
||||
Description = result.Description,
|
||||
PaymentStatus = result.PaymentStatus == Domain.Enums.PaymentStatus.Success,
|
||||
RefId = result.RefId,
|
||||
Type = (TransactionTypeEnum)result.Type,
|
||||
Currency = CurrencyEnum.Irr
|
||||
};
|
||||
}
|
||||
|
||||
public override async Task<GetCustomerTransactionsByFilterResponse> GetCustomerTransactionsByFilter(GetCustomerTransactionsByFilterRequest request, ServerCallContext context)
|
||||
{
|
||||
// Mock response for customer transactions list
|
||||
return new GetCustomerTransactionsByFilterResponse
|
||||
var query = new GetCustomerTransactionsByFilterQuery
|
||||
{
|
||||
MetaData = new CMSMicroservice.Protobuf.Protos.MetaData
|
||||
{
|
||||
CurrentPage = 1,
|
||||
TotalPage = 1,
|
||||
PageSize = 10,
|
||||
TotalCount = 2,
|
||||
HasPrevious = false,
|
||||
HasNext = false
|
||||
},
|
||||
Models =
|
||||
{
|
||||
new GetCustomerTransactionsByFilterResponseModel
|
||||
{
|
||||
Id = 1,
|
||||
MerchantId = "MERCHANT123",
|
||||
Amount = 150000,
|
||||
CallbackUrl = "https://mysite.com/callback",
|
||||
Description = "خرید محصولات",
|
||||
Mobile = "09123456789",
|
||||
Email = "customer@example.com",
|
||||
Authority = "A0000000000000000000000000001234567",
|
||||
Fee = 1500,
|
||||
Currency = CurrencyEnum.Irr,
|
||||
PaymentStatus = true,
|
||||
CardHash = "4F8A56B2C1D3E9A7B5C2F1E8D6A9B4C7E3F2A1D5",
|
||||
CardPan = "622106******4567",
|
||||
RefId = "REF123456789",
|
||||
OrderId = "ORDER001",
|
||||
Type = TransactionTypeEnum.Real
|
||||
},
|
||||
new GetCustomerTransactionsByFilterResponseModel
|
||||
{
|
||||
Id = 2,
|
||||
MerchantId = "MERCHANT123",
|
||||
Amount = 75000,
|
||||
CallbackUrl = "https://mysite.com/callback",
|
||||
Description = "تست پرداخت",
|
||||
Mobile = "09123456789",
|
||||
Email = "customer@example.com",
|
||||
Authority = "A0000000000000000000000000001234568",
|
||||
Fee = 750,
|
||||
Currency = CurrencyEnum.Irr,
|
||||
PaymentStatus = false,
|
||||
RefId = "REF123456790",
|
||||
OrderId = "ORDER002",
|
||||
Type = TransactionTypeEnum.Sandbox
|
||||
}
|
||||
}
|
||||
UserId = 0, // از JWT دریافت میشود
|
||||
PaginationState = request.PaginationState?.Adapt<AppModels.PaginationState>(),
|
||||
SortBy = request.SortBy,
|
||||
IdFilter = request.Filter?.Id,
|
||||
AmountFilter = request.Filter?.Amount,
|
||||
DescriptionFilter = request.Filter?.Description,
|
||||
PaymentStatusFilter = request.Filter?.PaymentStatus,
|
||||
RefIdFilter = request.Filter?.RefId,
|
||||
TypeFilter = request.Filter?.Type != null ? (int?)request.Filter.Type : null
|
||||
};
|
||||
|
||||
var result = await _sender.Send(query, context.CancellationToken);
|
||||
|
||||
var response = new GetCustomerTransactionsByFilterResponse
|
||||
{
|
||||
MetaData = result.MetaData.Adapt<CMSMicroservice.Protobuf.Protos.MetaData>()
|
||||
};
|
||||
|
||||
foreach (var model in result.Models)
|
||||
{
|
||||
response.Models.Add(new GetCustomerTransactionsByFilterResponseModel
|
||||
{
|
||||
Id = model.Id,
|
||||
Amount = model.Amount,
|
||||
Description = model.Description,
|
||||
PaymentStatus = model.PaymentStatus == Domain.Enums.PaymentStatus.Success,
|
||||
RefId = model.RefId,
|
||||
Type = (TransactionTypeEnum)model.Type,
|
||||
Currency = CurrencyEnum.Irr
|
||||
});
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
public override async Task<CustomerPaymentRequestResponse> CustomerPaymentRequest(CustomerPaymentRequestRequest request, ServerCallContext context)
|
||||
|
||||
Reference in New Issue
Block a user