using System; using System.Collections.Generic; using System.Linq; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { public class AssignmentGrid : DynamicDataGrid { public AssignmentGrid() { HiddenColumns.Add(x => x.JobLink.Deleted); } protected override Dictionary EditorValueChanged(DynamicEditorForm editor, Assignment[] items, string name, object value) { var result = base.EditorValueChanged(editor, items, name, value); if (name.Equals("EmployeeLink.ID")) { var activity = editor.FindEditor("ActivityLink.ID") as ILookupEditorControl; if (activity != null) DefineLookups(activity, items); } else if (name.Equals("JobLink.ID")) { var itp = editor.FindEditor("ITP.ID") as ILookupEditorControl; if (itp != null) DefineLookups(itp, items); } else if (name.Equals("Task.ID")) { var jobid = new Client().Query( new Filter(x => x.ID).IsEqualTo(value), new Columns(x => x.JobLink.ID) ).Rows.FirstOrDefault()?.Get(x => x.JobLink.ID); DynamicGridUtils.UpdateEditorValue(items, "JobLink.ID", jobid.HasValue ? jobid.Value : Guid.Empty); DynamicGridUtils.UpdateEditorValue(items, "ITP.ID", Guid.Empty); var itp = editor.FindEditor("ITP.ID") as ILookupEditorControl; if (itp != null) DefineLookups(itp, items); } return result; } protected override void AfterLoad(DynamicEditorForm editor, Assignment[] items) { base.AfterLoad(editor, items); if (items.FirstOrDefault().ID == Guid.Empty) ReloadForms(editor, items.FirstOrDefault(), x => x.Activity.ID, items.FirstOrDefault().ActivityLink.ID); } } }