using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Builders; using Tango.BL.Serialization; namespace Tango.BL.Entities { public partial class MachineVersion : MachineVersionBase { public async Task ApplyPrototypeMachine(Machine machine, ObservablesContext context) { machine = await new MachineBuilder(context) .Set(machine) .WithOrganization() .WithConfiguration() .WithSpools() .WithCats() .BuildAsync(); PrototypeMachineData = machine.ToJson(new EntitySerializationStrategy() .Include(() => machine.Configuration) .Ignore(() => machine.Name) .Ignore(() => machine.MachinesEvents) .Ignore(() => machine.Configuration.Machines) .Ignore(() => machine.Jobs) .Ignore(() => machine.SerialNumber), EntitySerializationFlags.IgnoreGuids | EntitySerializationFlags.IgnoreReferenceTypes); } public Machine CreatePrototypeMachine(ObservablesContext context) { Machine m = new Machine(); Machine machine = Machine.FromJson(PrototypeMachineData, new EntitySerializationStrategy() .Include(() => m.Configuration) .Ignore(() => m.Name) .Ignore(() => m.MachinesEvents) .Ignore(() => m.Configuration.Machines) .Ignore(() => m.Jobs) .Ignore(() => m.SerialNumber), EntitySerializationFlags.IgnoreGuids | EntitySerializationFlags.IgnoreReferenceTypes); machine.OrganizationGuid = null; machine.ConfigurationGuid = null; machine.ConfigurationGuid = machine.Configuration.Guid; foreach (var cat in machine.Cats) { cat.MachineGuid = machine.Guid; } machine.MachineVersionGuid = Guid; machine.ProductionDate = DateTime.UtcNow; foreach (var idsPack in machine.Configuration.IdsPacks) { idsPack.DispenserGuid = null; idsPack.ConfigurationGuid = machine.ConfigurationGuid; } foreach (var spool in machine.Spools) { spool.MachineGuid = machine.Guid; } return machine; } /// /// Initializes a new instance of the class. /// public MachineVersion() : base() { } } }