using LCU.Library.Internal.IncentiveApiModels.Common; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using System.Linq; using LCU.Library.Internal.IncentiveApiModels.Enums; namespace LCU.Library.Internal.IncentiveApiModels.Entities { public class ActivityTransferAction : Auditable, IViewTransformable { public int Id { get; set; } [JsonConverter(typeof(StringEnumConverter))] public ActivityState ActivityStateBeforeTransfer { get; set; } public int RequestedActivityId { get; set; } [JsonConverter(typeof(StringEnumConverter))] public ActivityTransferState State { get; set; } public int? NewActivityId { get; set; } public int NewActivityDepartmentId { get; set; } public string NewActivityEmployeeId { get; set; } public Guid NewAppUserId { get; set; } public string? RequestedDepartmentApprover { get; set; } public DateTime? RequestedDepartmentApproved { get; set; } public string? NewDepartmentApprover { get; set; } public DateTime? NewDepartmentApproved { get; set; } public Activity RequestedActivity { get; set; } public Activity NewActivity { get; set; } public static bool IsEligibleForTransfer(ActivityState activityState) { return ActivityStateDetail.ActivityStatesEligibleForTransfer .Select(x => x.State).Contains(activityState); } public ActivityTransferAction TransformForView() { RequestedActivity?.TransformForView(); NewActivity?.TransformForView(); return this; } } }