EmployeeQualification.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. [UserTracking(typeof(Qualification))]
  6. public class EmployeeQualification : Entity, IRemotable, IPersistent, IManyToMany<Employee, Qualification>, ILicense<HumanResourcesLicense>,
  7. IExportable, IImportable
  8. {
  9. [EditorSequence(0)]
  10. [EntityRelationship(DeleteAction.Cascade)]
  11. public EmployeeLink Employee { get; set; }
  12. [EditorSequence(1)]
  13. [EntityRelationship(DeleteAction.Cascade)]
  14. [RequiredColumn]
  15. public QualificationLink Qualification { get; set; }
  16. [EditorSequence(2)]
  17. public string QualificationNumber { get; set; }
  18. [DateEditor]
  19. [EditorSequence(3)]
  20. public DateTime Qualified { get; set; }
  21. [DateEditor]
  22. [EditorSequence(4)]
  23. public DateTime Expiry { get; set; }
  24. [EditorSequence(5)]
  25. public ImageDocumentLink FrontPhoto { get; set; }
  26. [EditorSequence(6)]
  27. public ImageDocumentLink BackPhoto { get; set; }
  28. [TimestampEditor]
  29. [EditorSequence(7)]
  30. public DateTime Verified { get; set; }
  31. protected override void DoPropertyChanged(string name, object? before, object? after)
  32. {
  33. base.DoPropertyChanged(name, before, after);
  34. if (name.Equals(nameof(Qualified)))
  35. Expiry = CalculateExpiry((DateTime)after, Qualification.Renewal, Qualification.Period, Expiry);
  36. }
  37. public DateTime CalculateExpiry(DateTime start, QualificationRenewal renewal, int period, DateTime expiry)
  38. {
  39. if (renewal == QualificationRenewal.Permanent)
  40. return DateTime.MaxValue;
  41. if (renewal == QualificationRenewal.Days)
  42. return start.AddDays(period);
  43. if (renewal == QualificationRenewal.Weeks)
  44. return start.AddDays(period * 7);
  45. if (renewal == QualificationRenewal.Months)
  46. return start.AddMonths(period);
  47. if (renewal == QualificationRenewal.Years)
  48. return start.AddYears(period);
  49. return expiry.Equals(DateTime.MaxValue) || expiry.Equals(DateTime.MinValue) ? DateTime.Today : expiry;
  50. }
  51. }
  52. }