JobBillOfMaterialsGrid.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using Comal.Classes;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. namespace PRSDesktop
  10. {
  11. internal class JobBillOfMaterialsGrid : DynamicDataGrid<JobBillOfMaterials>, IJobControl
  12. {
  13. private readonly Button _approve;
  14. public JobBillOfMaterialsGrid()
  15. {
  16. Options.AddRange(
  17. DynamicGridOption.AddRows,
  18. DynamicGridOption.EditRows,
  19. DynamicGridOption.DeleteRows,
  20. DynamicGridOption.FilterRows,
  21. DynamicGridOption.SelectColumns,
  22. DynamicGridOption.RecordCount
  23. );
  24. HiddenColumns.Add(x => x.Approved);
  25. if (Security.IsAllowed<CanApproveBillsOfMaterials>())
  26. _approve = AddButton("Approve", null, ApproveClick);
  27. }
  28. public Guid ParentID { get; set; }
  29. public JobPanelSettings Settings { get; set; }
  30. private bool ApproveClick(Button button, CoreRow[] rows)
  31. {
  32. if (rows == null || !rows.Any())
  33. {
  34. MessageBox.Show("Please select a row first!");
  35. return false;
  36. }
  37. var bom = rows[0].ToObject<JobBillOfMaterials>();
  38. bom.Approved = bom.Approved.IsEmpty() ? DateTime.Now : DateTime.MinValue;
  39. UpdateRow<DateTime?>(rows[0], "Approved", bom.Approved.IsEmpty() ? null : bom.Approved, true);
  40. new Client<JobBillOfMaterials>().Save(bom, bom.Approved.IsEmpty() ? "Cleared Approval" : "Marked as Approved");
  41. UpdateButton(_approve, null,
  42. _approve.IsEnabled && !bom.Approved.IsEmpty() ? "Unapprove" : "Approve");
  43. return false;
  44. }
  45. protected override void SelectItems(CoreRow[] rows)
  46. {
  47. base.SelectItems(rows);
  48. if (rows?.Length == 1)
  49. {
  50. _approve.Visibility = Visibility.Visible;
  51. UpdateButton(_approve, null,
  52. _approve.IsEnabled && !rows[0].Get<JobBillOfMaterials, DateTime>(c => c.Approved).IsEmpty() ? "Unapprove" : "Approve");
  53. }
  54. else
  55. _approve.Visibility = Visibility.Collapsed;
  56. }
  57. protected override void Reload(Filters<JobBillOfMaterials> criteria, Columns<JobBillOfMaterials> columns,
  58. ref SortOrder<JobBillOfMaterials> sort,
  59. Action<CoreTable, Exception> action)
  60. {
  61. criteria.Add(new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(ParentID));
  62. base.Reload(criteria, columns, ref sort, action);
  63. }
  64. protected override JobBillOfMaterials CreateItem()
  65. {
  66. var result = base.CreateItem();
  67. result.Job.ID = ParentID;
  68. return result;
  69. }
  70. }
  71. }