81 lines
2.7 KiB
C#
81 lines
2.7 KiB
C#
// GetAllMessages - Admin view
|
|
using BackOffice.BFF.Application.Common.Interfaces;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
using MediatR;
|
|
using BffProto = BackOffice.BFF.PublicMessage.Protobuf;
|
|
using CmsProto = CMSMicroservice.Protobuf.Protos;
|
|
|
|
namespace BackOffice.BFF.Application.PublicMessageCQ.Queries.GetAllMessages;
|
|
|
|
public record GetAllMessagesQuery : IRequest<BffProto.GetAllMessagesResponse>
|
|
{
|
|
public int? Status { get; init; }
|
|
public int? MessageType { get; init; }
|
|
public int PageNumber { get; init; }
|
|
public int PageSize { get; init; }
|
|
}
|
|
|
|
public class GetAllMessagesQueryHandler : IRequestHandler<GetAllMessagesQuery, BffProto.GetAllMessagesResponse>
|
|
{
|
|
private readonly IApplicationContractContext _context;
|
|
|
|
public GetAllMessagesQueryHandler(IApplicationContractContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<BffProto.GetAllMessagesResponse> Handle(GetAllMessagesQuery request, CancellationToken cancellationToken)
|
|
{
|
|
var cmsRequest = new CmsProto.GetAllMessagesRequest
|
|
{
|
|
PageNumber = request.PageNumber,
|
|
PageSize = request.PageSize
|
|
};
|
|
|
|
if (request.Status.HasValue)
|
|
{
|
|
cmsRequest.IsActive = request.Status.Value == 1;
|
|
}
|
|
|
|
if (request.MessageType.HasValue)
|
|
{
|
|
cmsRequest.Type = request.MessageType.Value;
|
|
}
|
|
|
|
var cmsResponse = await _context.PublicMessages.GetAllMessagesAsync(cmsRequest, cancellationToken: cancellationToken);
|
|
|
|
var result = new BffProto.GetAllMessagesResponse
|
|
{
|
|
TotalCount = (int)cmsResponse.MetaData.TotalCount,
|
|
PageNumber = request.PageNumber,
|
|
PageSize = request.PageSize
|
|
};
|
|
|
|
foreach (var message in cmsResponse.Messages)
|
|
{
|
|
result.Messages.Add(new BffProto.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;
|
|
}
|
|
}
|