145 lines
4.1 KiB
C#

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using gehGassi.Domain.Localization;
using gehGassi.Web.Helper;
namespace gehGassi.Web.Models
{
/// <summary>
/// Viewmodel für eine Steuer
/// </summary>
public class TaxRateVm
{
/// <summary>
/// Id des Steuereintrags
/// </summary>
[Required(ErrorMessage = "Err_Required")]
public int Id { get; set; }
/// <summary>
/// Land für die Steuer
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(2, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "Common_Country")]
public string CountryIso { get; set; }
/// <summary>
/// Steuer in Prozent
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Range(0.0, 100.0, ErrorMessage = "Err_Range")]
[Display(Name = "TaxRate_Value")]
public decimal Value { get; set; }
/// <summary>
/// Gibt an ob dieser Steuersatz für die Versandkosten verwendet werden soll
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[Display(Name = "TaxRate_UseForShipment", Description = "TaxRate_UseForShipment_Desc")]
public bool UseForShipment { get; set; }
/// <summary>
/// Titel des Steuersatzes
/// </summary>
[Required(ErrorMessage = "Err_Required")]
[MaxLength(100, ErrorMessage = "Err_StringLength_Max")]
[Display(Name = "TaxRate_Title")]
public string Title { get; set; }
/// <summary>
/// Anmerkungen intern
/// </summary>
[Display(Name = "Common_Comment")]
public string Comment { get; set; }
/// <summary>
/// Texte mehrsprachig
/// </summary>
public List<TaxRateTextVm> TextVms { get; set; }
}
/// <summary>
/// Viewmodel für das Anlegen und Bearbeiten einer Steuer
/// </summary>
public class TaxRateCrudVm : TaxRateVm
{
/// <summary>
/// Land-Name
/// </summary>
public string CountryName { get; set; }
}
/// <summary>
/// Hilfsklasse für das Erfassen Mehrsprachiger Texte für Steuern.
/// Wird so gelöst, damit beliebig viele Sprachen verwendet werden können
/// </summary>
public class TaxRateTextVm
{
/// <summary>
/// Id
/// </summary>
[Required(ErrorMessage = "Err_Required")]
public int 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 = "TaxRate_Name", Description = "TaxRate_Name_Desc")]
public string Name { get; set; }
}
/// <summary>
/// Viewmodel für Steuern in Listendarstellung
/// </summary>
public class TaxRateListVm : LocalizableBase
{
/// <summary>
/// Id des Steuereintrags
/// </summary>
public int Id { get; set; }
/// <summary>
/// Land für die Steuer
/// </summary>
public string CountryIso { get; set; }
/// <summary>
/// Steuer in Prozent
/// </summary>
public decimal Value { get; set; }
/// <summary>
/// Gibt an ob dieser Steuersatz für die Versandkosten verwendet werden soll
/// </summary>
public bool UseForShipment { get; set; }
/// <summary>
/// Titel des Steuersatzes
/// </summary>
public string Title { get; set; }
/// <summary>
/// Name des Steuersatzed
/// </summary>
public string Name
{
get => Get("Name", GetLanguage());
set => Set("Name", GetLanguage(), value);
}
/// <summary>
/// Übersetzungen Name
/// </summary>
public string NameLocalized { get; set; }
}
}