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