using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; using System.Text.Json.Serialization; using gehGassi.Dto.Common; namespace gehGassi.Dto.Messages { /// /// Dto für eine Systemnachricht /// public class SystemMessageDto : SyncEntityDto { /// /// Benutrzer für den die Systemnachricht ist /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// Typ des Appusers damit man bei jenen die beides sind auch unterscheiden kann /// public AppUserTypeDto AppUserType { get; set; } /// /// Id des verknüpften Objektes /// [Required] [MaxLength(128)] public string Key { get; set; } /// /// Typ des Objektes das verbunden wurde /// [Required] [MaxLength(100)] public string Table { get; set; } /// /// Typ der Systemnachricht /// [Required] public SystemMessageTypeDto Type { get; set; } /// /// Optional: Nachricht /// [MaxLength(500)] public string Message { get; set; } /// /// Wann läuft die Nachricht ab? /// public DateTimeOffset? Expires { get; set; } /// /// Wurde die Nachricht gelesen? /// [Required] public bool Read { get; set; } /// /// Wann gelesen? /// public DateTimeOffset? ReadDate { get; set; } /// /// Wann erstellt? /// [Required] public DateTimeOffset Created { get; set; } } /// /// Dto für die Bestätigung des erfolgreichen Erhalts von SystemNachrichten /// public class SystemMessageConfirmationDto { /// /// Sender der Nachricht /// [MaxLength(128)] [JsonPropertyName("senderId")] public string SenderId { get; set; } /// /// Letztes update /// [JsonPropertyName("lastUpdate")] public DateTimeOffset? LastUpdate { get; set; } } /// /// DTO für das Entfernen einer oder mehrerer Systemnachrichten /// public class SystemMessageRemoveDto { /// /// Benutrzer für den die Systemnachricht ist /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// Typ des Appusers damit man bei jenen die beides sind auch unterscheiden kann /// public AppUserTypeDto AppUserType { get; set; } /// /// Id des verknüpften Objektes /// [Required] [MaxLength(128)] public string Key { get; set; } /// /// Typ des Objektes das verbunden wurde /// [Required] [MaxLength(100)] public string Table { get; set; } /// /// Alles löschen was kleiner als dieses Datum ist /// [Required] public DateTimeOffset Created { get; set; } } }