IManufacturingPacketGenerator.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using static System.Collections.Specialized.BitVector32;
  6. namespace Comal.Classes
  7. {
  8. /// <summary>
  9. /// Defines an entity that can be converted into a <see cref="ManufacturingPacketStage"/>.
  10. /// </summary>
  11. public interface IManufacturingPacketStageGenerator : ISequenceable
  12. {
  13. TimeSpan Time { get; }
  14. SequenceType SequenceType { get; }
  15. string QualityChecks { get; }
  16. ManufacturingSectionLink Section { get; }
  17. }
  18. public static class IManufacturingPacketGeneratorExtensions
  19. {
  20. public static Columns<T> GetPacketGeneratorRequiredColumns<T>()
  21. where T : IManufacturingPacketStageGenerator
  22. {
  23. return Columns.None<T>().Add(x => x.Time)
  24. .Add(x => x.Sequence)
  25. .Add(x => x.SequenceType)
  26. .Add(x => x.QualityChecks)
  27. .Add(x => x.Section.ID)
  28. .Add(x => x.Section.Name);
  29. }
  30. /// <summary>
  31. /// Creates a Packet Stage from the Template Stage
  32. /// You still need to add the Packet.ID
  33. /// </summary>
  34. /// <returns></returns>
  35. public static ManufacturingPacketStage CreateManufacturingPacketStage(this IManufacturingPacketStageGenerator gen)
  36. {
  37. var pstage = new ManufacturingPacketStage
  38. {
  39. Time = gen.Time,
  40. Sequence = gen.Sequence,
  41. SequenceType = gen.SequenceType,
  42. Started = DateTime.MinValue,
  43. PercentageComplete = 0.0F,
  44. Completed = DateTime.MinValue,
  45. QualityChecks = gen.QualityChecks,
  46. QualityStatus = QualityStatus.NotChecked,
  47. QualityNotes = ""
  48. };
  49. pstage.ManufacturingSectionLink.ID = gen.Section.ID;
  50. pstage.ManufacturingSectionLink.Name = gen.Section.Name;
  51. return pstage;
  52. }
  53. }
  54. }