- Add GetUserPackageStatusQueryValidator for user package status validation. - Create ArchiveMessageCommand and ArchiveMessageCommandHandler for archiving public messages. - Implement ArchiveMessageCommandValidator to validate message ID. - Introduce PublishMessageCommand and PublishMessageCommandHandler for publishing messages. - Add PublishMessageCommandValidator for validating publish message requests. - Implement GetPublicMessageQuery and GetPublicMessageQueryHandler for retrieving public messages. - Create GetPublicMessageQueryValidator for validating public message requests. - Add ApplyDiscountToOrderCommand and ApplyDiscountToOrderCommandHandler for applying discounts to orders. - Implement ApplyDiscountToOrderCommandValidator for validating discount application requests. - Create UpdateOrderStatusCommand and UpdateOrderStatusCommandHandler for changing order statuses. - Implement UpdateOrderStatusCommandValidator for validating order status updates. - Add CalculateOrderPVQuery and CalculateOrderPVQueryHandler for calculating order PV. - Implement CalculateOrderPVQueryValidator for validating PV calculation requests. - Create GetOrdersByDateRangeQuery and GetOrdersByDateRangeQueryHandler for retrieving orders by date range. - Implement GetOrdersByDateRangeQueryValidator for validating date range queries. - Add PublicMessage entity to represent public messages in the system. - Implement PublicMessageService for handling public message operations via gRPC.
47 lines
1.9 KiB
C#
47 lines
1.9 KiB
C#
using CMSMicroservice.Application.Common.Interfaces;
|
|
|
|
namespace CMSMicroservice.Application.PublicMessageCQ.Queries.GetPublicMessage;
|
|
|
|
public class GetPublicMessageQueryHandler : IRequestHandler<GetPublicMessageQuery, PublicMessageDto?>
|
|
{
|
|
private readonly IApplicationDbContext _context;
|
|
|
|
public GetPublicMessageQueryHandler(IApplicationDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<PublicMessageDto?> Handle(GetPublicMessageQuery request, CancellationToken cancellationToken)
|
|
{
|
|
// TODO: پیادهسازی دریافت پیام
|
|
// 1. پیدا کردن پیام:
|
|
// - var message = await _context.PublicMessages
|
|
// .AsNoTracking()
|
|
// .FirstOrDefaultAsync(m => m.Id == request.MessageId, cancellationToken)
|
|
//
|
|
// 2. چک null:
|
|
// - if (message == null) return null
|
|
//
|
|
// 3. Map به DTO:
|
|
// - return new PublicMessageDto {
|
|
// Id = message.Id,
|
|
// Title = message.Title,
|
|
// Content = message.Content,
|
|
// MessageType = message.MessageType,
|
|
// IsActive = message.IsActive,
|
|
// IsArchived = message.IsArchived,
|
|
// StartDate = message.StartDate,
|
|
// EndDate = message.EndDate,
|
|
// PublishedAt = message.PublishedAt,
|
|
// ArchivedAt = message.ArchivedAt,
|
|
// CreatedAt = message.CreatedAt,
|
|
// LastModifiedAt = message.LastModifiedAt
|
|
// }
|
|
//
|
|
// نکته: این query برای Admin است و همه پیامها (حتی آرشیو شده) را برمیگرداند
|
|
// نکته: برای کاربران عادی از GetActiveMessages استفاده میشود
|
|
|
|
throw new NotImplementedException("GetPublicMessage needs implementation");
|
|
}
|
|
}
|