| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using System;using System.Linq;using System.Windows;using Comal.Classes;using InABox.Clients;using InABox.Core;using InABox.DynamicGrid;namespace PRSDesktop{    public class JobTrackerGrid : DynamicManyToManyDataGrid<JobTracker, Job>, IJobControl, IDataModelSource    {        public event DataModelUpdateEvent OnUpdateDataModel;        public string SectionName => "Job Trackers";        public DataModel DataModel(Selection selection)        {            var ids = ExtractValues(x => x.ID, selection).ToArray();            return new BaseDataModel<JobTracker>(new Filter<JobTracker>(x => x.ID).InList(ids));        }        public Guid JobID        {            get => ID;            set => ID = value;        }        protected override void DoAdd()        {            if (JobID.Equals(Guid.Empty) || JobID.Equals(CoreUtils.FullGuid))                MessageBox.Show("Please select a Job first!");            else                base.DoAdd();        }        protected override JobTracker CreateItem()        {            var result = base.CreateItem();            result.JobLink.ID = JobID;            return result;        }        protected override void Reload(Filters<JobTracker> criteria, Columns<JobTracker> columns, ref SortOrder<JobTracker> sort,            Action<CoreTable, Exception> action)        {            criteria.Add(new Filter<JobTracker>(x => x.JobLink.ID).IsEqualTo(JobID));            base.Reload(criteria, columns, ref sort, action);        }        protected override void DeleteItems(params CoreRow[] rows)        {            var items = LoadItems(rows);            foreach (var item in items)                new Client<JobTracker>().Delete(item, "");        }        protected override void SaveItem(JobTracker item)        {            new Client<JobTracker>().Save(item, "");            base.SaveItem(item);        }    }}
 |