using System.Collections.Generic; using gehGassi.Domain.Common; using gehGassi.Web.Helper; using System.ComponentModel.DataAnnotations; using System; namespace gehGassi.Web.Models { /// /// Viewmodel für die Erfassung und Bearbeitung von Abonnements /// public class SubscriptionVm : SyncEntityVm { /// /// Subscription Code - Produkt ID für Stores /// [Required(ErrorMessage = "Err_Required")] [MaxLength(128, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Subscription_Code")] public string Code { get; set; } /// /// Dauer des Abonnements /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_Length")] public SubscriptionLength Length { get; set; } /// /// Preis des Abonnements in Euro /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_Price")] public decimal Price { get; set; } /// /// Art des Abonnements - für welchen Benutzer-Typ? /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_AppMode")] public AppMode AppMode { get; set; } /// /// Ist das Abonnement aktiv? /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_Enabled")] public bool Enabled { get; set; } /// /// Toleranz in Tagen bei Ablauf /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_GracePeriodInDays")] public int GracePeriodInDays { get; set; } /// /// Ist das Abonnement ausgeblendet? /// [Required(ErrorMessage = "Err_Required")] [Display(Name = "Subscription_Hidden")] public bool Hidden { get; set; } /// /// Optional: the Max registered date of the app user to see this subscription /// [Display(Name = "Subscription_MaxRegisteredDate")] public DateTimeOffset? MaxRegisteredDate { get; set; } /// /// Texte mehrsprachig /// public List TextVms { get; set; } } /// /// Hilfsklasse für das Erfassen Mehrsprachiger Texte. /// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können /// public class SubscriptionTextVm { /// /// Id /// [Required(ErrorMessage = "Err_Required")] public string Id { get; set; } /// /// Srache /// [Required(ErrorMessage = "Err_Required")] public string Language { get; set; } /// /// Name /// [RequiredIfDefaultLanguage("Language", ErrorMessage = "Err_Required")] [MaxLength(100, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Subscription_Name", Description = "Subscription_Name_Desc")] public string Name { get; set; } /// /// Beschreibung /// [MaxLength(500, ErrorMessage = "Err_StringLength_Max")] [Display(Name = "Subscription_Description", Description = "Subscription_Description_Desc")] public string Description { get; set; } } /// /// Viewmodel für die Listenansicht von Abonnements /// public class SubscriptionListVm : SyncEntityLocalizableListVm { /// /// Subscription Code - Produkt ID für Stores /// public string Code { get; set; } /// /// Dauer des Abonnements /// public SubscriptionLengthVm Length { get; set; } public string LengthText { get; set; } /// /// Preis des Abonnements in Euro /// public decimal Price { get; set; } /// /// Art des Abonnements - für welchen Benutzer-Typ? /// public AppModeVm AppMode { get; set; } public string AppModeText { get; set; } /// /// Name des Abonnements /// public string Name { get; set; } /// /// Name - Inhalt /// public string NameLocalized { get; set; } /// /// Beschreibung des Abonnements /// public string Description { get; set; } /// /// Beschreibung - Inhalt /// public string DescriptionLocalized { get; set; } /// /// Ist das Abonnement aktiv? /// public bool Enabled { get; set; } /// /// Zeit in Tagen die als Toleranz bei Ablauf akzeptiert wird /// public int GracePeriodInDays { get; set; } /// /// Ist das Abonnement ausgeblendet? /// public bool Hidden { get; set; } /// /// Optional: the Max registered date of the app user to see this subscription /// public DateTimeOffset? MaxRegisteredDate { get; set; } /// /// Anzahl der Abonnements insgesamt /// public int SubscriptionCountTotal { get; set; } /// /// Anzahl der aktiven Abonnements /// public int SubscriptionCountActive { get; set; } /// /// Anzahl der inaktiven Abonnements /// public int SubscriptionCountInactive { get; set; } } }