using LiteDB; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Enumerations; namespace Tango.BL.Entities { public class TangoUpdate : TangoUpdateBase { public static event EventHandler TangoUpdateSaved; [NotMapped] [JsonIgnore] public TangoUpdateStatuses UpdateStatus { get { return (TangoUpdateStatuses)Status; } set { Status = (int)value; RaisePropertyChangedAuto(); } } [NotMapped] [JsonIgnore] public bool IsSetup { get { return UpdateStatus == TangoUpdateStatuses.SetupStarted || UpdateStatus == TangoUpdateStatuses.SetupCompleted || UpdateStatus == TangoUpdateStatuses.SetupFailed; } } [NotMapped] [JsonIgnore] public bool IsUpdate { get { return UpdateStatus == TangoUpdateStatuses.UpdateStarted || UpdateStatus == TangoUpdateStatuses.UpdateCompleted || UpdateStatus == TangoUpdateStatuses.UpdateFailed; } } [NotMapped] [JsonIgnore] public bool IsDataBase { get { return UpdateStatus == TangoUpdateStatuses.DatabaseStarted || UpdateStatus == TangoUpdateStatuses.DatabaseCompleted || UpdateStatus == TangoUpdateStatuses.DatabaseFailed; } } [NotMapped] [JsonIgnore] public bool IsSynchronization { get { return UpdateStatus == TangoUpdateStatuses.SynchronizationStarted || UpdateStatus == TangoUpdateStatuses.SynchronizationCompleted || UpdateStatus == TangoUpdateStatuses.SynchronizationFailed; } } [NotMapped] [JsonIgnore] public bool IsOfflineUpdate { get { return UpdateStatus == TangoUpdateStatuses.OfflineUpdateStarted || UpdateStatus == TangoUpdateStatuses.OfflineUpdateCompleted || UpdateStatus == TangoUpdateStatuses.OfflineUpdateFailed; } } [NotMapped] [JsonIgnore] public bool IsOfflineFirmwareUpgrade { get { return UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeStarted || UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeCompleted || UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeFailed; } } [NotMapped] [JsonIgnore] public bool IsStarted { get { return UpdateStatus == TangoUpdateStatuses.SetupStarted || UpdateStatus == TangoUpdateStatuses.UpdateStarted || UpdateStatus == TangoUpdateStatuses.DatabaseStarted || UpdateStatus == TangoUpdateStatuses.SynchronizationStarted || UpdateStatus == TangoUpdateStatuses.OfflineUpdateStarted || UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeStarted; } } [NotMapped] [JsonIgnore] public bool IsCompleted { get { return UpdateStatus == TangoUpdateStatuses.SetupCompleted || UpdateStatus == TangoUpdateStatuses.UpdateCompleted || UpdateStatus == TangoUpdateStatuses.DatabaseCompleted || UpdateStatus == TangoUpdateStatuses.SynchronizationCompleted || UpdateStatus == TangoUpdateStatuses.OfflineUpdateCompleted || UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeCompleted; } } [NotMapped] [JsonIgnore] public bool IsFailed { get { return UpdateStatus == TangoUpdateStatuses.SetupFailed || UpdateStatus == TangoUpdateStatuses.UpdateFailed || UpdateStatus == TangoUpdateStatuses.DatabaseFailed || UpdateStatus == TangoUpdateStatuses.SynchronizationFailed || UpdateStatus == TangoUpdateStatuses.OfflineUpdateFailed || UpdateStatus == TangoUpdateStatuses.OfflineFirmwareUpgradeFailed; } } [NotMapped] [JsonIgnore] [BsonIgnore] public String VersionAndTag { get { return ApplicationVersion + (ApplicationVersionTag.IsNotNullOrEmpty() ? $" [{ApplicationVersionTag}]" : String.Empty); } } protected override void OnStatusChanged(int status) { base.OnStatusChanged(status); RaisePropertyChanged(nameof(UpdateStatus)); } public override void OnBeforeSave() { base.OnBeforeSave(); TangoUpdateSaved?.Invoke(this, this); } } }