using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Windows.Controls; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { public class ManufacturingTemplateGrid : DynamicDataGrid { private bool bShowAll; public ManufacturingTemplateGrid() { AddButton("Show All", null, ShowAllClick); } private bool ShowAllClick(Button arg1, CoreRow[] arg2) { bShowAll = !bShowAll; UpdateButton(arg1, null, bShowAll ? "Active Only" : "Show All"); return true; } protected override void Reload( Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { if (!bShowAll) criteria.Add(new Filter(x => x.Active).IsEqualTo(true)); base.Reload(criteria, columns, ref sort, token, action); } protected override Dictionary EditorValueChanged(IDynamicEditorForm editor, ManufacturingTemplate[] items, string name, object value) { var result = base.EditorValueChanged(editor, items, name, value); if (name == "Factory.ID") { var type = typeof(IDynamicOneToManyGrid<,>).MakeGenericType(typeof(ManufacturingTemplate), typeof(ManufacturingTemplateStage)); var page = editor.Pages.FirstOrDefault(x => x.GetType().GetInterface(type.Name) != null); if (page != null) { var sections = new Client().Load(new Filter(x => x.Factory.ID).IsEqualTo(value)); var stages = new List(); foreach (var section in sections) { var stage = new ManufacturingTemplateStage { SequenceType = SequenceType.Link, Time = new TimeSpan(0, 0, 0), QualityChecks = "", Sequence = section.Sequence }; stage.Section.ID = section.ID; stage.Section.Synchronise(section); stages.Add(stage); } var load = page.GetType().GetMethod("LoadItems"); load.Invoke(page, new object[] { stages.ToArray() }); } } return result; } } }