Beispiel #1
0
        public static BusinessPhone Translate(DataRow row)
        {
            var phone = new BusinessPhone();

            try
            {
                string phoneType   = row.Field <string>("communication_type").Replace("Phone", "").Replace("phone", "").Trim();
                string phoneNumber = new string( row.Field <string>("communication_value").Where(c => char.IsDigit(c)).ToArray());
                if (!string.IsNullOrWhiteSpace(phoneNumber))
                {
                    phone.BusinessId  = F1Business.GetCompanyAsPersonId(row.Field <int>("HOUSEHOLD_ID"));
                    phone.PhoneType   = phoneType;
                    phone.PhoneNumber = phoneNumber.Left(20);
                    return(phone);
                }
            }
            catch
            {
                return(null);
            }

            return(null);
        }
Beispiel #2
0
        public static Business Translate(DataRow row, DataTable communications)
        {
            var business = new Business();
            var notes    = new List <string>();

            try
            {
                var householdId = row.Field <int>("HOUSEHOLD_ID");
                business.Id               = F1Business.GetCompanyAsPersonId(householdId);
                business.Name             = row.Field <string>("HOUSEHOLD_NAME");
                business.ModifiedDateTime = row.Field <DateTime?>("LAST_ACTIVITY_DATE");
                business.CreatedDateTime  = row.Field <DateTime>("CREATED_DATE");

                // Get communication values
                var emailRow = communications.Select($"household_id = { householdId } AND communication_type = 'Email'").FirstOrDefault();

                if (emailRow != null)
                {
                    var email = emailRow.Field <string>("communication_value");

                    if (email.IsNotNullOrWhitespace())
                    {
                        business.Email = email;
                    }
                }

                string companyType = row.Field <string>("CompanyType");
                if (companyType.IsNotNullOrWhitespace())
                {
                    business.Attributes.Add(new BusinessAttributeValue
                    {
                        AttributeKey   = "CompanyType",
                        AttributeValue = companyType,
                        BusinessId     = business.Id
                    });
                }

                string contactName = row.Field <string>("CONTACT_NAME");
                if (contactName.IsNotNullOrWhitespace())
                {
                    business.Attributes.Add(new BusinessAttributeValue
                    {
                        AttributeKey   = "ContactName",
                        AttributeValue = contactName,
                        BusinessId     = business.Id
                    });
                }
            }
            catch (Exception ex)
            {
                notes.Add("ERROR in Export: " + ex.Message + ": " + ex.StackTrace);
            }

            // write out import notes
            if (notes.Count > 0)
            {
                business.Note = string.Join(",", notes);
            }

            return(business);
        }
        public static FinancialTransaction Translate(DataRow row, Dictionary <int, HeadOfHousehold> headOfHouseHolds, HashSet <int> companyHouseholdIds)
        {
            var transaction  = new FinancialTransaction();
            var individualId = row.Field <int?>("Individual_ID");
            var householdId  = row.Field <int?>("household_id");
            var isCompany    = householdId.HasValue && companyHouseholdIds.Contains(householdId.Value);

            if (individualId.HasValue)
            {
                transaction.AuthorizedPersonId = individualId.Value;
            }
            else
            {
                var headOfHousehold = headOfHouseHolds.Where(x => x.Key == row.Field <int?>("household_id")).FirstOrDefault().Value;

                if (headOfHousehold != null)
                {
                    transaction.AuthorizedPersonId = headOfHousehold.IndividualId;
                }
                else if (isCompany)
                {
                    transaction.AuthorizedPersonId = F1Business.GetCompanyAsPersonId(row.Field <int>("household_id"));
                }
            }

            if (row.Field <int?>("BatchID").HasValue)
            {
                transaction.BatchId = row.Field <int?>("BatchID").Value;
            }
            else
            {
                transaction.BatchId = 90000000 + int.Parse(row.Field <DateTime?>("Received_Date").Value.ToString("yyyyMMdd"));
            }

            transaction.TransactionDate = row.Field <DateTime?>("Received_Date");
            transaction.TransactionCode = row.Field <string>("Check_Number");
            transaction.Summary         = row.Field <string>("Memo");
            transaction.Id = row.Field <int>("ContributionID");

            switch (row.Field <string>("Contribution_Type_Name"))
            {
            case "Cash":
                transaction.CurrencyType = CurrencyType.Cash;
                break;

            case "Check":
                transaction.CurrencyType = CurrencyType.Check;
                break;

            case "Credit Card":
                transaction.CurrencyType = CurrencyType.CreditCard;
                break;

            case "ACH":
                transaction.CurrencyType = CurrencyType.ACH;
                break;

            case "Non-Cash":
                transaction.CurrencyType = CurrencyType.NonCash;
                break;

            default:
                transaction.CurrencyType = CurrencyType.Unknown;
                break;
            }

            switch (row.Field <string>("Fund_Type"))
            {
            case "Receipt":
                transaction.TransactionType = TransactionType.Receipt;
                break;

            case "EventRegistration":
                transaction.TransactionType = TransactionType.EventRegistration;
                break;

            default:
                transaction.TransactionType = TransactionType.Contribution;
                break;
            }

            var accountId = 0;
            MD5 md5Hasher = MD5.Create();

            byte[] hashed;
            //Set Account Id
            if (string.IsNullOrWhiteSpace(row.Field <string>("sub_fund_name")))
            {
                //Use Hash to create Account ID
                string valueToHash = row.Field <string>("fund_name");
                hashed = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(valueToHash));
            }
            else
            {
                string valueToHash = row.Field <string>("fund_name") + row.Field <string>("sub_fund_name");
                hashed = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(valueToHash));
            }

            accountId = Math.Abs(BitConverter.ToInt32(hashed, 0));     // used abs to ensure positive number

            transaction.FinancialTransactionDetails.Add(new FinancialTransactionDetail
            {
                Id            = transaction.Id,
                TransactionId = transaction.Id,
                Amount        = row.Field <decimal>("Amount"),
                AccountId     = accountId
            });

            return(transaction);
        }
Beispiel #4
0
        public static BusinessAddress Translate(DataRow row)
        {
            var address = new BusinessAddress();

            try
            {
                address.BusinessId = F1Business.GetCompanyAsPersonId(row.Field <int>("HOUSEHOLD_ID"));
                address.Street1    = row.Field <string>("address_1");
                address.Street2    = row.Field <string>("address_2");
                address.City       = row.Field <string>("city");
                address.State      = row.Field <string>("state");
                address.PostalCode = row.Field <string>("zip_code");
                address.Country    = row.Field <string>("country");

                var addressType = row.Field <string>("address_type");
                switch (addressType)
                {
                case "Primary":
                {
                    address.AddressType = AddressType.Home;
                    address.IsMailing   = true;
                    break;
                }

                case "Previous":
                {
                    address.AddressType = AddressType.Previous;
                    break;
                }

                case "Business":
                {
                    address.AddressType = AddressType.Work;
                    break;
                }

                case "Mail Returned / Incorrect":
                {
                    address.AddressType = AddressType.Other;
                    break;
                }

                default:
                {
                    address.AddressType = AddressType.Other;
                    break;
                }
                }

                // only add the address if we have a valid address
                if (address.Street1.IsNotNullOrWhitespace() &&
                    address.City.IsNotNullOrWhitespace() &&
                    address.PostalCode.IsNotNullOrWhitespace())
                {
                    return(address);
                }

                return(null);
            }
            catch
            {
                return(null);
            }
        }