using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Common; using gehGassi.Domain.Localization; namespace gehGassi.Domain.Shop { /// /// Repräsentiert eine Steuer für ein Land /// public class TaxRate : LocalizableBase, IAuditable { /// /// Id des Steuereintrags /// [Key] public int Id { get; set; } /// /// Land für die Steuer /// [Required] [MaxLength(2)] public string CountryIso { get; set; } /// /// Steuer in Prozent /// [Required] public decimal Value { get; set; } /// /// Gibt an ob dieser Steuersatz für die Versandkosten verwendet werden soll /// [Required] public bool UseForShipment { get; set; } /// /// Titel des Steuersatzes /// [Required] [MaxLength(100)] public string Title { get; set; } /// /// Anmerkungen intern /// public string Comment { get; set; } /// /// Name des Steuersatzed /// [Localized] [NotMapped] public string Name { get => Get("Name", GetLanguage()); set => Set("Name", GetLanguage(), value); } /// /// Name - Inhalt /// [Column] public string NameLocalized { get; set; } #region IAuditable /// /// Gibt den eindeutigen Key für die Entität zurück; /// Hier als String gelöst, weil damit auch kombinierte Schlüssel möglich sind. /// /// Eindeutiger Key public string AuditKey() { return Id.ToString(); } /// /// Gibt den Objektnamen bzw. die Tabelle der Entität zurück /// /// Objektnamen public string AuditTable() { return "TaxRates"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Repräsentiert eine Steuer mit Namen aufgelöst für Views / Listen /// public class TaxRateWithNames { /// /// Id des Steuereintrags /// public int Id { get; set; } /// /// Land für die Steuer /// public string CountryIso { get; set; } /// /// Steuer in Prozent /// public decimal Value { get; set; } /// /// Gibt an ob dieser Steuersatz für die Versandkosten verwendet werden soll /// public bool UseForShipment { get; set; } /// /// Titel des Steuersatzes /// public string Title { get; set; } /// /// Anmerkungen intern /// public string Comment { get; set; } /// /// Name des Steuersatzed /// public string Name { get; set; } /// /// Name - Inhalt /// [Column] public string NameLocalized { get; set; } } }