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!;
}
}