示例#1
0
        /// <summary>
        /// Maps the account data.
        /// </summary>
        /// <param name="tableData">The table data.</param>
        /// <returns></returns>
        private void MapBankAccount(IQueryable <Row> tableData)
        {
            var lookupContext        = new RockContext();
            var importedBankAccounts = new FinancialPersonBankAccountService(lookupContext).Queryable().AsNoTracking().ToList();
            var newBankAccounts      = new List <FinancialPersonBankAccount>();

            int completed  = 0;
            int totalRows  = tableData.Count();
            int percentage = (totalRows - 1) / 100 + 1;

            ReportProgress(0, string.Format("Verifying check number import ({0:N0} found, {1:N0} already exist).", totalRows, importedBankAccounts.Count));

            foreach (var row in tableData.Where(r => r != null))
            {
                int?individualId = row["Individual_ID"] as int?;
                int?householdId  = row["Household_ID"] as int?;
                var personKeys   = GetPersonKeys(individualId, householdId, false);
                if (personKeys != null && personKeys.PersonAliasId > 0)
                {
                    int?   routingNumber = row["Routing_Number"] as int?;
                    string accountNumber = row["Account"] as string;
                    if (routingNumber != null && !string.IsNullOrWhiteSpace(accountNumber))
                    {
                        accountNumber = accountNumber.Replace(" ", string.Empty);
                        string encodedNumber = FinancialPersonBankAccount.EncodeAccountNumber(routingNumber.ToString().PadLeft(9, '0'), accountNumber);
                        if (!importedBankAccounts.Any(a => a.PersonAliasId == personKeys.PersonAliasId && a.AccountNumberSecured == encodedNumber))
                        {
                            var bankAccount = new FinancialPersonBankAccount();
                            bankAccount.CreatedByPersonAliasId = ImportPersonAliasId;
                            bankAccount.CreatedDateTime        = ImportDateTime;
                            bankAccount.ModifiedDateTime       = ImportDateTime;
                            bankAccount.AccountNumberSecured   = encodedNumber;
                            bankAccount.AccountNumberMasked    = accountNumber.ToString().Masked();
                            bankAccount.PersonAliasId          = (int)personKeys.PersonAliasId;

                            newBankAccounts.Add(bankAccount);
                            completed++;
                            if (completed % percentage < 1)
                            {
                                int percentComplete = completed / percentage;
                                ReportProgress(percentComplete, string.Format("{0:N0} numbers imported ({1}% complete).", completed, percentComplete));
                            }
                            else if (completed % ReportingNumber < 1)
                            {
                                SaveBankAccounts(newBankAccounts);
                                newBankAccounts.Clear();
                                ReportPartialProgress();
                            }
                        }
                    }
                }
            }

            if (newBankAccounts.Any())
            {
                SaveBankAccounts(newBankAccounts);
            }

            ReportProgress(100, string.Format("Finished check number import: {0:N0} numbers imported.", completed));
        }
示例#2
0
        /// <summary>
        /// Maps the account data.
        /// </summary>
        /// <param name="tableData">The table data.</param>
        /// <param name="totalRows">The total rows.</param>
        private void MapBankAccount(IQueryable <Row> tableData, long totalRows = 0)
        {
            var lookupContext        = new RockContext();
            var importedBankAccounts = new FinancialPersonBankAccountService(lookupContext).Queryable().AsNoTracking().ToList();
            var newBankAccounts      = new List <FinancialPersonBankAccount>();

            if (totalRows == 0)
            {
                totalRows = tableData.Count();
            }

            var completedItems = 0;
            var percentage     = (totalRows - 1) / 100 + 1;

            ReportProgress(0, $"Verifying check number import ({totalRows:N0} found, {importedBankAccounts.Count:N0} already exist).");

            foreach (var row in tableData.Where(r => r != null))
            {
                var individualId = row["Individual_ID"] as int?;
                var householdId  = row["Household_ID"] as int?;
                var personKeys   = GetPersonKeys(individualId, householdId);
                if (personKeys != null && personKeys.PersonAliasId > 0)
                {
                    var routingNumber = row["Routing_Number"] as int?;
                    var accountNumber = row["Account"] as string;
                    if (routingNumber.HasValue && !string.IsNullOrWhiteSpace(accountNumber))
                    {
                        accountNumber = accountNumber.Replace(" ", string.Empty);
                        var encodedNumber = FinancialPersonBankAccount.EncodeAccountNumber(routingNumber.ToString(), accountNumber);
                        if (!importedBankAccounts.Any(a => a.PersonAliasId == personKeys.PersonAliasId && a.AccountNumberSecured == encodedNumber))
                        {
                            var bankAccount = new FinancialPersonBankAccount
                            {
                                CreatedByPersonAliasId = ImportPersonAliasId,
                                AccountNumberSecured   = encodedNumber,
                                AccountNumberMasked    = accountNumber.ToString().Masked(),
                                PersonAliasId          = ( int )personKeys.PersonAliasId
                            };

                            newBankAccounts.Add(bankAccount);
                            completedItems++;
                            if (completedItems % percentage < 1)
                            {
                                var percentComplete = completedItems / percentage;
                                ReportProgress(percentComplete, $"{completedItems:N0} numbers imported ({percentComplete}% complete).");
                            }

                            if (completedItems % ReportingNumber < 1)
                            {
                                SaveBankAccounts(newBankAccounts);
                                newBankAccounts.Clear();
                                ReportPartialProgress();
                            }
                        }
                    }
                }
            }

            if (newBankAccounts.Any())
            {
                SaveBankAccounts(newBankAccounts);
            }

            ReportProgress(100, $"Finished check number import: {completedItems:N0} numbers imported.");
        }
示例#3
0
        /// <summary>
        /// Maps the account data.
        /// </summary>
        /// <param name="tableData">The table data.</param>
        /// <returns></returns>
        private void MapBankAccount(IQueryable <Row> tableData)
        {
            var lookupContext        = new RockContext();
            var importedBankAccounts = new FinancialPersonBankAccountService(lookupContext).Queryable().ToList();
            var newBankAccounts      = new List <FinancialPersonBankAccount>();
            var householdAVList      = new AttributeValueService(lookupContext).Queryable().Where(av => av.AttributeId == HouseholdAttributeId).ToList();


            int completed  = 0;
            int totalRows  = tableData.Count();
            int percentage = (totalRows - 1) / 100 + 1;

            ReportProgress(0, string.Format("Verifying check number import ({0:N0} found, {1:N0} already exist).", totalRows, importedBankAccounts.Count()));

            foreach (var row in tableData)
            {
                int?individualId = row["Individual_ID"] as int?;
                int?householdId  = row["Household_ID"] as int?;
                //int? personId = GetPersonAliasId( individualId, householdId );

                int?personId;
                if (individualId != null)
                {
                    personId = GetPersonAliasId(individualId, householdId);
                }                                                                                         //will get the exact person if Individual Id is not null.
                else
                {
                    personId = GetPersonId(householdAVList, householdId);
                }                                                                //Will attempt to get the Head first, then Spouse, then Child. Will exclude Other and Visitor
                if (personId != null)
                {
                    int?   routingNumber = row["Routing_Number"] as int?;
                    string accountNumber = row["Account"] as string;
                    if (routingNumber != null && !string.IsNullOrWhiteSpace(accountNumber))
                    {
                        accountNumber = accountNumber.Replace(" ", string.Empty);
                        string encodedNumber = FinancialPersonBankAccount.EncodeAccountNumber(routingNumber.ToString(), accountNumber);
                        if (!importedBankAccounts.Any(a => a.PersonAliasId == personId && a.AccountNumberSecured == encodedNumber))
                        {
                            var bankAccount = new FinancialPersonBankAccount();
                            bankAccount.CreatedByPersonAliasId = ImportPersonAlias.Id;
                            bankAccount.AccountNumberSecured   = encodedNumber;
                            bankAccount.AccountNumberMasked    = accountNumber.ToString().Masked();
                            bankAccount.PersonAliasId          = (int)personId;

                            // Other Attributes (not used):
                            // Account_Type_Name

                            newBankAccounts.Add(bankAccount);
                            completed++;
                            if (completed % percentage < 1)
                            {
                                int percentComplete = completed / percentage;
                                ReportProgress(percentComplete, string.Format("{0:N0} numbers imported ({1}% complete).", completed, percentComplete));
                            }
                            else if (completed % ReportingNumber < 1)
                            {
                                SaveBankAccounts(newBankAccounts);
                                newBankAccounts.Clear();
                                ReportPartialProgress();
                            }
                        }
                    }
                }
            }

            if (newBankAccounts.Any())
            {
                SaveBankAccounts(newBankAccounts);
            }

            ReportProgress(100, string.Format("Finished check number import: {0:N0} numbers imported.", completed));
        }