TimeSheetStore.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Comal.Classes;
  2. using Comal.Stores;
  3. using InABox.Core;
  4. using PRSStores.AssignmentCosting;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PRSStores;
  11. internal class TimeSheetStore : BaseStore<TimeSheet>
  12. {
  13. protected override void AfterSave(TimeSheet entity)
  14. {
  15. base.AfterSave(entity);
  16. UpdateAssignmentCosting(entity);
  17. }
  18. private void UpdateAssignmentCosting(TimeSheet entity)
  19. {
  20. if(!entity.HasOriginalValue(x => x.Approved)
  21. && !entity.HasOriginalValue(x => x.ApprovedStart)
  22. && !entity.HasOriginalValue(x => x.ApprovedFinish)
  23. && !entity.HasOriginalValue(x => x.Start)
  24. && !entity.HasOriginalValue(x => x.Finish)
  25. && !entity.HasOriginalValue(x => x.EmployeeLink.ID)
  26. && !entity.HasOriginalValue(x => x.Date))
  27. {
  28. // No change we care about.
  29. return;
  30. }
  31. var changedEmployee = entity.TryGetOriginalValue(x => x.EmployeeLink.ID, out var employeeID);
  32. if (!changedEmployee)
  33. {
  34. employeeID = entity.EmployeeLink.ID;
  35. }
  36. var changedDate = entity.TryGetOriginalValue(x => x.Date, out var date);
  37. if (!changedDate)
  38. {
  39. date = entity.Date;
  40. }
  41. if(changedEmployee || changedDate)
  42. {
  43. AssignmentCostingUtils.CheckAssignmentCosts(this, date, employeeID);
  44. }
  45. AssignmentCostingUtils.CheckAssignmentCosts(this, entity.Date, entity.EmployeeLink.ID);
  46. }
  47. }