JobsRequiringBookingsWidget.cs 2.6 KB

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