BaseEmployeeRosterItemGrid.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. namespace PRSDesktop;
  7. public abstract class BaseEmployeeRosterItemGrid<TParent,TItem> : DynamicOneToManyGrid<TParent,TItem>
  8. where TParent : Entity, IRemotable, IPersistent, new()
  9. where TItem : Entity, IRemotable, IPersistent, IEmployeeRosterItem, new()
  10. {
  11. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  12. {
  13. base.DoReconfigure(options);
  14. options.Add(DynamicGridOption.DirectEdit);
  15. options.Remove(DynamicGridOption.SelectColumns);
  16. }
  17. protected override BaseEditor? GetEditor(object item, DynamicGridColumn column)
  18. {
  19. string[] splits = {
  20. "SplitShift",
  21. "Start2",
  22. "Finish2",
  23. "Break2"
  24. };
  25. if (!Security.IsAllowed<AllowEmployeeRosterSplitShifts>() && splits.Contains(column.ColumnName))
  26. return new NullEditor();
  27. return base.GetEditor(item, column);
  28. }
  29. protected override DynamicGridColumns LoadColumns()
  30. {
  31. var result = new DynamicGridColumns();
  32. result.Add<TItem,String>(x => x.Description, 0, "Description", "", Alignment.MiddleCenter);
  33. result.Add<TItem,bool>(x => x.Enabled,50, "On?", "", Alignment.MiddleCenter);
  34. result.Add<TItem,TimeSpan>(x => x.Start, 80, "Start", "hh:mm", Alignment.MiddleCenter);
  35. result.Add<TItem,TimeSpan>(x => x.Finish, 80, "Finish", "hh:mm", Alignment.MiddleCenter);
  36. result.Add<TItem,TimeSpan>(x => x.Break, 100, "Break", "hh:mm", Alignment.MiddleCenter);
  37. if (Security.IsAllowed<AllowEmployeeRosterSplitShifts>())
  38. {
  39. result.Add<TItem,bool>(x => x.Enabled,50, "2nd?", "", Alignment.MiddleCenter);
  40. result.Add<TItem,TimeSpan>(x => x.Start2, 80, "Start", "hh:mm", Alignment.MiddleCenter);
  41. result.Add<TItem,TimeSpan>(x => x.Finish2, 80, "Finish", "hh:mm", Alignment.MiddleCenter);
  42. result.Add<TItem,TimeSpan>(x => x.Finish2, 100, " Break", "hh:mm", Alignment.MiddleCenter);
  43. }
  44. result.Add<TItem,double>(x => x.Duration, 60, "Total", "F2", Alignment.MiddleCenter);
  45. result.Add<TItem,Guid>(x => x.Overtime.ID, 150, "Overtime", "", Alignment.MiddleLeft);
  46. return result;
  47. }
  48. public override TItem CreateItem()
  49. {
  50. var result = base.CreateItem();
  51. int iDay = 0;
  52. foreach (var item in Items)
  53. item.Day = ++iDay;
  54. SaveItems(Items.ToArray());
  55. result.Day = ++iDay;
  56. return result;
  57. }
  58. public override void DeleteItems(params CoreRow[] rows)
  59. {
  60. base.DeleteItems(rows);
  61. int iDay = 0;
  62. foreach (var item in Items)
  63. item.Day = ++iDay;
  64. SaveItems(Items.ToArray());
  65. }
  66. }