TimeSheetShell.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using Xamarin.Forms;
  5. using Xamarin.Forms.Xaml;
  6. namespace comal.timesheets
  7. {
  8. public class TimeSheetShell : Shell<TimeSheetModel,TimeSheet>
  9. {
  10. public static Filter<TimeSheet> UnprocessedTimeSheets => new Filter<TimeSheet>(x => x.EmployeeLink.ID)
  11. .IsEqualTo(App.Data.Me.ID)
  12. .And(x => x.Processed).IsEqualTo(DateTime.MinValue);
  13. static TimeSheetShell()
  14. {
  15. Columns
  16. .Map(nameof(Date), x => x.Date)
  17. .Map(nameof(_actualstart), x => x.Start)
  18. .Map(nameof(_actualfinish), x => x.Finish)
  19. .Map(nameof(_approvedstart), x => x.ApprovedStart)
  20. .Map(nameof(_approvedfinish), x => x.ApprovedFinish)
  21. .Map(nameof(_approved), x => x.Approved);
  22. }
  23. public DateTime Date => Get<DateTime>();
  24. private TimeSpan _actualstart => Get<TimeSpan>();
  25. private TimeSpan _actualfinish => Get<TimeSpan>();
  26. private TimeSpan _approvedstart => Get<TimeSpan>();
  27. private TimeSpan _approvedfinish => Get<TimeSpan>();
  28. private DateTime _approved => Get<DateTime>();
  29. public TimeSpan Start => _approved.IsEmpty()
  30. ? _actualstart
  31. : _approvedstart;
  32. public TimeSpan Finish => _approved.IsEmpty()
  33. ? _actualfinish
  34. : _approvedfinish;
  35. public ImageSource Approved => _approved.IsEmpty()
  36. ? null
  37. : ImageSource.FromFile("tick");
  38. }
  39. }