コード例 #1
0
        // Checks if a companies house member already exists
        private static bool DoesContactExist(Entity existingContact, CompaniesHouseMember companiesHouseMember)
        {
            string dynStr = string.Empty;

            if (existingContact.Attributes.Contains("firstname") && existingContact.Attributes["firstname"] != null)
            {
                dynStr += (string)existingContact["firstname"];
            }
            if (existingContact.Attributes.Contains("lastname") && existingContact.Attributes["lastname"] != null)
            {
                dynStr += (string)existingContact["lastname"];
            }
            if (existingContact.Attributes.Contains("defra_dobmonthcompanieshouse") &&
                existingContact.Attributes["defra_dobmonthcompanieshouse"] != null)
            {
                dynStr += ((int)existingContact["defra_dobmonthcompanieshouse"]).ToString();
            }
            if (existingContact.Attributes.Contains("defra_dobyearcompanieshouse_text") &&
                existingContact.Attributes["defra_dobyearcompanieshouse_text"] != null)
            {
                dynStr += ((int)existingContact["defra_dobyearcompanieshouse_text"]).ToString();
            }

            if (string.Equals(dynStr,
                              (companiesHouseMember.firstname + companiesHouseMember.lastname + companiesHouseMember.date_of_birth.month +
                               companiesHouseMember.date_of_birth.year), StringComparison.CurrentCultureIgnoreCase))
            {
                return(true);
            }
            return(false);
        }
コード例 #2
0
        /// <summary>
        /// Maps a Companies member to a CRM contact, truncating field as required.
        /// </summary>
        public static Entity MapToContact(CompaniesHouseMember companiesHouseMember, Entity crmContact = null)
        {
            if (crmContact == null)
            {
                crmContact = new Entity(Contact.EntityLogicalName);
            }

            ContactAccountRoleCode crmContactRole = OfficerRoleMapping.MapToCrmContactRoleCode(companiesHouseMember.officer_role);

            crmContact[Contact.FromCompaniesHouseField] = true;
            crmContact[Contact.AccountRoleCodeField]    = new OptionSetValue((int)crmContactRole);
            crmContact[Contact.FirstNameField]          = companiesHouseMember.firstname.TruncateIfNeeded(Contact.FirstNameFieldLength);
            crmContact[Contact.LastNameField]           = companiesHouseMember.lastname.TruncateIfNeeded(Contact.LastNameFieldLength);
            crmContact[Contact.JobTitleField]           = companiesHouseMember.occupation.TruncateIfNeeded(Contact.JobTitleFieldLength);

            if (companiesHouseMember.date_of_birth != null)
            {
                crmContact[Contact.DobMonthCompaniesHouseField] = companiesHouseMember.date_of_birth.month;
                crmContact[Contact.DobYearCompaniesHouseField]  = companiesHouseMember.date_of_birth.year.ToString();
            }

            if (!string.IsNullOrEmpty(companiesHouseMember.resigned_on))
            {
                try
                {
                    crmContact[Contact.ResignedOnCompaniesHouseField] = DateTime.ParseExact(companiesHouseMember.resigned_on,
                                                                                            "yyyy-MM-dd", CultureInfo.InvariantCulture);
                }
                catch (FormatException)
                {
                }
            }

            return(crmContact);
        }
コード例 #3
0
        /// <summary>
        /// Creates a new companies house acccount from a mcompanies house member
        /// </summary>
        /// <param name="parentAccount"></param>
        /// <param name="companiesHouseMember"></param>
        private Entity CreateAccountMember(CompaniesHouseMember companiesHouseMember)
        {
            // Map Companies house meber to an account and create it in CRM
            Entity newAccount = CompaniesHouseMemberMapping.MapToAccount(companiesHouseMember);

            newAccount.Id = _crmService.Create(newAccount);
            return(newAccount);
        }
コード例 #4
0
        /// <summary>
        /// Creates a new companies house contact linked to the account given in the parameters
        /// </summary>
        /// <param name="account">Parent account</param>
        /// <param name="companiesHouseMember"></param>
        private void CreateContactMember(Entity account, CompaniesHouseMember companiesHouseMember)
        {
            // Map Companies House member to CRM
            Entity newContact = CompaniesHouseMemberMapping.MapToContact(companiesHouseMember);

            // Link to the parent account
            newContact[Contact.ParentCustomerIdField] = account.ToEntityReference();

            // Create in CRM
            _crmService.Create(newContact);
        }
コード例 #5
0
        /// <summary>
        /// Maps a Companies member to a CRM account, truncating field as required.
        /// </summary>
        public static Entity MapToAccount(CompaniesHouseMember companiesHouseMember, Entity crmAccount = null)
        {
            if (crmAccount == null)
            {
                crmAccount = new Entity(Account.EntityLogicalName);
            }

            crmAccount[Account.NameField]          = companiesHouseMember.name.TruncateIfNeeded(Account.NameFieldLength);
            crmAccount[Account.CompanyNumberField] = companiesHouseMember.identification?.registration_number.TruncateIfNeeded(Account.CompanyNumberFieldLength);
            return(crmAccount);
        }
コード例 #6
0
 /// <summary>
 /// Updates the contact resigned date
 /// </summary>
 /// <param name="updateExistingContact"></param>
 /// <param name="companiesHouseMember"></param>
 private void UpdateAccountContact(Entity updateExistingContact, CompaniesHouseMember companiesHouseMember)
 {
     updateExistingContact["defra_fromcompanieshouse"] = true;
     try
     {
         updateExistingContact["defra_resignedoncompanieshouse"] = DateTime.ParseExact(companiesHouseMember.resigned_on,
                                                                                       "yyyy-MM-dd", CultureInfo.InvariantCulture);
     }
     catch (FormatException)
     {
         _crmTracing.Trace($"Resigned Date {companiesHouseMember.resigned_on} is not in the correct format.");
     }
     _crmService.Update(updateExistingContact);
 }
コード例 #7
0
        // Checks if a companies house member already exists
        private bool IsCorporateMemberAlreadyLinked(Entity existingLink, CompaniesHouseMember companiesHouseMember)
        {
            _crmTracing.Trace($"IsCorporateMemberAlreadyLinked {companiesHouseMember}");

            if (existingLink.Attributes.Contains(Account.ParentChildAccountManyToManyRelationshipAlias + "." + Account.CompanyNumberField) &&
                companiesHouseMember.identification != null)
            {
                AliasedValue value = existingLink.Attributes[Account.ParentChildAccountManyToManyRelationshipAlias + "." + Account.CompanyNumberField] as AliasedValue;
                if (value != null && value.Value.ToString().Trim() == companiesHouseMember.identification.registration_number.Trim())
                {
                    // Matching account with the same company reg number exists
                    return(true);
                }
            }
            return(false);
        }