Files
emall-api/FutureMailAPI/DTOs/NotificationDTOs.cs

70 lines
2.7 KiB
C#
Raw Normal View History

2025-10-16 09:56:36 +08:00
namespace FutureMailAPI.DTOs
{
public class NotificationDeviceDto
{
public string DeviceId { get; set; } = string.Empty;
public string DeviceType { get; set; } = string.Empty; // iOS, Android, Web
public string DeviceToken { get; set; } = string.Empty;
public bool IsActive { get; set; } = true;
public DateTime RegisteredAt { get; set; }
public DateTime? LastActiveAt { get; set; }
}
public class NotificationSettingsDto
{
public bool EmailDelivery { get; set; } = true;
public bool PushNotification { get; set; } = true;
public bool InAppNotification { get; set; } = true;
public bool DeliveryReminder { get; set; } = true;
public bool ReceivedNotification { get; set; } = true;
public bool SystemUpdates { get; set; } = false;
public string QuietHoursStart { get; set; } = "22:00";
public string QuietHoursEnd { get; set; } = "08:00";
public bool EnableQuietHours { get; set; } = false;
}
public class NotificationMessageDto
{
public string Id { get; set; } = string.Empty;
public int UserId { get; set; }
public string Title { get; set; } = string.Empty;
public string Body { get; set; } = string.Empty;
public string Type { get; set; } = string.Empty; // DELIVERY, RECEIVED, SYSTEM, REMINDER
public string RelatedEntityId { get; set; } = string.Empty; // 邮件ID等
public bool IsRead { get; set; } = false;
public DateTime CreatedAt { get; set; }
public DateTime? ReadAt { get; set; }
public Dictionary<string, object> Data { get; set; } = new();
}
public class NotificationDeviceRequestDto
{
public string DeviceType { get; set; } = string.Empty;
public string DeviceToken { get; set; } = string.Empty;
}
public class NotificationDeviceResponseDto
{
public string DeviceId { get; set; } = string.Empty;
public string DeviceType { get; set; } = string.Empty;
public bool IsActive { get; set; }
public DateTime RegisteredAt { get; set; }
}
public class NotificationListQueryDto
{
public bool UnreadOnly { get; set; } = false;
public string? Type { get; set; }
public int Page { get; set; } = 1;
public int Size { get; set; } = 20;
}
public class NotificationListResponseDto
{
public List<NotificationMessageDto> Notifications { get; set; } = new();
public int Total { get; set; }
public int UnreadCount { get; set; }
public int Page { get; set; }
public int Size { get; set; }
}
}