using SPMS.Domain.Entities; using SPMS.Domain.Enums; namespace SPMS.Domain.Interfaces; public interface IPushSendLogRepository : IRepository { Task<(IReadOnlyList Items, int TotalCount)> GetPagedWithMessageAsync( long serviceId, int page, int size, long? messageId = null, long? deviceId = null, PushResult? status = null, DateTime? startDate = null, DateTime? endDate = null); Task> GetHourlyStatsAsync(long serviceId, DateTime startDate, DateTime endDate); Task GetMessageStatsAsync(long serviceId, long messageId, DateTime? startDate, DateTime? endDate); Task> GetMessageDailyStatsAsync(long serviceId, long messageId, DateTime? startDate, DateTime? endDate); } public class HourlyStatRaw { public int Hour { get; set; } public int SendCount { get; set; } public int SuccessCount { get; set; } public int FailCount { get; set; } } public class MessageStatRaw { public int TotalSend { get; set; } public int TotalSuccess { get; set; } public int TotalFail { get; set; } public DateTime? FirstSentAt { get; set; } public DateTime? LastSentAt { get; set; } } public class MessageDailyStatRaw { public DateOnly StatDate { get; set; } public int SendCount { get; set; } public int SuccessCount { get; set; } }