using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Common; using NetTopologySuite.Geometries; using Newtonsoft.Json; namespace gehGassi.Domain.News { /// /// Repräsentiert eine News-Meldung /// public class News : IAuditable { /// /// Eindeutige Id /// [Key] [Required] public long Id { get; set; } /// /// Id der News-Kategorie /// [Required] [MaxLength(128)] public string CategoryId { get; set; } /// /// Status der News /// [Required] public NewsStatus Status { get; set; } /// /// Sichtbarkeit der News /// [Required] public NewsVisibility Visibility { get; set; } /// /// Startdatum /// [Required] public DateTimeOffset Start { get; set; } /// /// Enddatum /// public DateTimeOffset? End { get; set; } /// /// Erstellt von /// [Required] [MaxLength(100)] public string Creator { get; set; } /// /// Stammt von einer externen Quelle /// [Required] public bool IsExternal { get; set; } /// /// Quelle der News wenn extern /// [MaxLength(100)] public string Source { get; set; } #region Inhalt /// /// Sprache für welche die News zur Verfügung steht /// [Required] [MaxLength(2)] public string Language { get; set; } /// /// Bild für die Newsmeldung /// [MaxLength(500)] public string Image { get; set; } /// /// Schlagzeile /// [Required] [MaxLength(100)] public string Headline { get; set; } /// /// Inhalt - HTML /// [Required] public string Content { get; set; } #endregion #region Geo-Einschränkungen /// /// Art der Geo-Einschränkung /// [Required] public GeoMode GeoMode { get; set; } /// /// Bundesland / Staat /// [MaxLength(10)] public string State { get; set; } /// /// ISO2 Ländercode /// [MaxLength(2)] public string CountryCode { get; set; } /// /// Geo-Koordinaten /// public Point Location { get; set; } /// /// Radius für eine Geolocation /// public double Radius { get; set; } #endregion /// /// Gelöscht /// [Required] public bool Deleted { get; set; } /// /// Datum der Erstellung /// 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 "News"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Repräsentiert eine News-Meldung für Listen mit Namen aufgelöst /// public class NewsWithNames { /// /// Eindeutige Id /// public long Id { get; set; } /// /// Id der News-Kategorie /// public string CategoryId { get; set; } /// /// Name der News-Kategorie /// public string CategoryName { get; set; } /// /// Status der News /// public NewsStatus Status { get; set; } /// /// Sichtbarkeit der News /// public NewsVisibility Visibility { get; set; } /// /// Startdatum /// public DateTimeOffset Start { get; set; } /// /// Enddatum /// public DateTimeOffset? End { get; set; } /// /// Erstellt von /// public string Creator { get; set; } /// /// Stammt von einer externen Quelle /// public bool IsExternal { get; set; } /// /// Quelle der News wenn extern /// public string Source { get; set; } #region Inhalt /// /// Sprache für welche die News zur Verfüggung steht /// public string Language { get; set; } /// /// Bild für die Newsmeldung /// public string Image { get; set; } /// /// Schlagzeile /// public string Headline { get; set; } /// /// Inhalt - HTML /// public string Content { get; set; } #endregion #region Geo-Einschränkungen /// /// Art der Geo-Einschränkung /// public GeoMode GeoMode { get; set; } /// /// Bundesland / Staat /// public string State { get; set; } /// /// ISO2 Ländercode /// public string CountryCode { get; set; } /// /// Geo-Koordinaten /// public Point Location { get; set; } /// /// Radius für eine Geolocation /// public double Radius { get; set; } #endregion /// /// Gelöscht /// public bool Deleted { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } }