321 lines
9.1 KiB
C#
321 lines
9.1 KiB
C#
using System;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using gehGassi.Web.Helper;
|
|
|
|
namespace gehGassi.Web.Models
|
|
{
|
|
/// <summary>
|
|
/// Viewmodel für eine News-Meldung
|
|
/// </summary>
|
|
public class NewsVm
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der News-Kategorie
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(128, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_CategoryId")]
|
|
public string CategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der News
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "News_Status", Description = "News_Status_Desc")]
|
|
public NewsStatusVm Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Sichtbarkeit der News
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "News_Visibility", Description = "News_Visibility_Desc")]
|
|
public NewsVisibilityVm Visibility { get; set; }
|
|
|
|
/// <summary>
|
|
/// Startdatum
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "News_Start", Description = "News_Start_Desc")]
|
|
public DateTimeOffset? Start { get; set; }
|
|
|
|
/// <summary>
|
|
/// Enddatum
|
|
/// </summary>
|
|
[Display(Name = "News_End", Description = "News_End_Desc")]
|
|
public DateTimeOffset? End { get; set; }
|
|
|
|
/// <summary>
|
|
/// Erstellt von
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_Creator", Description = "News_Creator_Desc")]
|
|
public string Creator { get; set; }
|
|
|
|
/// <summary>
|
|
/// Stammt von einer externen Quelle
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "News_IsExternal", Description = "News_IsExternal_Desc")]
|
|
public bool IsExternal { get; set; }
|
|
|
|
/// <summary>
|
|
/// Quelle der News wenn extern
|
|
/// </summary>
|
|
[RequiredIf("IsExternal", true, ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_Source", Description = "News_Source_Desc")]
|
|
public string Source { get; set; }
|
|
|
|
#region Inhalt
|
|
|
|
/// <summary>
|
|
/// Sprache für welche die News zur Verfüggung steht
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_Language", Description = "News_Language_Desc")]
|
|
public string Language { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bild für die Newsmeldung
|
|
/// </summary>
|
|
[MaxLength(500, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_Image", Description = "News_Image_Desc")]
|
|
public string Image { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schlagzeile
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "News_Headline", Description = "News_Headline_Desc")]
|
|
public string Headline { get; set; }
|
|
|
|
/// <summary>
|
|
/// Inhalt - HTML
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "News_Content", Description = "News_Content_Desc")]
|
|
public string Content { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Geo-Einschränkungen
|
|
|
|
/// <summary>
|
|
/// Art der Geo-Einschränkung
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Err_Required")]
|
|
[Display(Name = "Common_GeoMode", Description = "Common_GeoMode_Desc")]
|
|
public GeoModeVm GeoMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
[RequiredIf("GeoMode", (int)GeoModeVm.CountryAndState, ErrorMessage = "Err_Required")]
|
|
[MaxLength(10, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_State")]
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
[RequiredIf("GeoMode", (int)GeoModeVm.Country, ErrorMessage = "Err_Required")]
|
|
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
|
|
[Display(Name = "Address_CountryCode")]
|
|
public string CountryCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Breitengrad
|
|
/// </summary>
|
|
[Range(-90.0, 90.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Common_Lat")]
|
|
public double Lat { get; set; }
|
|
|
|
/// <summary>
|
|
/// Längengrad
|
|
/// </summary>
|
|
[Range(-180.0, 180.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Common_Lng")]
|
|
public double Lng { get; set; }
|
|
|
|
/// <summary>
|
|
/// Radius für eine Geolocation
|
|
/// </summary>
|
|
[Range(0.0, 500.0, ErrorMessage = "Err_Range")]
|
|
[Display(Name = "Common_Radius", Description = "Common_Radius_Desc")]
|
|
public double Radius { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Gelöscht
|
|
/// </summary>
|
|
[Display(Name = "Common_Deleted")]
|
|
public bool Deleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
[Display(Name = "Common_Created")]
|
|
public DateTimeOffset Created { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für das Anlegen und Bearbeiten einer News
|
|
/// </summary>
|
|
public class NewsCrudVm : NewsVm
|
|
{
|
|
/// <summary>
|
|
/// Name der Kategorie
|
|
/// </summary>
|
|
public string CategoryName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Land-Name
|
|
/// </summary>
|
|
public string CountryName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland-Name
|
|
/// </summary>
|
|
public string StateName { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Viewmodel für eine News-Meldung Listendarstellung
|
|
/// </summary>
|
|
public class NewsListVm
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Id der News-Kategorie
|
|
/// </summary>
|
|
public string CategoryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name der Kategorie
|
|
/// </summary>
|
|
public string CategoryName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der News
|
|
/// </summary>
|
|
public NewsStatusVm Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status der News
|
|
/// </summary>
|
|
public string StatusText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Sichtbarkeit der News
|
|
/// </summary>
|
|
public NewsVisibilityVm Visibility { get; set; }
|
|
|
|
/// <summary>
|
|
/// Sichtbarkeit der News
|
|
/// </summary>
|
|
public string VisibilityText { 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; }
|
|
|
|
#endregion
|
|
|
|
#region Geo-Einschränkungen
|
|
|
|
/// <summary>
|
|
/// Art der Geo-Einschränkung
|
|
/// </summary>
|
|
public GeoModeVm GeoMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Art der Geo-Einschränkung
|
|
/// </summary>
|
|
public string GeoModeText { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland / Staat
|
|
/// </summary>
|
|
public string State { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bundesland
|
|
/// </summary>
|
|
public string StateName { get; set; }
|
|
|
|
/// <summary>
|
|
/// ISO2 Ländercode
|
|
/// </summary>
|
|
public string CountryCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Land
|
|
/// </summary>
|
|
public string CountryName { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Gelöscht
|
|
/// </summary>
|
|
public bool Deleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum der Erstellung
|
|
/// </summary>
|
|
public DateTimeOffset Created { get; set; }
|
|
}
|
|
}
|