using InABox.Core; using System; using System.Collections.Generic; using System.Text; using static System.Collections.Specialized.BitVector32; namespace Comal.Classes { /// /// Defines an entity that can be converted into a . /// public interface IManufacturingPacketStageGenerator : ISequenceable { TimeSpan Time { get; } SequenceType SequenceType { get; } string QualityChecks { get; } ManufacturingSectionLink Section { get; } } public static class IManufacturingPacketGeneratorExtensions { public static Columns GetPacketGeneratorRequiredColumns() where T : IManufacturingPacketStageGenerator { return Columns.None().Add(x => x.Time) .Add(x => x.Sequence) .Add(x => x.SequenceType) .Add(x => x.QualityChecks) .Add(x => x.Section.ID) .Add(x => x.Section.Name); } /// /// Creates a Packet Stage from the Template Stage /// You still need to add the Packet.ID /// /// public static ManufacturingPacketStage CreateManufacturingPacketStage(this IManufacturingPacketStageGenerator gen) { var pstage = new ManufacturingPacketStage { Time = gen.Time, Sequence = gen.Sequence, SequenceType = gen.SequenceType, Started = DateTime.MinValue, PercentageComplete = 0.0F, Completed = DateTime.MinValue, QualityChecks = gen.QualityChecks, QualityStatus = QualityStatus.NotChecked, QualityNotes = "" }; pstage.ManufacturingSectionLink.ID = gen.Section.ID; pstage.ManufacturingSectionLink.Name = gen.Section.Name; return pstage; } } }