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 configurati x manutenzione preventiva
///
[Table("PrevMaintTask")]
public class PrevMaintTaskModel
{
///
/// UID
///
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PMTaskId { get; set; }
///
/// Macchina cui è riferito il task
///
public int MachineId { get; set; } = 1;
///
/// Indice esterno evento
///
public int ExtIdx { get; set; } = 0;
///
/// Area di riferimento generale x manutenzione
///
public string PMTCode { get; set; } = "";
///
/// Gruppo logico di riferimento
///
public string PMMGCode { get; set; } = "";
///
/// Valore per trigger di expiry
///
public double ExpiryVal { get; set; } = 1;
///
/// Descrizione intervento
///
public string JobDescription { get; set; } = "";
///
/// Team / Ruolo responsabile
///
public string PMUTCode { get; set; } = "";
///
/// Contatore associato al task
///
public string CCode { get; set; } = "";
///
/// Indica che il task è protetto
/// true = impostato dal costruttore (originale)
///
public bool Protected { get; set; } = true;
///
/// Indica che il task è disabilitato (es se ha interventi registrati e richeista eliminazione)
///
public bool IsDisabled { get; set; } = false;
///
/// Variabile in cui viene salvato il numero di Task effettuati associati (aggiornata ad ogni chiusura SchedTask)
///
public int NumTaskDone { get; set; } = 0;
[NotMapped]
public bool IsValid
{
get => MachineId > 0 && ExpiryVal >= 1 && ExtIdx >= 0 && !string.IsNullOrEmpty(CCode) && !string.IsNullOrEmpty(PMTCode) && !string.IsNullOrEmpty(PMMGCode) && !string.IsNullOrEmpty(JobDescription) && !string.IsNullOrEmpty(PMUTCode);
}
///
/// Navigazione oggetto Machine
///
[ForeignKey("MachineId")]
public virtual MachineModel MachineNav { get; set; } = null!;
///
/// Navigazione oggetto Counter
///
[ForeignKey("CCode")]
public virtual CounterModel CounterNav { get; set; } = null!;
///
/// Navigazione oggetto User Team
///
[ForeignKey("PMUTCode")]
public virtual PMUTModel UserTeamNav { get; set; } = null!;
///
/// Navigazione oggetto User Team
///
[ForeignKey("PMMGCode")]
public virtual PMMGroupModel MachGroupNav { get; set; } = null!;
///
/// Navigazione oggetto User Team
///
[ForeignKey("PMTCode")]
public virtual PMTaskTopicModel TopicNav { get; set; } = null!;
}
}