1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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()
- {
- HiddenColumns.Add(x => x.Approved);
- HiddenColumns.Add(x => x.Job.ID);
- if (Security.IsAllowed<CanApproveBillsOfMaterials>())
- _approve = AddButton("Approve", null, ApproveClick);
- }
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
- {
- base.DoReconfigure(options);
- options.AddRange(
- DynamicGridOption.AddRows,
- DynamicGridOption.EditRows,
- DynamicGridOption.DeleteRows,
- DynamicGridOption.FilterRows,
- DynamicGridOption.SelectColumns,
- DynamicGridOption.RecordCount
- );
- }
- public Job Job { get; set; }
- public JobPanelSettings Settings { 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(Job.ID));
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override JobBillOfMaterials CreateItem()
- {
- var result = base.CreateItem();
- result.Job.ID = Job.ID;
- result.Job.Synchronise(Job);
- return result;
- }
- }
- }
|