using System; using System.Collections.Generic; namespace SharedDatabase.Entities { public class ReferenceRecord { public virtual int Id { get; protected set; } public virtual string Code { get; set; } public virtual DateTime TimeStamp { get; set; } public virtual string UserName { get; set; } public virtual string Workplace { get; set; } public virtual int Result { get; set; } /// 0 = No error (OK), >0 = Error code public virtual Process Process { get; set; } public virtual Workstep Workstep { get; set; } public virtual IList Records { get; set; } /// /// Default (private) constructor inicializing lists /// protected ReferenceRecord() { Records = new List(); } /// /// Constructor used when reference barcode is scanned /// /// Process /// Workstep /// Scanned barcode public ReferenceRecord(Process process, Workstep workstep, string code, string userName, string workplace, int result) : this() { Process = process; Workstep = workstep; Code = code; TimeStamp = DateTime.Now; UserName = userName; Workplace = workplace; Result = result; } /// /// Create a copy of a process with a new name /// /// /// public virtual ReferenceRecord Clone(Process newProcess) { Workstep newWorkstep = null; foreach (var ws in newProcess.Worksteps) { if (Workstep.Name == ws.Name) { newWorkstep = ws; break; } } ReferenceRecord rslt = new ReferenceRecord(newProcess, newWorkstep, Code, UserName, Workplace, Result); rslt.TimeStamp = TimeStamp; rslt.Records = new List(); foreach (var record in Records) { rslt.Records.Add(record.Clone(newProcess, rslt)); } return rslt; } public override string ToString() { return string.Format("code={0} part={1} description='{2}' step='{3}' workplace='{4}' user={5} time={6:dd.MM.yyyy HH:mm:ss}", (Code != null) ? Code : "", (Workstep != null) ? Workstep.ReferencePart.Name : string.Empty, (Workstep != null) ? Workstep.ReferencePart.Description : string.Empty, (Workstep != null) ? Workstep.Name : string.Empty, Workplace, UserName, TimeStamp); } } }