using System; using System.Collections.Generic; namespace MonitoringDB.Entities { public class Workstep { public virtual int Id { get; protected set; } public virtual int WorkstepNr { get; set; } public virtual string Name { get; set; } public virtual string Description { get; set; } public virtual int CheckPartNr { get; set; } public virtual bool AllowRepairs { get; set; } public virtual Process Process { get; set; } public virtual Part ReferencePart { get; set; } public virtual IList Parts { get; set; } /// /// Default (private) constructor inicializing a list /// protected Workstep() { Parts = new List(); } /// /// Constructor used when this workstep is added to a process /// /// Workstep name /// Process to be referenced public Workstep(int workstepNr, string name, Process process) : this() { WorkstepNr = workstepNr; Name = name; Description = string.Empty; CheckPartNr = 0; AllowRepairs = false; Process = process; ReferencePart = null; } public virtual Workstep Clone(Process owningProcess) { Workstep rslt = new Workstep(WorkstepNr, Name, owningProcess); rslt.Description = Description; rslt.CheckPartNr = CheckPartNr; rslt.AllowRepairs = AllowRepairs; if (ReferencePart != null) { foreach (var p in owningProcess.Parts) { if (p.Name == ReferencePart.Name) rslt.ReferencePart = p; } } foreach (var srcP in Parts) { foreach (var p in owningProcess.Parts) { if (p.Name == srcP.Name) { rslt.Parts.Add(p); p.StepNumber = srcP.StepNumber; p.Workstep = rslt; } } } return rslt; } public override string ToString() { //return string.Format("{0} {1} ({2}) Ref: {3}", WorkstepNr, Name, Description, (ReferencePart != null) ? ReferencePart.Name : "none"); return string.Format("{0}: {1}", WorkstepNr, Name); } } }