using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Enumerations; using Tango.BL.Serialization; namespace Tango.BL.Entities { public partial class HardwareVersion : HardwareVersionBase { [NotMapped] [JsonIgnore] public MachineTypes ForMachineType { get { return (MachineTypes)MachineType; } set { MachineType = value.ToInt32(); } } public override HardwareVersion Clone() { var cloned = base.Clone(); cloned.HardwareMotors = HardwareMotors.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwareDancers = HardwareDancers.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwarePidControls = HardwarePidControls.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwareWinders = HardwareWinders.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwareSpeedSensors = HardwareSpeedSensors.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwareBlowers = HardwareBlowers.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); cloned.HardwareBreakSensors = HardwareBreakSensors.Select(x => x.Clone(y => y.HardwareVersion = cloned)).ToSynchronizedObservableCollection(); return cloned; } public override void Delete(ObservablesContext context) { base.Delete(context); context.HardwareDancers.RemoveRange(HardwareDancers); context.HardwareMotors.RemoveRange(HardwareMotors); context.HardwarePidControls.RemoveRange(HardwarePidControls); context.HardwareWinders.RemoveRange(HardwareWinders); context.HardwareSpeedSensors.RemoveRange(HardwareSpeedSensors); context.HardwareBlowers.RemoveRange(HardwareBlowers); context.HardwareBreakSensors.RemoveRange(HardwareBreakSensors); context.HardwareVersions.Remove(this); } public Task ToHardwareVersionFile() { return Task.Factory.StartNew(() => { return this.ToJson(new EntitySerializationStrategy() .Ignore(() => this.Configurations) , EntitySerializationFlags.IgnoreReferenceTypes | EntitySerializationFlags.Indented | EntitySerializationFlags.IgnoreGuids); }); } public static Task FromHardwareVersionFile(String json) { return Task.Factory.StartNew(() => { HardwareVersion v = HardwareVersion.FromJson(json, new EntitySerializationStrategy(), EntitySerializationFlags.Indented); v.Guid = System.Guid.NewGuid().ToString(); foreach (var item in v.HardwareBlowers) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwareBreakSensors) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwareDancers) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwareMotors) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwarePidControls) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwareSpeedSensors) { item.HardwareVersionGuid = v.Guid; } foreach (var item in v.HardwareWinders) { item.HardwareVersionGuid = v.Guid; } return v; }); } [NotMapped] [JsonIgnore] public String FullName { get { return $"{Name} v{Version} {ForMachineType}"; } } /// /// Initializes a new instance of the class. /// public HardwareVersion() : base() { } /// /// Returns a that represents this instance. /// /// /// A that represents this instance. /// public override string ToString() { return FullName; } } }