TimesheetNotesGrid.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.DynamicGrid;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace PRSDesktop.Panels.Timesheets;
  11. internal class TimesheetNotesGrid : DynamicDataGrid<EmployeeNote>, ISpecificGrid
  12. {
  13. public Guid EmployeeID { get; set; }
  14. public DateTime Date { get; set; }
  15. protected override bool CanCreateItems()
  16. {
  17. return base.CanCreateItems() && EmployeeID != Guid.Empty;
  18. }
  19. public override EmployeeNote CreateItem()
  20. {
  21. var item = base.CreateItem();
  22. item.Employee.ID = EmployeeID;
  23. if(Date.Date == DateTime.Today)
  24. {
  25. item.Date = DateTime.Now;
  26. }
  27. else
  28. {
  29. item.Date = Date;
  30. }
  31. return item;
  32. }
  33. protected override void Reload(Filters<EmployeeNote> criteria, Columns<EmployeeNote> columns, ref SortOrder<EmployeeNote>? sort, CancellationToken token, Action<CoreTable?, Exception?> action)
  34. {
  35. if(EmployeeID == Guid.Empty)
  36. {
  37. criteria.Add(new Filter<EmployeeNote>().None());
  38. }
  39. else
  40. {
  41. criteria.Add(new Filter<EmployeeNote>(x => x.Employee.ID).IsEqualTo(EmployeeID));
  42. criteria.Add(new Filter<EmployeeNote>(x => x.Date).IsGreaterThanOrEqualTo(Date)
  43. .And(x => x.Date).IsLessThan(Date.AddDays(1)));
  44. }
  45. base.Reload(criteria, columns, ref sort, token, action);
  46. }
  47. }