Add validators and services for Product Galleries and Product Tags

- Implemented Create, Delete, Get, and Update validators for Product Galleries.
- Added Create, Delete, Get, and Update validators for Product Tags.
- Created service classes for handling Discount Categories, Discount Orders, Discount Products, Discount Shopping Cart, Product Categories, Product Galleries, and Product Tags.
- Each service class integrates with CQRS for command and query handling.
- Established mapping profiles for Product Galleries.
This commit is contained in:
masoodafar-web
2025-12-04 02:40:49 +03:30
parent 40d54d08fc
commit f0f48118e7
436 changed files with 33159 additions and 2005 deletions
@@ -12,8 +12,8 @@ public class CreateNewTransactionsCommandHandler : IRequestHandler<CreateNewTran
public async Task<CreateNewTransactionsResponseDto> Handle(CreateNewTransactionsCommand request,
CancellationToken cancellationToken)
{
var entity = request.Adapt<Transactions>();
await _context.Transactionss.AddAsync(entity, cancellationToken);
var entity = request.Adapt<Transaction>();
await _context.Transactions.AddAsync(entity, cancellationToken);
entity.AddDomainEvent(new CreateNewTransactionsEvent(entity));
await _context.SaveChangesAsync(cancellationToken);
return entity.Adapt<CreateNewTransactionsResponseDto>();
@@ -11,10 +11,10 @@ public class DeleteTransactionsCommandHandler : IRequestHandler<DeleteTransactio
public async Task<Unit> Handle(DeleteTransactionsCommand request, CancellationToken cancellationToken)
{
var entity = await _context.Transactionss
.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken) ?? throw new NotFoundException(nameof(Transactions), request.Id);
var entity = await _context.Transactions
.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken) ?? throw new NotFoundException(nameof(Transaction), request.Id);
entity.IsDeleted = true;
_context.Transactionss.Update(entity);
_context.Transactions.Update(entity);
entity.AddDomainEvent(new DeleteTransactionsEvent(entity));
await _context.SaveChangesAsync(cancellationToken);
return Unit.Value;
@@ -15,12 +15,12 @@ public class RefundTransactionCommandHandler : IRequestHandler<RefundTransaction
public async Task<RefundTransactionResponseDto> Handle(RefundTransactionCommand request, CancellationToken cancellationToken)
{
// پیدا کردن تراکنش اصلی
var originalTransaction = await _context.Transactionss
var originalTransaction = await _context.Transactions
.FirstOrDefaultAsync(t => t.Id == request.TransactionId, cancellationToken);
if (originalTransaction == null)
{
throw new NotFoundException(nameof(Transactions), request.TransactionId);
throw new NotFoundException(nameof(Transaction), request.TransactionId);
}
// چک کردن که تراکنش Success باشد
@@ -38,7 +38,7 @@ public class RefundTransactionCommandHandler : IRequestHandler<RefundTransaction
}
// ایجاد تراکنش استرداد جدید
var refundTransaction = new Transactions
var refundTransaction = new Transaction
{
Amount = -refundAmount, // مبلغ منفی برای استرداد
Description = $"استرداد تراکنش {request.TransactionId}: {request.RefundReason}",
@@ -48,7 +48,7 @@ public class RefundTransactionCommandHandler : IRequestHandler<RefundTransaction
Type = TransactionType.Buy // یا می‌تونیم یک نوع جدید برای Refund تعریف کنیم
};
await _context.Transactionss.AddAsync(refundTransaction, cancellationToken);
await _context.Transactions.AddAsync(refundTransaction, cancellationToken);
refundTransaction.AddDomainEvent(new RefundTransactionEvent(refundTransaction, originalTransaction));
await _context.SaveChangesAsync(cancellationToken);
@@ -11,10 +11,10 @@ public class UpdateTransactionsCommandHandler : IRequestHandler<UpdateTransactio
public async Task<Unit> Handle(UpdateTransactionsCommand request, CancellationToken cancellationToken)
{
var entity = await _context.Transactionss
.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken) ?? throw new NotFoundException(nameof(Transactions), request.Id);
var entity = await _context.Transactions
.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken) ?? throw new NotFoundException(nameof(Transaction), request.Id);
request.Adapt(entity);
_context.Transactionss.Update(entity);
_context.Transactions.Update(entity);
entity.AddDomainEvent(new UpdateTransactionsEvent(entity));
await _context.SaveChangesAsync(cancellationToken);
return Unit.Value;
@@ -15,12 +15,12 @@ public class VerifyTransactionCommandHandler : IRequestHandler<VerifyTransaction
public async Task<VerifyTransactionResponseDto> Handle(VerifyTransactionCommand request, CancellationToken cancellationToken)
{
// پیدا کردن تراکنش
var transaction = await _context.Transactionss
var transaction = await _context.Transactions
.FirstOrDefaultAsync(t => t.Id == request.TransactionId, cancellationToken);
if (transaction == null)
{
throw new NotFoundException(nameof(Transactions), request.TransactionId);
throw new NotFoundException(nameof(Transaction), request.TransactionId);
}
// چک کردن که تراکنش در وضعیت Pending باشد
@@ -10,7 +10,7 @@ public class GetAllTransactionsByFilterQueryHandler : IRequestHandler<GetAllTran
public async Task<GetAllTransactionsByFilterResponseDto> Handle(GetAllTransactionsByFilterQuery request, CancellationToken cancellationToken)
{
var query = _context.Transactionss
var query = _context.Transactions
.ApplyOrder(sortBy: request.SortBy)
.AsNoTracking()
.AsQueryable();
@@ -11,12 +11,12 @@ public class GetTransactionsQueryHandler : IRequestHandler<GetTransactionsQuery,
public async Task<GetTransactionsResponseDto> Handle(GetTransactionsQuery request,
CancellationToken cancellationToken)
{
var response = await _context.Transactionss
var response = await _context.Transactions
.AsNoTracking()
.Where(x => x.Id == request.Id)
.ProjectToType<GetTransactionsResponseDto>()
.FirstOrDefaultAsync(cancellationToken);
return response ?? throw new NotFoundException(nameof(Transactions), request.Id);
return response ?? throw new NotFoundException(nameof(Transaction), request.Id);
}
}