144 lines
3.5 KiB
C#

using gehGassi.Domain.Common;
using gehGassi.Web.Helper;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace gehGassi.Web.Models
{
/// <summary>
/// Viewmodel für eine FAQ
/// </summary>
public class FaqVm : SyncEntityVm
{
/// <summary>
/// Titel der FAQ
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Faq_Title", Description = "Faq_Title_Desc")]
public string Title { get; set; }
/// <summary>
/// Reihung des FAQ-Eintrags
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Faq_Order", Description = "Faq_Order_Desc")]
public int Order { get; set; }
/// <summary>
/// Online / Offline Status
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Common_OnlineStatus", Description = "Common_OnlineStatus_Desc")]
public OnlineStatusVm OnlineStatus { get; set; }
/// <summary>
/// Typ der FAQ
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "Faq_Type", Description = "Faq_Type_Desc")]
public FaqTypeVm Type { get; set; }
/// <summary>
/// Datum der Erstellung
/// </summary>
[Display(Name = "Common_Created")]
public DateTimeOffset Created { get; set; }
/// <summary>
/// Texte mehrsprachig
/// </summary>
public List<FaqTextVm> TextVms { get; set; }
}
/// <summary>
/// Hilfsklasse für das Erfassen Mehrsprachiger Texte für FAQs.
/// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können
/// </summary>
public class FaqTextVm
{
/// <summary>
/// Id
/// </summary>
[Required(ErrorMessage = "Err_Required")]
public string Id { get; set; }
/// <summary>
/// Srache
/// </summary>
[Required(ErrorMessage = "Err_Required")]
public string Language { get; set; }
/// <summary>
/// Frage
/// </summary>
[RequiredIfDefaultLanguage("Language", ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Faq_Question", Description = "Faq_Question_Desc")]
public string Question { get; set; }
/// <summary>
/// Antwort
/// </summary>
[RequiredIfDefaultLanguage("Language", ErrorMessage = "Err_Required")]
[Display(Name = "Faq_Answer", Description = "Faq_Answer_Desc")]
public string Answer { get; set; }
}
/// <summary>
/// Viewmodel für eine FAQ Liste
/// </summary>
public class FaqListVm : SyncEntityLocalizableListVm
{
/// <summary>
/// Titel der FAQ
/// </summary>
public string Title { get; set; }
/// <summary>
/// Reihung des FAQ-Eintrags
/// </summary>
public int Order { get; set; }
/// <summary>
/// Frage
/// </summary>
public string Question
{
get => Get("Question", GetLanguage());
set => Set("Question", GetLanguage(), value);
}
/// <summary>
/// Übersetzungen Name
/// </summary>
public string QuestionLocalized { get; set; }
/// <summary>
/// Online-Status
/// </summary>
public OnlineStatusVm OnlineStatus { get; set; }
/// <summary>
/// Textdarstellung des Online-Status
/// </summary>
public string OnlineStatusText { get; set; }
/// <summary>
/// FAQ-Typ
/// </summary>
public FaqTypeVm Type { get; set; }
/// <summary>
/// Textdarstellung des FAQ-Typs
/// </summary>
public string TypeText { get; set; }
/// <summary>
/// Datum der Erstellung
/// </summary>
public DateTimeOffset Created { get; set; }
}
}