EmployeeQualification.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. public QualificationLink Qualification { get; set; }
  15. [EditorSequence(2)]
  16. public string QualificationNumber { get; set; }
  17. [DateEditor]
  18. [EditorSequence(3)]
  19. public DateTime Qualified { get; set; }
  20. [DateEditor]
  21. [EditorSequence(4)]
  22. public DateTime Expiry { get; set; }
  23. [EditorSequence(5)]
  24. public ImageDocumentLink FrontPhoto { get; set; }
  25. [EditorSequence(6)]
  26. public ImageDocumentLink BackPhoto { get; set; }
  27. [TimestampEditor]
  28. [EditorSequence(7)]
  29. public DateTime Verified { get; set; }
  30. protected override void DoPropertyChanged(string name, object? before, object? after)
  31. {
  32. base.DoPropertyChanged(name, before, after);
  33. if (name.Equals(nameof(Qualified)))
  34. Expiry = CalculateExpiry((DateTime)after, Qualification.Renewal, Qualification.Period, Expiry);
  35. }
  36. public DateTime CalculateExpiry(DateTime start, QualificationRenewal renewal, int period, DateTime expiry)
  37. {
  38. if (renewal == QualificationRenewal.Permanent)
  39. return DateTime.MaxValue;
  40. if (renewal == QualificationRenewal.Days)
  41. return start.AddDays(period);
  42. if (renewal == QualificationRenewal.Weeks)
  43. return start.AddDays(period * 7);
  44. if (renewal == QualificationRenewal.Months)
  45. return start.AddMonths(period);
  46. if (renewal == QualificationRenewal.Years)
  47. return start.AddYears(period);
  48. return expiry.Equals(DateTime.MaxValue) || expiry.Equals(DateTime.MinValue) ? DateTime.Today : expiry;
  49. }
  50. }
  51. }