using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using LCU.API.Internal.Operations.IncentiveApiLib.Services; using LCU.API.Internal.Operations.IncentiveApi.Models.Constants; namespace LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities; public class NewCheckingAccountActivity : IExternalActivity { public long ActivityNbr { get; set; } public DateTime ActivityDateTime { get; set; } public long ResponsiblePersonNbr { get; set; } public string ActivityTypeCode { get; set; } public long SubjectAccountNbr { get; set; } public string MinorAccountType { get; set; } public string AssociateFirst { get; set; } public string AssociateMiddleInit { get; set; } public string AssociateLast { get; set; } public string TaxPersonNbr { get; set; } public string TaxOrgNbr { get; set; } public string CurrentAccountStatus { get; set; } public long BranchOrgNbr { get; set; } public string BranchOrgName { get; set; } public string EmployeeEmail { get; set; } public DateTime AccountContractDate { get; set; } public string TaxOrgName { get; set; } public string TaxPersonName { get; set; } public double? OriginalBalance { get; set; } public string TaxPersonPhoneNumbers { get; set; } public string TaxPersonEmailAddresses { get; set; } public Activity MapToActivity() { return new Activity() { Product = GetProductType(), Type = ActivityType.Sale, SourceSystem = GetSystemType(), SourceId = GetSourceId(), SourceCreated = AccountContractDate, Detail = new ActivityDetail() { MemberName = TaxOrgName ?? TaxPersonName, DnaPersonNbr = ResponsiblePersonNbr.ToString(), BranchOrgNbr = BranchOrgNbr.ToString(), BranchOrgName = BranchOrgName, SubjectPersonNbr = TaxPersonNbr, SubjectOrgNbr = TaxOrgNbr, AccountNumber = SubjectAccountNbr.ToString(), AccountStatus = CurrentAccountStatus, AccountBalance = OriginalBalance }, MetaData = DataParsingService.MapActivityMetaData(new List { TaxPersonPhoneNumbers, TaxPersonEmailAddresses }), DepartmentId = -1, EmployeeId = null, EmployeeEmail = StandardizedEmail(), Accepted = ActivityDateTime.Date.AddHours(12), State = ActivityState.Created }; } public ActivityType GetActivityType() { return ActivityType.Sale; } public string GetSourceId() { return ActivityNbr.ToString(); } public Product GetProductType() { return Product.NewChecking; } public SystemType GetSystemType() { if ( !string.IsNullOrWhiteSpace(EmployeeEmail) && string.Equals(EmployeeEmail, SystemAppUserConstants.DigitalBankingEmail, StringComparison.CurrentCultureIgnoreCase) ) { return SystemType.DigitalBanking; } return SystemType.Dna; } public string StandardizedEmail() { return !string.IsNullOrWhiteSpace(EmployeeEmail) ? EmployeeEmail.ToUpper() : EmployeeEmail; } }