using gehGassi.Domain.Common; 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; namespace gehGassi.Domain.Messages { /// /// Repräsentiert eine Systemnachricht di von gehgassi an mehrere App-User gesendet werden soll /// public class SystemMessageToSend : IAuditable { /// /// Id der Nachricht /// [Key] public long Id { get; set; } /// /// Interner titel /// [Required] [MaxLength(200)] public string Title { get; set; } /// /// Nachricht die gesendet werden soll /// [Required] [MaxLength(500)] public string Message { get; set; } /// /// Anzahl der App-User die die Nachricht erhalten sollen /// public int AppUserCount { get; set; } /// /// Anzahl der nachrichten die gesendet wurden /// public int SentCount { get; set; } /// /// Datum wann die Nachricht gesendet werden soll /// public DateTimeOffset? ToSendDate { get; set; } /// /// Wurden die Nachrichten bereits gesendet? /// [Required] public bool HasBeenSent { get; set; } /// /// Datum wann die Nachricht gesendet wurden /// public DateTimeOffset? SentDate { get; set; } /// /// Von wem gesendet? /// [MaxLength(255)] public string SentBy { get; set; } /// /// Push-Notification senden? /// public bool SendPushNotification { get; set; } #region Filter-Settings /// /// Typ des App-Users /// [Required] public AppUserType AppUserType { get; set; } /// /// Land oder leer /// [MaxLength(2)] public string Country { get; set; } /// /// Bundesland oder leer /// [MaxLength(100)] public string State { get; set; } /// /// Stadt oder leer /// [MaxLength(100)] public string City { get; set; } /// /// Postleitzahl oder leer /// [MaxLength(20)] public string Zip { get; set; } /// /// Nur verifizierte App-User /// public bool VerifiedOnly { get; set; } /// /// Geschlecht oder leer /// public Sex? Sex { get; set; } #endregion /// /// Wann erstellt /// public DateTimeOffset Created { get; set; } /// /// Erstellt von? /// [Required] public string CreatedBy { get; set; } #region IAuditable /// /// Gibt den eindeutigen Key für die Entität zurück; /// Hier als String gelöst, weil damit auch kombinierte Schlüssel möglich sind. /// /// Eindeutiger Key public string AuditKey() { return Id.ToString(); } /// /// Gibt den Objektnamen bzw. die Tabelle der Entität zurück /// /// Objektnamen public string AuditTable() { return "SystemMessagesToSend"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } }