| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.Wpf;
- namespace PRSDesktop
- {
- internal class JobBillOfMaterialsGrid : DynamicDataGrid<JobBillOfMaterials>, IMasterDetailControl<Job,JobBillOfMaterials>
- {
- private readonly Button _approve;
-
- public Job? Master { get; set; }
- public Filter<JobBillOfMaterials> MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty
- ? new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(Master.ID)
- : new Filter<JobBillOfMaterials>().None();
- 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
- );
- }
-
- 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(MasterDetailFilter);
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override bool CanCreateItems()
- {
- return base.CanCreateItems() && ((Master?.ID ?? Guid.Empty) != Guid.Empty);
- }
- public override JobBillOfMaterials CreateItem()
- {
- var result = base.CreateItem();
- result.Job.ID = Master?.ID ?? Guid.Empty;
- result.Job.Synchronise(Master ?? new Job());
- return result;
- }
- }
- }
|