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.Pages { /// /// Repräsentiert eine Text-Seite mit deren Hilfe Inhalte für z.B. FAQ, Datenschutz usw. erstellt werden können /// public class Page : LocalizableBase, IAuditable { /// /// Eindeutige Id /// [Key] [Required] public int Id { get; set; } /// /// Titel der Seite /// [Required] [MaxLength(100)] public string Title { get; set; } /// /// Eindeutiger Code für die Seite. /// Wird für den Aufruf aus der App verwendet /// [Required] [MaxLength(20)] public string Code { get; set; } #region Inhalt /// /// Inhalt - HTML /// [Localized] [NotMapped] public string Content { get => Get("Content", GetLanguage()); set => Set("Content", GetLanguage(), value); } /// /// Inhalt - HTML /// public string ContentLocalized { get; set; } #endregion #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 "Pages"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Text-Seite für die Listendarstellung /// public class PageWithNames: LocalizableBase { /// /// Eindeutige Id /// public int Id { get; set; } /// /// Titel der Seite /// public string Title { get; set; } /// /// Eindeutiger Code für die Seite. /// Wird für den Aufruf aus der App verwendet /// public string Code { get; set; } /// /// Inhalt - HTML /// [Localized] public string Content { get => Get("Content", GetLanguage()); set => Set("Content", GetLanguage(), value); } /// /// Inhalt Übersetzung /// public string ContentLocalized { get; set; } } }