using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using gehGassi.Domain.Base; using gehGassi.Domain.Common; using gehGassi.Domain.Localization; namespace gehGassi.Domain.Advertisements { /// /// Repräsentiert eine Branche für das Backend und Listungen /// public class Branch : SyncEntityLocalizable, IAuditable { /// /// Titel der Branche /// [Required] [MaxLength(100)] public string Title { get; set; } /// /// Anmerkungen intern /// public string Comment { get; set; } #region Localization /// /// Name der Branche /// [Localized] [NotMapped] public string Name { get => Get("Name", GetLanguage()); set => Set("Name", GetLanguage(), value); } /// /// Name - Inhalt /// Max-Length / 100 im Viewmodel /// [Column] public string NameLocalized { get; set; } /// /// Beschreibung der Branche /// [Localized] [NotMapped] public string Description { get => Get("Description", GetLanguage()); set => Set("Description", GetLanguage(), value); } /// /// Beschreibung der Branche. /// [Column] public string DescriptionLocalized { get; set; } /// /// Bild für die Branche - Allgemein /// [MaxLength(500)] public string Image { get; set; } /// /// Bild der Branche für eine Sprache /// [Localized] [NotMapped] public string ImageLanguage { get => Get("ImageLanguage", GetLanguage()); set => Set("ImageLanguage", GetLanguage(), value); } /// /// Bild der Branche für eine Sprache - Dateiname /// [Column] public string ImageLanguageLocalized { get; set; } #endregion /// /// Online / Offline Status /// [Required] public OnlineStatus OnlineStatus { get; set; } /// /// Für Listungen verfügbar /// [Required] public bool ListingAllowed { get; set; } /// /// Option zur Sortierung der Branchen in der App /// [Required] public int Order { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { 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 "Branches"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Repräsentiert eine Branche für das Backend und Listungen für Listen /// public class BranchWithNames : SyncEntityVw { /// /// Titel der Branche /// public string Title { get; set; } /// /// Anmerkungen intern /// public string Comment { get; set; } #region Localization /// /// Name der Branche /// public string Name { get; set; } /// /// Name - Inhalt /// Max-Length / 100 im Viewmodel /// [Column] public string NameLocalized { get; set; } /// /// Beschreibung der Branche /// public string Description { get; set; } /// /// Beschreibung der Branche. /// [Column] public string DescriptionLocalized { get; set; } /// /// Bild für die Branche - Allgemein /// public string Image { get; set; } /// /// Bild der Branche für eine Sprache /// public string ImageLanguage { get; set; } /// /// Bild der Branche für eine Sprache - Dateiname /// [Column] public string ImageLanguageLocalized { get; set; } #endregion /// /// Online / Offline Status /// public OnlineStatus OnlineStatus { get; set; } /// /// Für Listungen verfügbar /// public bool ListingAllowed { get; set; } /// /// Option zur Sortierung der Branchen in der App /// public int Order { get; set; } /// /// Datum der Erstellung /// public DateTimeOffset Created { get; set; } } }