using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Text.Json.Serialization; using System.Threading.Tasks; using gehGassi.Domain.Base; using gehGassi.Domain.Common; namespace gehGassi.Domain.Messages { /// /// Repräsentiert eine Systemnachricht /// public class SystemMessage : SyncEntity { /// /// 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 AppUserType 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 SystemMessageType 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; } } /// /// Klasse für die Abfrage von AppUsern für den Versand von Systemnachrichten /// public class SystemMessageAppUserQuery { /// /// Typ des App-Users /// [JsonPropertyName("appUserType")] public AppUserType AppUserType { get; set; } /// /// Land oder leer /// [JsonPropertyName("country")] public string Country { get; set; } /// /// Bundesland oder leer /// [JsonPropertyName("state")] public string State { get; set; } /// /// Stadt oder leer /// [JsonPropertyName("city")] public string City { get; set; } /// /// Postleitzahl oder leer /// [JsonPropertyName("zip")] public string Zip { get; set; } /// /// Nur verifizierte App-User /// [JsonPropertyName("verifiedOnly")] public bool VerifiedOnly { get; set; } /// /// Geschlecht oder leer /// [JsonPropertyName("sex")] public Sex? Sex { get; set; } } }