294 lines
6.9 KiB
C#
294 lines
6.9 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Repräsentiert eine News-Meldung
|
|
/// </summary>
|
|
public class News : IAuditable
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
[Key]
|
|
[Required]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der News-Kategorie
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(128)]
|
|
public string CategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der News
|
|
/// </summary>
|
|
[Required]
|
|
public NewsStatus Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Sichtbarkeit der News
|
|
/// </summary>
|
|
[Required]
|
|
public NewsVisibility Visibility { get; set; }
|
|
|
|
/// <summary>
|
|
/// Startdatum
|
|
/// </summary>
|
|
[Required]
|
|
public DateTimeOffset Start { get; set; }
|
|
|
|
/// <summary>
|
|
/// Enddatum
|
|
/// </summary>
|
|
public DateTimeOffset? End { get; set; }
|
|
|
|
/// <summary>
|
|
/// Erstellt von
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Creator { get; set; }
|
|
|
|
/// <summary>
|
|
/// Stammt von einer externen Quelle
|
|
/// </summary>
|
|
[Required]
|
|
public bool IsExternal { get; set; }
|
|
|
|
/// <summary>
|
|
/// Quelle der News wenn extern
|
|
/// </summary>
|
|
[MaxLength(100)]
|
|
public string Source { get; set; }
|
|
|
|
#region Inhalt
|
|
|
|
/// <summary>
|
|
/// Sprache für welche die News zur Verfügung steht
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(2)]
|
|
public string Language { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild für die Newsmeldung
|
|
/// </summary>
|
|
[MaxLength(500)]
|
|
public string Image { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schlagzeile
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Headline { get; set; }
|
|
|
|
/// <summary>
|
|
/// Inhalt - HTML
|
|
/// </summary>
|
|
[Required]
|
|
public string Content { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Geo-Einschränkungen
|
|
|
|
/// <summary>
|
|
/// Art der Geo-Einschränkung
|
|
/// </summary>
|
|
[Required]
|
|
public GeoMode GeoMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[MaxLength(10)]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[MaxLength(2)]
|
|
public string CountryCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geo-Koordinaten
|
|
/// </summary>
|
|
public Point Location { get; set; }
|
|
|
|
/// <summary>
|
|
/// Radius für eine Geolocation
|
|
/// </summary>
|
|
public double Radius { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Gelöscht
|
|
/// </summary>
|
|
[Required]
|
|
public bool Deleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
|
|
#region IAuditable
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <returns>Eindeutiger Key</returns>
|
|
public string AuditKey()
|
|
{
|
|
return Id.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt den Objektnamen bzw. die Tabelle der Entität zurück
|
|
/// </summary>
|
|
/// <returns>Objektnamen</returns>
|
|
public string AuditTable()
|
|
{
|
|
return "News";
|
|
}
|
|
|
|
public AuditableOptions Options()
|
|
{
|
|
return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
/// <summary>
|
|
/// Repräsentiert eine News-Meldung für Listen mit Namen aufgelöst
|
|
/// </summary>
|
|
public class NewsWithNames
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der News-Kategorie
|
|
/// </summary>
|
|
public string CategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der News-Kategorie
|
|
/// </summary>
|
|
public string CategoryName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der News
|
|
/// </summary>
|
|
public NewsStatus Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Sichtbarkeit der News
|
|
/// </summary>
|
|
public NewsVisibility Visibility { get; set; }
|
|
|
|
/// <summary>
|
|
/// Startdatum
|
|
/// </summary>
|
|
public DateTimeOffset Start { get; set; }
|
|
|
|
/// <summary>
|
|
/// Enddatum
|
|
/// </summary>
|
|
public DateTimeOffset? End { get; set; }
|
|
|
|
/// <summary>
|
|
/// Erstellt von
|
|
/// </summary>
|
|
public string Creator { get; set; }
|
|
|
|
/// <summary>
|
|
/// Stammt von einer externen Quelle
|
|
/// </summary>
|
|
public bool IsExternal { get; set; }
|
|
|
|
/// <summary>
|
|
/// Quelle der News wenn extern
|
|
/// </summary>
|
|
public string Source { get; set; }
|
|
|
|
#region Inhalt
|
|
|
|
/// <summary>
|
|
/// Sprache für welche die News zur Verfüggung steht
|
|
/// </summary>
|
|
public string Language { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild für die Newsmeldung
|
|
/// </summary>
|
|
public string Image { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schlagzeile
|
|
/// </summary>
|
|
public string Headline { get; set; }
|
|
|
|
/// <summary>
|
|
/// Inhalt - HTML
|
|
/// </summary>
|
|
public string Content { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Geo-Einschränkungen
|
|
|
|
/// <summary>
|
|
/// Art der Geo-Einschränkung
|
|
/// </summary>
|
|
public GeoMode GeoMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
public string CountryCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Geo-Koordinaten
|
|
/// </summary>
|
|
public Point Location { get; set; }
|
|
|
|
/// <summary>
|
|
/// Radius für eine Geolocation
|
|
/// </summary>
|
|
public double Radius { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Gelöscht
|
|
/// </summary>
|
|
public bool Deleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
}
|
|
}
|