tbf/TracingDB/Entities/Process.cs

85 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
namespace TracingDB.Entities
{
public class Process
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
public virtual string Name { get; set; }
public virtual int SubClass { get; set; } /// Main process: 1, Sub processes: 2, 4, 8, ...
public virtual string Description { get; set; }
public virtual string CreatedBy { get; set; }
public virtual DateTime TimeStamp { get; set; }
public virtual string ApprovedBy { get; set; }
public virtual DateTime TimeStamp2 { get; set; }
public virtual string ReleaseNotes { get; set; }
public virtual ReleaseStatus ReleaseStatus { get; set; }
public virtual IList<Part> Parts { get; set; }
public virtual IList<Workstep> Worksteps { get; set; }
/// Wrappers
public virtual SubClass GetSubClass() { return (SubClass)SubClass; }
public virtual void SetSubClass(SubClass subClass) { SubClass = (int)subClass; }
/// <summary>
/// Default (private) constructor inicializing lists
/// </summary>
protected Process()
{
Parts = new List<Part>();
Worksteps = new List<Workstep>();
}
/// <summary>
/// Constructor used when this process is created
/// </summary>
/// <param name="name"></param>
public Process(string name)
: this()
{
Name = name;
SubClass = 0;
Description = string.Empty;
ReleaseNotes = string.Empty;
CreatedBy = "admin";
TimeStamp = DateTime.Now;
ApprovedBy = string.Empty;
TimeStamp2 = DateTime.Now;
ReleaseStatus = ReleaseStatus.In_preparation;
}
/// <summary>
/// Create a copy of a process with a new name
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public virtual Process Clone(string name)
{
Process rslt = new Process(name);
rslt.SubClass = SubClass;
rslt.Description = Description;
rslt.ReleaseNotes = ReleaseNotes;
CreatedBy = "admin";
TimeStamp = DateTime.Now;
ApprovedBy = string.Empty;
TimeStamp2 = DateTime.Now;
ReleaseStatus = ReleaseStatus.In_preparation;
foreach (var part in Parts) rslt.Parts.Add(part.Clone(rslt));
foreach (var workstep in Worksteps) rslt.Worksteps.Add(workstep.Clone(rslt));
return rslt;
}
public override string ToString()
{
return string.IsNullOrEmpty(Name) ? string.Empty : Name;
}
}
}