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