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