using gehGassi.Domain.Common; using System; using System.ComponentModel.DataAnnotations; namespace gehGassi.Domain.Reporting { /// /// Repräsentiert eine Meldung eines Benutzers durch einen anderen Benutzer. /// Dies wird für die Meldung von Verstößen gegen die Nutzungsbedingungen verwendet. /// public class AppUserReport : IAuditable { /// /// Id der Meldung /// [Key] [Required] public long Id { get; set; } /// /// Id des App-Users der die Meldung erstellt hat /// [MaxLength(128)] public string? ReportingAppUserId { get; set; } /// /// Id des App-Users der Ziel der Meldung ist /// [MaxLength(128)] public string? ReportedAppUserId { get; set; } /// /// Status der Meldung /// [Required] public AppUserReportStatus Status { get; set; } /// /// Bereich der von der Meldung betroffen ist /// [Required] public AppUserReportSection Section { get; set; } /// /// Id des Inhalts der betroffen ist. /// Das ist eine Id z.B. eines Hundes, Walkers usw. /// [MaxLength(128)] public string SectionId { get; set; } /// /// Id des Inhalts der betroffen ist. Zweite ID falls notwendig /// Das ist eine Id z.B. eines Hundes, Walkers usw. /// [MaxLength(128)] public string SectionId2 { get; set; } /// /// Es gibt ein Problem mit einem Bild /// public bool ReportedImage { get; set; } /// /// Es gibt ein Problem mit einem Namen /// public bool ReportedName { get; set; } /// /// Es gibt ein Problem mit einem Text /// public bool ReportedText { get; set; } /// /// Es gibt ein Problem mit einer Nachricht /// public bool ReportedMessage { get; set; } /// /// Es gibt ein Problem mit einer Adresse /// public bool ReportedAddress { get; set; } /// /// Typ der Meldung /// [Required] public AppUserReportType Type { get; set; } /// /// Email-Adresse des Benutzers der die Meldung erstellt hat /// [Required] [MaxLength(256)] [EmailAddress] public string Email { get; set; } /// /// Zusätzliche Infos des Benutzers der die Meldung erstellt hat /// [MaxLength(1000)] public string Comment { get; set; } /// /// Nachricht des Chats, falls so eine gemeldet wird /// [MaxLength(500)] public string Message { get; set; } /// /// Gibt an ob der Benutzer der gemeldet wurde für den meldenden Benutzer gesperrt werden soll und wie. /// Diese Info kommt vom Benutzer selbst. /// [Required] public AppUserReportBlockType BlockType { get; set; } /// /// Der Benutzer der die Meldung erstellt hat, hat zugestimmt via Email kontaktiert zu werden /// [Required] public bool ContactAllowed { get; set; } /// /// Interner Kommentar von gehGassi /// public string InternalComment { get; set; } /// /// Aktualisiert von? /// [MaxLength(256)] public string UpdatedBy { get; set; } /// /// Datum letzte Aktualisierung /// public DateTimeOffset? Updated { get; set; } /// /// Erstellt von? /// [MaxLength(256)] public string CreatedBy { get; set; } /// /// Wann wurde die Blockierung 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 "AppUserReports"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Repräsentiert eine Meldung eines Benutzers durch einen anderen Benutzer mit Namen aufgelöst /// public class AppUserReportWithNames { /// /// Id der Meldung /// public long Id { get; set; } /// /// Id des App-Users der die Meldung erstellt hat /// public string? ReportingAppUserId { get; set; } /// /// Name des App-Users der die Meldung erstellt hat /// public string ReportingAppUserName { get; set; } /// /// Typ des App-Users der die Meldung erstellt hat /// public AppUserType ReportingAppUserType { get; set; } /// /// Email des App-Users der die Meldung erstellt hat /// public string ReportingAppUserEmail { get; set; } /// /// Id des App-Users der Ziel der Meldung ist /// public string? ReportedAppUserId { get; set; } /// /// Name des App-Users der Ziel der Meldung ist /// public string ReportedAppUserName { get; set; } /// /// Typ des App-Users der Ziel der Meldung ist /// public AppUserType ReportedAppUserType { get; set; } /// /// Email des App-Users der Ziel der Meldung ist /// public string ReportedAppUserEmail { get; set; } /// /// Status der Meldung /// public AppUserReportStatus Status { get; set; } /// /// Bereich der von der Meldung betroffen ist /// public AppUserReportSection Section { get; set; } /// /// Id des Inhalts der betroffen ist. /// Das ist eine Id z.B. eines Hundes, Walkers usw. /// public string SectionId { get; set; } /// /// Id des Inhalts der betroffen ist. Zweite ID falls notwendig /// Das ist eine Id z.B. eines Hundes, Walkers usw. /// public string SectionId2 { get; set; } /// /// Es gibt ein Problem mit einem Bild /// public bool ReportedImage { get; set; } /// /// Es gibt ein Problem mit einem Namen /// public bool ReportedName { get; set; } /// /// Es gibt ein Problem mit einem Text /// public bool ReportedText { get; set; } /// /// Es gibt ein Problem mit einer Nachricht /// public bool ReportedMessage { get; set; } /// /// Es gibt ein Problem mit einer Adresse /// public bool ReportedAddress { get; set; } /// /// Typ der Meldung /// public AppUserReportType Type { get; set; } /// /// Email-Adresse des Benutzers der die Meldung erstellt hat /// public string Email { get; set; } /// /// Zusätzliche Infos des Benutzers der die Meldung erstellt hat /// public string Comment { get; set; } /// /// Nachricht des Chats, falls so eine gemeldet wird /// public string Message { get; set; } /// /// Gibt an ob der Benutzer der gemeldet wurde für den meldenden Benutzer gesperrt werden soll und wie. /// Diese Info kommt vom Benutzer selbst. /// public AppUserReportBlockType BlockType { get; set; } /// /// Der Benutzer der die Meldung erstellt hat, hat zugestimmt via Email kontaktiert zu werden /// public bool ContactAllowed { get; set; } /// /// Interner Kommentar von gehGassi /// public string InternalComment { get; set; } /// /// Aktualisiert von? /// public string UpdatedBy { get; set; } /// /// Datum letzte Aktualisierung /// public DateTimeOffset? Updated { get; set; } /// /// Erstellt von? /// public string CreatedBy { get; set; } /// /// Wann wurde die Blockierung erstellt? /// public DateTimeOffset Created { get; set; } } }