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.Dogs { /// /// Repräsentiert die aktuell verfügbare Versionsnummer der App für die verschiedenen Plattformen /// public class AppVersion : LocalizableBase, IAuditable { /// /// Id der Appversion /// [Key] public int Id { get; set; } /// /// Plattform für die die Version gilt /// [Required] public Platform Platform { get; set; } /// /// Version Major /// [Required] public int Major { get; set; } /// /// Version Minor /// [Required] public int Minor { get; set; } /// /// Version Build /// public int? Build { get; set; } /// /// Version Revision /// public int? Revision { get; set; } /// /// Version als string /// [Required] [MaxLength(100)] public string Version { get; set; } /// /// Ist die aktuell verfügbare Version /// [Required] public bool IsCurrent { get; set; } /// /// Ist die Version verpflichtend? /// Muss installiert werden wenn die aktuell installierte Version älter ist /// [Required] public bool IsMandatory { get; set; } /// /// Titel des Releases /// [Localized] [NotMapped] public string ReleaseTitle { get => Get("ReleaseTitle", GetLanguage()); set => Set("ReleaseTitle", GetLanguage(), value); } /// /// Inhalt - Titel des Releases /// public string ReleaseTitleLocalized { get; set; } /// /// Änderungen in der Version /// [Localized] [NotMapped] public string ReleaseNotes { get => Get("ReleaseNotes", GetLanguage()); set => Set("ReleaseNotes", GetLanguage(), value); } /// /// Inhalt - Änderungen in der Version /// public string ReleaseNotesLocalized { get; set; } /// /// Veröffentlichungsdatum /// [Required] public DateTimeOffset ReleaseDate { get; set; } /// /// Letztes Update /// [Required] public DateTimeOffset LastUpdate { get; set; } /// /// Wann erstellt /// [Required] 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 "AppVersions"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Repräsentiert die aktuell verfügbare Versionsnummer der App für die verschiedenen Plattformen mit Namen aufgelöst /// public class AppVersionWithNames { /// /// Id der Appversion /// public int Id { get; set; } /// /// Plattform für die die Version gilt /// public Platform Platform { get; set; } /// /// Version Major /// public int Major { get; set; } /// /// Version Minor /// public int Minor { get; set; } /// /// Version Build /// public int? Build { get; set; } /// /// Version Revision /// public int? Revision { get; set; } /// /// Version als string /// public string Version { get; set; } /// /// Ist die aktuell verfügbare Version /// public bool IsCurrent { get; set; } /// /// Ist die Version verpflichtend? /// Muss installiert werden wenn die aktuell installierte Version älter ist /// public bool IsMandatory { get; set; } /// /// Titel des Releases /// public string ReleaseTitle { get; set; } /// /// Titel des Releases - Inhalt /// [Column] public string ReleaseTitleLocalized { get; set; } /// /// Änderungen in der Version /// public string ReleaseNotes { get; set; } /// /// Inhalt - Änderungen in der Version /// [Column] public string ReleaseNotesLocalized { get; set; } /// /// Veröffentlichungsdatum /// public DateTimeOffset ReleaseDate { get; set; } /// /// Letztes Update /// public DateTimeOffset LastUpdate { get; set; } /// /// Wann erstellt /// public DateTimeOffset Created { get; set; } } }