using System; using LCU.Library.Internal.IncentiveApiModels.Enums; using LCU.Library.Internal.IncentiveApiModels.Common; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace LCU.Library.Internal.IncentiveApiModels.Entities { public class DeadActivity : Auditable, IViewTransformable { public int Id { get; set; } public Guid AppUserId { get; set; } [JsonConverter(typeof(StringEnumConverter))] public DeadActivityReason Reason { get; set; } public string ReasonNote { get; set; } [JsonConverter(typeof(StringEnumConverter))] public Product? Product { get; set; } [JsonConverter(typeof(StringEnumConverter))] public ActivityType? Type { get; set; } [JsonConverter(typeof(StringEnumConverter))] public SystemType? SourceSystem { get; set; } public string? SourceId { get; set; } public DateTime? SourceCreated { get; set; } public DeadActivityDetail DeadDetail { get; set; } public int? DepartmentId { get; set; } public string? EmployeeId { get; set; } public string? EmployeeEmail { get; set; } public DateTime? Accepted { get; set; } [JsonConverter(typeof(StringEnumConverter))] public ActivityState? State { get; set; } public int? LivingActivityId { get; set; } public DeadActivity(Activity activity, DeadActivityReason reason, string note) { Accepted = activity.Accepted; AppUserId = activity.AppUserId; DeadDetail = new DeadActivityDetail { AccountBalance = activity.Detail.AccountBalance, AccountNewBalance = activity.Detail.AccountNewBalance, AccountNumber = activity.Detail.AccountNumber, AccountStatus = activity.Detail.AccountStatus, AgreementNumber = activity.Detail.AgreementNumber, BranchOrgName = activity.Detail.BranchOrgName, BranchOrgNbr = activity.Detail.BranchOrgNbr, DnaPersonNbr = activity.Detail.DnaPersonNbr, DebtProtectionAddDate = activity.Detail.DebtProtectionAddDate, DebtProtectionRemoveDate = activity.Detail.DebtProtectionRemoveDate, GapInsuranceAddDate = activity.Detail.GapInsuranceAddDate, GapInsuranceRemoveDate = activity.Detail.GapInsuranceRemoveDate, IsDebtProtectionEligible = activity.Detail.IsDebtProtectionEligible, IsGapInsuranceEligible = activity.Detail.IsGapInsuranceEligible, MemberName = activity.Detail.MemberName, StationName = activity.Detail.StationName, SubAccountNumber = activity.Detail.SubAccountNumber, SubjectOrgNbr = activity.Detail.SubjectOrgNbr, SubjectPersonNbr = activity.Detail.SubjectPersonNbr }; DepartmentId = activity.DepartmentId < 0 ? null : activity.DepartmentId; EmployeeId = activity.EmployeeId; EmployeeEmail = activity.EmployeeEmail; Product = activity.Product; Reason = reason; ReasonNote = note; SourceCreated = activity.SourceCreated; SourceId = activity.SourceId; SourceSystem = activity.SourceSystem; State = activity.State; Type = activity.Type; } public DeadActivity(string sourceId, SystemType systemType, DeadActivityReason reason, string note) { Reason = reason; ReasonNote = note; SourceId = sourceId; SourceSystem = systemType; DeadDetail = new DeadActivityDetail() { DeadActivity = this }; } private DeadActivity() { } public DeadActivity TransformForView() { DeadDetail?.TransformForView(); return this; } } }