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; }
}
}