public static IEnumerable <Product> LoadProducts(CMSDDocument doc, IEnumerable <ModelNode> nodes) { if (nodes == null || doc == null) { return(null); } var products = new ObservableCollection <Product>(); var modelNodes = nodes as IList <ModelNode> ?? nodes.ToList(); foreach (var partType in doc.DataSection.PartTypes) { var jobstodo = new ObservableCollection <Pair <ModelNode, Job> >(); foreach (var p in partType.ResourceJob) { var first = modelNodes.FirstOrDefault(t => t.ResourceModel.ProcessName == p.Resource); if (first != null) { var first1 = first.ResourceModel.Job.FirstOrDefault(t => t.Name == p.Job); if (first1 != null) { jobstodo.Add(new Pair <ModelNode, Job>(first, first1)); } } } var product = new Product(jobstodo) { ProductName = partType.ProductName, Editmode = false }; if (partType.Color != null) { product.Color = Color.FromRgb(partType.Color[0], partType.Color[1], partType.Color[2]); } product.IsChecked = true; products.Add(product); foreach (var pair in jobstodo.ToList()) { //product.AddNextMachine(pair.Key,pair.Value); pair.Key.ResourceModel.RelatedProducts.Add(product); } } return(products); }
public static Task <bool> SaveNodes(IEnumerable <ModelNode> nodes, SaveFileDialog save, IEnumerable <Product> products) { Task <bool> t = new Task <bool>(() => { try { var resources = new List <Resource>(); var jobs = new List <CMSDDocumentDataSectionJob>(); foreach (ModelNode modelNode in nodes) { var res = HarvestModelNode(modelNode); resources.Add(res); jobs.AddRange(HarvestJobs(modelNode, res)); } var parts = new List <PartType>(); foreach (var product in products) { parts.Add(HarvestProduct(product)); } var defs = new CMSDDocument { DataSection = { PartTypes = parts.ToArray(), Resource = resources.ToArray(), Job = jobs.ToArray() } }; var stream = File.Open(save.FileName, FileMode.Create); var bformatter = new BinaryFormatter(); bformatter.Serialize(stream, defs); stream.Close(); return(true); } catch { return(false); } }); t.Start(); return(t); }