using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Common; namespace gehGassi.Domain.Feedback { /// /// Repräsentiert das Feedback eines Benutzers der App /// public class AppFeedback : IAuditable { /// /// Eindeutige Id /// [Key] public long Id { get; set; } /// /// Id des AppUsers /// [MaxLength(128)] public string AppUserId { get; set; } /// /// Benutzername - Email /// [MaxLength(256)] public string UserName { get; set; } /// /// Name des Users /// [MaxLength(350)] public string Name { get; set; } /// /// Art des Feedbacks /// [Required] public AppFeedbackType FeedbackType { get; set; } /// /// Status des Feedbacks /// [Required] public AppFeedbackStatus Status { get; set; } /// /// Nachricht des Users /// [Required] [MaxLength(1000)] public string Message { get; set; } /// /// In welchem Modus war die App beim Senden der Nachricht /// [Required] public AppMode AppMode { get; set; } /// /// Welche Sprache war gewählt /// [MaxLength(2)] public string Language { get; set; } /// /// Land /// [MaxLength(2)] public string Country { get; set; } /// /// Version der App /// [MaxLength(50)] public string AppVersion { get; set; } /// /// Infos über das Gerät dürfen gesendet werden /// public bool DeviceInfoAllowed { get; set; } /// /// Gerät: Modell /// [MaxLength(100)] public string DeviceModel { get; set; } /// /// Gerät: Hersteller /// [MaxLength(100)] public string DeviceManufacturer { get; set; } /// /// Gerät: Version /// [MaxLength(100)] public string DeviceVersion { get; set; } /// /// Gerät: Typ - Echt oder Virtuell /// [MaxLength(100)] public string DeviceType { get; set; } /// /// Gerät: Plattform /// [MaxLength(100)] public string DevicePlatform { get; set; } /// /// Gerät: Typ: Phone oder Tablet usw. /// [MaxLength(100)] public string DeviceIdiom { get; set; } /// /// Wann erstellt /// public DateTimeOffset Created { 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 "AppFeedbacks"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } }