2025-12-04 03:43:28 +03:30
|
|
|
// GetAllMessages - Admin view
|
2025-12-04 17:29:05 +03:30
|
|
|
using BackOffice.BFF.Application.Common.Interfaces;
|
|
|
|
|
using BackOffice.BFF.PublicMessage.Protobuf;
|
|
|
|
|
using CMSMicroservice.Protobuf.Protos;
|
|
|
|
|
using Google.Protobuf.WellKnownTypes;
|
2025-12-04 03:43:28 +03:30
|
|
|
using MediatR;
|
|
|
|
|
|
|
|
|
|
namespace BackOffice.BFF.Application.PublicMessageCQ.Queries.GetAllMessages;
|
|
|
|
|
|
2025-12-04 17:29:05 +03:30
|
|
|
public record GetAllMessagesQuery : IRequest<GetAllMessagesResponse>
|
2025-12-04 03:43:28 +03:30
|
|
|
{
|
2025-12-04 17:29:05 +03:30
|
|
|
public int? Status { get; init; }
|
|
|
|
|
public int? MessageType { get; init; }
|
2025-12-04 03:43:28 +03:30
|
|
|
public int PageNumber { get; init; }
|
|
|
|
|
public int PageSize { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-04 17:29:05 +03:30
|
|
|
public class GetAllMessagesQueryHandler : IRequestHandler<GetAllMessagesQuery, GetAllMessagesResponse>
|
2025-12-04 03:43:28 +03:30
|
|
|
{
|
2025-12-04 17:29:05 +03:30
|
|
|
private readonly IApplicationContractContext _context;
|
|
|
|
|
|
|
|
|
|
public GetAllMessagesQueryHandler(IApplicationContractContext context)
|
2025-12-04 03:43:28 +03:30
|
|
|
{
|
2025-12-04 17:29:05 +03:30
|
|
|
_context = context;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<GetAllMessagesResponse> Handle(GetAllMessagesQuery request, CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
var cmsRequest = new GetAllMessagesRequest
|
|
|
|
|
{
|
|
|
|
|
PageNumber = request.PageNumber,
|
|
|
|
|
PageSize = request.PageSize
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (request.Status.HasValue)
|
|
|
|
|
{
|
|
|
|
|
cmsRequest.IsActive = new BoolValue { Value = request.Status.Value == 1 };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (request.MessageType.HasValue)
|
|
|
|
|
{
|
|
|
|
|
cmsRequest.Type = new Int32Value { Value = request.MessageType.Value };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var cmsResponse = await _context.PublicMessages.GetAllMessagesAsync(cmsRequest, cancellationToken: cancellationToken);
|
|
|
|
|
|
|
|
|
|
var result = new GetAllMessagesResponse
|
|
|
|
|
{
|
|
|
|
|
TotalCount = (int)cmsResponse.MetaData.TotalCount,
|
|
|
|
|
PageNumber = request.PageNumber,
|
|
|
|
|
PageSize = request.PageSize
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
foreach (var message in cmsResponse.Messages)
|
|
|
|
|
{
|
|
|
|
|
result.Messages.Add(new AdminPublicMessageDto
|
|
|
|
|
{
|
|
|
|
|
MessageId = message.Id,
|
|
|
|
|
Title = message.Title,
|
|
|
|
|
Content = message.Content,
|
|
|
|
|
MessageType = message.Type,
|
|
|
|
|
MessageTypeName = message.TypeName,
|
|
|
|
|
Priority = message.Priority,
|
|
|
|
|
PriorityName = message.PriorityName,
|
|
|
|
|
Status = message.IsActive ? 1 : 0,
|
|
|
|
|
StatusName = message.IsActive ? "Active" : (message.IsExpired ? "Expired" : "Inactive"),
|
|
|
|
|
StartsAt = message.StartsAt,
|
|
|
|
|
ExpiresAt = message.ExpiresAt,
|
|
|
|
|
PublishedAt = null,
|
|
|
|
|
ArchivedAt = null,
|
|
|
|
|
IsDismissible = false,
|
|
|
|
|
TargetAudience = string.Empty,
|
|
|
|
|
Created = message.Created,
|
|
|
|
|
LastModified = message.LastModified
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
2025-12-04 03:43:28 +03:30
|
|
|
}
|
|
|
|
|
}
|