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); }
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); }
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); } }