JobBillOfMaterialsGrid.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. HiddenColumns.Add(x => x.Approved);
  17. HiddenColumns.Add(x => x.Job.ID);
  18. if (Security.IsAllowed<CanApproveBillsOfMaterials>())
  19. _approve = AddButton("Approve", null, ApproveClick);
  20. }
  21. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  22. {
  23. base.DoReconfigure(options);
  24. options.AddRange(
  25. DynamicGridOption.AddRows,
  26. DynamicGridOption.EditRows,
  27. DynamicGridOption.DeleteRows,
  28. DynamicGridOption.FilterRows,
  29. DynamicGridOption.SelectColumns,
  30. DynamicGridOption.RecordCount
  31. );
  32. }
  33. public Job Job { get; set; }
  34. public JobPanelSettings Settings { get; set; }
  35. private bool ApproveClick(Button button, CoreRow[] rows)
  36. {
  37. if (rows == null || !rows.Any())
  38. {
  39. MessageBox.Show("Please select a row first!");
  40. return false;
  41. }
  42. var bom = rows[0].ToObject<JobBillOfMaterials>();
  43. bom.Approved = bom.Approved.IsEmpty() ? DateTime.Now : DateTime.MinValue;
  44. UpdateRow<DateTime?>(rows[0], "Approved", bom.Approved.IsEmpty() ? null : bom.Approved, true);
  45. new Client<JobBillOfMaterials>().Save(bom, bom.Approved.IsEmpty() ? "Cleared Approval" : "Marked as Approved");
  46. UpdateButton(_approve, null,
  47. _approve.IsEnabled && !bom.Approved.IsEmpty() ? "Unapprove" : "Approve");
  48. return false;
  49. }
  50. protected override void SelectItems(CoreRow[] rows)
  51. {
  52. base.SelectItems(rows);
  53. if (rows?.Length == 1)
  54. {
  55. _approve.Visibility = Visibility.Visible;
  56. UpdateButton(_approve, null,
  57. _approve.IsEnabled && !rows[0].Get<JobBillOfMaterials, DateTime>(c => c.Approved).IsEmpty() ? "Unapprove" : "Approve");
  58. }
  59. else
  60. _approve.Visibility = Visibility.Collapsed;
  61. }
  62. protected override void Reload(Filters<JobBillOfMaterials> criteria, Columns<JobBillOfMaterials> columns,
  63. ref SortOrder<JobBillOfMaterials> sort,
  64. Action<CoreTable, Exception> action)
  65. {
  66. criteria.Add(new Filter<JobBillOfMaterials>(x => x.Job.ID).IsEqualTo(Job.ID));
  67. base.Reload(criteria, columns, ref sort, action);
  68. }
  69. protected override JobBillOfMaterials CreateItem()
  70. {
  71. var result = base.CreateItem();
  72. result.Job.ID = Job.ID;
  73. result.Job.Synchronise(Job);
  74. return result;
  75. }
  76. }
  77. }