using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using static MP.MONO.Core.Enums; // // This is here so CodeMaid doesn't reorganize this document // namespace MP.MONO.Data.DbModels { /// /// Tabella TASK schedulati (ovvero generati da schema MaintTask ma non ancora completati) /// [Table("PendingMaintTask")] public class PendingMaintModel { /// /// UID /// [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int SMTaskId { get; set; } /// /// Task di origine /// public int PMTaskId { get; set; } = 0; /// /// Valore di soglia per trigger di expiry /// public double ExpiryVal { get; set; } = 1; /// /// Valore reale elapsed al momento della registrazione execution /// public double ElapsedVal { get; set; } = 0; /// /// Valore di partenza per il contatore associato al momento della creazione del record /// public double CountStartVal { get; set; } = 0; /// /// Valore assoluto di expiry x il contatore (da valore iniziale + soglia expiry) /// public double CountExpiryVal { get => CountStartVal + ExpiryVal; } /// /// Valore remaining (ore rimanenti alla scadenza) = valore expiry - valore attuale del counter /// public double CountRemainVal { get { double answ = this.ExpiryVal; if (PMTaskeNav.CounterNav != null) { answ = CountExpiryVal - CounterNav.ActualVal; } return answ; } } /// /// Valore remaining come % ore rimanenti alla scadenza, range 0..100 /// (valore expiry - valore attuale del counter) / ExpiryVal /// public double CountRemainPerc { get { double num = this.CountRemainVal; double den = this.ExpiryVal > 0 ? this.ExpiryVal : 1; double answ = num / den; return answ; } } /// /// Contatore associato al task /// public string CCode { get; set; } = ""; /// /// DataOra di creazione del task da realizzare /// public DateTime DtCreation { get; set; } = DateTime.Now; /// /// DataOra di esecuzione del task /// public DateTime DtExecution { get; set; } = DateTime.MinValue; /// /// Codice utente che esegue il task /// public string UserCode { get; set; } = ""; /// /// Task completato (se data esecuzione passata + cod user != null) /// public bool Completed { get => (DtExecution > DateTime.MinValue && !string.IsNullOrEmpty(UserCode)); } /// /// Navigazione oggetto Machine /// [ForeignKey("PMTaskId")] public virtual PrevMaintTaskModel PMTaskeNav { get; set; } = null!; /// /// Navigazione oggetto Counter /// [ForeignKey("CCode")] public virtual CounterModel CounterNav { get; set; } = null!; } }