JobsRequiringBookingsWidget.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.ComponentModel;
  3. using Comal.Classes;
  4. using InABox.Configuration;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using PRSDesktop.WidgetGroups;
  8. namespace PRSDesktop
  9. {
  10. internal class JobsRequiringBookingsDashboardProperties : IUserConfigurationSettings, IDashboardProperties { }
  11. internal class JobsRequiringBookingsDashboardElement : DashboardElement<JobsRequiringBookingsWidget, Projects, JobsRequiringBookingsDashboardProperties> { }
  12. internal class JobsRequiringBookingsWidget : DynamicDataGrid<Job>, ISpecificGrid, IDashboardWidget<Projects, JobsRequiringBookingsDashboardProperties>
  13. {
  14. public JobsRequiringBookingsDashboardProperties Properties { get; set; }
  15. public event LoadSettings<JobsRequiringBookingsDashboardProperties>? LoadSettings;
  16. public event SaveSettings<JobsRequiringBookingsDashboardProperties>? SaveSettings;
  17. public JobsRequiringBookingsWidget()
  18. {
  19. HiddenColumns.Add(x => x.Assignments);
  20. ActionColumns.Add(new DynamicTextColumn(RebookingIndicator) { Position = DynamicActionColumnPosition.End, Width = 50});
  21. ActionColumns.Add(new DynamicMenuColumn(CreateJobMenu) { Position = DynamicActionColumnPosition.End});
  22. ColumnsTag = GetType().Name;
  23. }
  24. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  25. {
  26. base.DoReconfigure(options);
  27. options.AddRange(DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows);
  28. }
  29. private string? RebookingIndicator(CoreRow? arg)
  30. {
  31. return arg == null
  32. ? "R"
  33. : arg.Get<Job, int>(c => c.Assignments) != 0
  34. ? "R"
  35. : "";
  36. }
  37. public void Refresh()
  38. {
  39. Refresh(false, true);
  40. }
  41. public void Setup()
  42. {
  43. Refresh(true, false);
  44. }
  45. public void Shutdown(CancelEventArgs? cancel)
  46. {
  47. }
  48. private void CreateJobMenu(DynamicMenuColumn column, CoreRow? row)
  49. {
  50. column.AddItem("Book Now", null, BookJob);
  51. }
  52. private void BookJob(CoreRow? row)
  53. {
  54. }
  55. protected override void Reload(Filters<Job> criteria, Columns<Job> columns, ref SortOrder<Job>? sort, Action<CoreTable?, Exception?> action)
  56. {
  57. criteria.Add(new Filter<Job>(x => x.JobType).IsEqualTo(JobType.Service).And(x => x.Completed).IsEqualTo(DateTime.MinValue)
  58. .And(x => x.OpenAssignments).IsEqualTo(0));
  59. base.Reload(criteria, columns, ref sort, action);
  60. }
  61. protected override DynamicGridStyle GetRowStyle(CoreRow row, DynamicGridStyle style)
  62. {
  63. return base.GetRowStyle(row, style);
  64. }
  65. }
  66. }