using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using LCU.API.Internal.Operations.IncentiveApiLib.Services; namespace LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities; public class NewAtmCheckCardActivity : IExternalActivity { public long ActivityNbr { get; set; } public DateTime ActivityDateTime { get; set; } public long ResponsiblePersonNbr { get; set; } public string ActivityTypeCde { get; set; } public long AgreementNbr { get; set; } public string CardState { get; set; } public string CardType { get; set; } public long AccountNbr { get; set; } public string OwnerPersonNbr { get; set; } public string OwnerOrgNbr { get; set; } public string AcctStateAtActivity { get; set; } public string AcctStatAtQueryTime { get; set; } public DateTime AcctStateEffDateTime { get; set; } public string AssociateFirst { get; set; } public string AssociateMiddleInit { get; set; } public string AssociateLast { get; set; } public string EmployeeEmail { get; set; } public string TaxOrgName { get; set; } public string TaxPersonName { get; set; } public string TaxPersonPhoneNumbers { get; set; } public string TaxPersonEmailAddresses { get; set; } static readonly TimeZoneInfo AssumedSourceTimezone = TimeZoneConverter.TZConvert.GetTimeZoneInfo("America/Chicago"); public Activity MapToActivity() { return new Activity() { Product = GetProductType(), Type = GetActivityType(), SourceSystem = GetSystemType(), SourceId = ActivityNbr.ToString(), SourceCreated = TimeZoneInfo.ConvertTime(ActivityDateTime, AssumedSourceTimezone, TimeZoneInfo.Utc), Detail = new ActivityDetail() { MemberName = TaxOrgName ?? TaxPersonName, DnaPersonNbr = ResponsiblePersonNbr.ToString(), SubjectPersonNbr = OwnerPersonNbr, SubjectOrgNbr = OwnerOrgNbr, AccountNumber = AccountNbr.ToString(), AccountStatus = AcctStatAtQueryTime, AgreementNumber = AgreementNbr.ToString() }, MetaData = DataParsingService.MapActivityMetaData(new List { TaxPersonPhoneNumbers, TaxPersonEmailAddresses }), DepartmentId = -1, EmployeeId = null, EmployeeEmail = EmployeeEmail, Accepted = ActivityDateTime.Date.AddHours(12), State = ActivityState.Created }; } public ActivityType GetActivityType() { return ActivityType.Other; } public Product GetProductType() { return CardType.Equals("ATM", StringComparison.InvariantCultureIgnoreCase) ? Product.ATMCard : Product.CheckCard; } public string GetSourceId() { return ActivityNbr.ToString(); } public List MapActivityMetaData() { var parsedMetaData = new List(); if (!string.IsNullOrWhiteSpace(TaxPersonEmailAddresses)) { foreach (var item in TaxPersonEmailAddresses.Split(",", StringSplitOptions.RemoveEmptyEntries)) { parsedMetaData.Add(DataParsingService.DetermineActivityMetaData(item)); } } if (!string.IsNullOrWhiteSpace(TaxPersonPhoneNumbers)) { foreach (var item in TaxPersonPhoneNumbers.Split(",", StringSplitOptions.RemoveEmptyEntries)) { parsedMetaData.Add(DataParsingService.DetermineActivityMetaData(item)); } } return parsedMetaData; } public SystemType GetSystemType() { return SystemType.Dna; } }