using System; using LCU.Library.Internal.IncentiveApiModels.Enums; using LCU.Library.Internal.IncentiveApiModels.Common; using Newtonsoft.Json; namespace LCU.Library.Internal.IncentiveApiModels.Entities { public class DeadActivityDetail : IViewTransformable { public int Id { get; set; } public string? DnaPersonNbr { get; set; } public string? AccountNumber { get; set; } public string? SubAccountNumber { get; set; } public string? AccountStatus { get; set; } public string? AgreementNumber { get; set; } public string? SubjectPersonNbr { get; set; } public string? SubjectOrgNbr { get; set; } public string? MemberName { get; set; } public string? StationName { get; set; } public string? BranchOrgNbr { get; set; } public string? BranchOrgName { get; set; } public double? AccountBalance { get; set; } public double? AccountNewBalance { get; set; } public int DeadActivityRef { get; set; } [JsonIgnore] public DeadActivity DeadActivity { get; set; } public DateTime? DebtProtectionAddDate { get; set; } public DateTime? DebtProtectionRemoveDate { get; set; } public bool? IsDebtProtectionEligible { get; set; } public bool IsGapInsuranceEligible { get; set; } public DateTime? GapInsuranceAddDate { get; set; } public DateTime? GapInsuranceRemoveDate { get; set; } public DeadActivityDetail TransformForView() { if (DeadActivity == null || DeadActivity.Product == null || DeadActivity.Type == null) { return this; } if ((DeadActivity?.Product == Product.CreditCard || DeadActivity?.Product == Product.CreditCardBalanceTransfer) && DeadActivity?.Type == ActivityType.Referral) { AccountNumber = GetAccountNumber(); } return this; } private string GetAccountNumber() { if (string.IsNullOrEmpty(AccountNumber) || AccountNumber.Length <= 4) return AccountNumber; var lastDigits = AccountNumber.Substring(AccountNumber.Length - 4, 4); var maskDigits = new string('X', AccountNumber.Length - 4); return string.Concat(maskDigits, lastDigits); } } }