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) .Ignore(() => machine.DefaultRmlGuid) .Ignore(() => machine.DefaultColorSpaceGuid) .Ignore(() => machine.DefaultSpoolTypeGuid) .Ignore(() => machine.LoadedRmlGuid) .Ignore(() => machine.DeviceId) .Ignore(() => machine.DeviceName) .Ignore(() => machine.IsDeviceRegistered) .Ignore(() => machine.SiteGuid), EntitySerializationFlags.IgnoreGuids | EntitySerializationFlags.IgnoreReferenceTypes); } public async Task CreatePrototypeMachine(ObservablesContext context) { Machine m = new Machine(); String protoTypeData = (await context.MachineVersions.SingleOrDefaultAsync(x => x.Guid == Guid)).PrototypeMachineData; Machine machine = Machine.FromJson(protoTypeData, new EntitySerializationStrategy() .Include(() => m.Configuration) .Ignore(() => m.Name) .Ignore(() => m.MachinesEvents) .Ignore(() => m.Configuration.Machines) .Ignore(() => m.Jobs) .Ignore(() => m.SerialNumber) .Ignore(() => m.DefaultRmlGuid) .Ignore(() => m.DefaultColorSpaceGuid) .Ignore(() => m.DefaultSpoolTypeGuid) .Ignore(() => m.LoadedRmlGuid) .Ignore(() => m.DeviceId) .Ignore(() => m.DeviceName) .Ignore(() => m.IsDeviceRegistered) .Ignore(() => m.SiteGuid), 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; } machine.DefaultColorSpaceGuid = null; machine.DefaultRmlGuid = null; machine.DefaultSpoolTypeGuid = null; return machine; } /// /// Initializes a new instance of the class. /// public MachineVersion() : base() { } } }