| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | using System;using System.Linq;using System.Windows;using System.Windows.Controls;using Comal.Classes;using InABox.Clients;using InABox.Core;using InABox.DynamicGrid;namespace PRSDesktop{    internal class JobBillOfMaterialsGrid : DynamicDataGrid<JobBillOfMaterials>, IJobControl    {        private readonly Button _approve;        public JobBillOfMaterialsGrid()        {            Options.AddRange(                DynamicGridOption.AddRows,                DynamicGridOption.EditRows,                DynamicGridOption.DeleteRows,                DynamicGridOption.FilterRows,                DynamicGridOption.SelectColumns,                DynamicGridOption.RecordCount            );            HiddenColumns.Add(x => x.Approved);            if (Security.IsAllowed<CanApproveBillsOfMaterials>())                _approve = AddButton("Approve", null, ApproveClick);        }        public Guid JobID { get; set; }        private bool ApproveClick(Button button, CoreRow[] rows)        {            if (rows == null || !rows.Any())            {                MessageBox.Show("Please select a row first!");                return false;            }            var bom = rows[0].ToObject<JobBillOfMaterials>();            bom.Approved = bom.Approved.IsEmpty() ? DateTime.Now : DateTime.MinValue;            UpdateRow<DateTime?>(rows[0], "Approved", bom.Approved.IsEmpty() ? null : bom.Approved, true);            new Client<JobBillOfMaterials>().Save(bom, bom.Approved.IsEmpty() ? "Cleared Approval" : "Marked as Approved");            UpdateButton(_approve, null,                _approve.IsEnabled && !bom.Approved.IsEmpty() ? "Unapprove" : "Approve");            return false;        }        protected override void SelectItems(CoreRow[] rows)        {            base.SelectItems(rows);            if (rows?.Length == 1)            {                _approve.Visibility = Visibility.Visible;                UpdateButton(_approve, null,                    _approve.IsEnabled && !rows[0].Get<JobBillOfMaterials, DateTime>(c => c.Approved).IsEmpty() ? "Unapprove" : "Approve");            }            else                _approve.Visibility = Visibility.Collapsed;        }        protected override void Reload(Filters<JobBillOfMaterials> criteria, Columns<JobBillOfMaterials> columns,            ref SortOrder<JobBillOfMaterials> sort,            Action<CoreTable, Exception> action)        {            criteria.Add(new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(JobID));            base.Reload(criteria, columns, ref sort, action);        }        protected override JobBillOfMaterials CreateItem()        {            var result = base.CreateItem();            result.Job.ID = JobID;            return result;        }    }}
 |