예제 #1
0
        public async Task <ContactFields> GetContactAsync(SalesForceResponse salesForceResponse, string contactNMLSID)
        {
            LoggerService.Debug("Entered GetContactAsync()", "INFO");
            string        query     = "Select conta.ID, conta.Owner.ID,conta.Account.ID From Contact conta where conta.NMLS__c = '" + contactNMLSID + "'";
            string        queryURL  = salesForceResponse.instance_url + "/services/data/v24.0/query/?q=" + query;
            ContactFields conFields = new ContactFields();

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Authorization", "OAuth " + salesForceResponse.access_token);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                httpResponseMessage = await httpClient.GetAsync(queryURL);
            }

            if (httpResponseMessage != null && httpResponseMessage.IsSuccessStatusCode)
            {
                var ContactContent = await httpResponseMessage.Content.ReadAsStringAsync();

                con.ContactDetails conResult = (con.ContactDetails)javaScriptSerializer.Deserialize(ContactContent, typeof(con.ContactDetails));

                if (conResult != null && conResult.records.Count > 0)
                {
                    conFields.ContactId = conResult.records[0].Id;
                    conFields.OwnerId   = conResult.records[0].Owner.Id;
                    conFields.AccountId = conResult.records[0].account.Id;
                }
            }
            LoggerService.Debug("Leaving GetContactAsync()", "INFO");
            return(conFields);
        }
예제 #2
0
        public List <Contact> FindByLookup(string lookup, ContactFields selectedContactField)
        {
            //Switch based upon which enum is passed in that is being searched by.
            List <Contact> result = new List <Contact>();

            switch (selectedContactField)
            {
            case ContactFields.NAME:
                result = _contactStore.Where(c => c.FirstName.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase) || c.LastName.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase)).ToList();
                break;

            case ContactFields.PHONENUMBER:
                result = SearchByPhoneNumber(lookup);
                break;

            case ContactFields.CITY:
                result = _contactStore.Where(c => c.Address.City.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase)).ToList();
                break;

            case ContactFields.JOB:
                result = _contactStore.Where(c => c.JobTitle.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase)).ToList();
                break;

            case ContactFields.ORGANIZATION:
                result = _contactStore.Where(c => c.Organization.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase)).ToList();
                break;

            case ContactFields.EMAIL:
                result = _contactStore.Where(c => (c.PrimaryEmail != null && c.PrimaryEmail.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase)) || (c.SecondaryEmail != null && c.SecondaryEmail.StartsWith(lookup, StringComparison.InvariantCultureIgnoreCase))).ToList();
                break;
            }

            return(result);
        }
예제 #3
0
        public void Search(string criteria, int index)
        {
            if (!string.IsNullOrEmpty(criteria) && criteria.Length > 0 && index != 0)
            {
                //Search looks through the repo by lookup on the criteria.

                ContactFields selectedContactField = ContactFields.NONE;

                switch (index)
                {
                case 1:
                    selectedContactField = ContactFields.NAME;
                    break;

                case 2:
                    selectedContactField = ContactFields.ORGANIZATION;
                    break;

                case 3:
                    selectedContactField = ContactFields.JOB;
                    break;

                case 4:
                    selectedContactField = ContactFields.CITY;
                    break;

                case 5:
                    selectedContactField = ContactFields.PHONENUMBER;
                    break;

                case 6:
                    selectedContactField = ContactFields.EMAIL;
                    break;
                }

                CurrentContacts = new ObservableCollection <Contact>(_contactRepository.FindByLookup(criteria, selectedContactField));
                StatusText      = string.Format("{0} contacts found.", CurrentContacts.Count);
            }
            else
            {
                CurrentContacts = new ObservableCollection <Contact>(
                    _contactRepository.FindAll()
                    );
                StatusText = "Displaying all contacts.";
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="Contact" /> class.
 /// </summary>
 public Contact() : base(CLASS_NAME)
 {
     mFields = new ContactFields(this);
 }
예제 #5
0
        private string ReplaceAutomationMergeFields(string HtmlContent, Contact contact, IEnumerable <FieldValueOption> customFieldValueOptions, Company Company)
        {
            try
            {
                var doc = new HtmlDocument();
                doc.LoadHtml(HtmlContent);
                var     allspantags = doc.DocumentNode.Descendants("span");
                var     contacttype = contact.GetType().Name;
                Person  person      = default(Person);
                Company company     = default(Company);
                if (contacttype == "Person")
                {
                    person = (Person)contact;
                }
                else
                {
                    company = (Company)contact;
                }

                var defaultaddress = contact.Addresses.Where(i => i.IsDefault).FirstOrDefault();
                foreach (var node in allspantags)
                {
                    var nodetype = node.Attributes.Where(x => x.Name == "fieldtype").Select(x => x.Value).FirstOrDefault();
                    if (nodetype == "basicfield")
                    {
                        ContactFields contactfield = default(ContactFields);
                        Enum.TryParse(node.Id, out contactfield);

                        #region ContactFields
                        if (contactfield == ContactFields.FirstNameField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|FIRSTNAME|*", person == null ? "" : person.FirstName);
                        }
                        else if (contactfield == ContactFields.LastNameField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|LASTNAME|*", person == null ? "" : person.LastName);
                        }
                        else if (contactfield == ContactFields.CompanyNameField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|COMPANY|*", Company == null ? "" : Company.CompanyName == null ? "" : Company.CompanyName);
                        }
                        else if (contactfield == ContactFields.TitleField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|TITLE|*", person == null ? "" : person.Title);
                        }
                        else if (contactfield == ContactFields.PrimaryEmail)
                        {
                            var primaryemail = contact.Emails.Where(i => i.IsPrimary).Select(x => x.EmailId).FirstOrDefault();
                            node.InnerHtml = node.InnerHtml.Replace("*|EMAILID|*", primaryemail == null ? "" : primaryemail);
                        }
                        #endregion

                        #region Socail

                        else if (contactfield == ContactFields.FacebookUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|FBURL|*", contact.FacebookUrl != null ? contact.FacebookUrl.URL : "");
                        }
                        else if (contactfield == ContactFields.LinkedInUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|LINKEDURL|*", contact.LinkedInUrl != null ? contact.LinkedInUrl.URL : "");
                        }
                        else if (contactfield == ContactFields.GooglePlusUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|GPLUSURL|*", contact.GooglePlusUrl != null ? contact.GooglePlusUrl.URL : "");
                        }
                        else if (contactfield == ContactFields.TwitterUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|TWITERURL|*", contact.TwitterUrl != null ? contact.TwitterUrl.URL : "");
                        }
                        else if (contactfield == ContactFields.WebsiteUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|WEBSITEURL|*", contact.WebsiteUrl != null ? contact.WebsiteUrl.URL : "");
                        }
                        else if (contactfield == ContactFields.BlogUrl)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|BLOGURL|*", contact.BlogUrl != null ? contact.BlogUrl.URL : "");
                        }

                        #endregion

                        #region Address Mapping


                        else if (contactfield == ContactFields.AddressLine1Field)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|ADDLINE1|*", defaultaddress != null ? defaultaddress.AddressLine1 : "");
                        }
                        else if (contactfield == ContactFields.AddressLine2Field)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|ADDLINE2|*", defaultaddress != null ? defaultaddress.AddressLine2 : "");
                        }
                        else if (contactfield == ContactFields.CityField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|CITY|*", defaultaddress != null ? defaultaddress.City : "");
                        }
                        else if (contactfield == ContactFields.StateField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|STATE|*", defaultaddress != null ? defaultaddress.State.Name : "");
                        }
                        else if (contactfield == ContactFields.ZipCodeField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|ZIPCODE|*", defaultaddress != null ? defaultaddress.ZipCode : "");
                        }
                        else if (contactfield == ContactFields.CountryField)
                        {
                            node.InnerHtml = node.InnerHtml.Replace("*|COUNTRY|*", defaultaddress != null ? defaultaddress.Country.Name : "");
                        }

                        #endregion
                    }
                    else if (nodetype == "customfield")
                    {
                        var contactcustomfiled = contact.CustomFields.Where(i => i.CustomFieldId.ToString() == node.Id && i.ContactId == contact.Id)
                                                 .FirstOrDefault();
                        string replacablecode = string.Empty;
                        if (contactcustomfiled != null && !string.IsNullOrEmpty(contactcustomfiled.Value) &&
                            customFieldValueOptions.Where(i => i.FieldId.ToString() == node.Id).Any())
                        {
                            IEnumerable <int> SelectedValues = StringToIntList(contactcustomfiled.Value);
                            var customfieldoptions           = customFieldValueOptions.Where(i => i.FieldId.ToString() == node.Id && SelectedValues.Contains(i.Id)).Select(x => x.Value);
                            replacablecode = string.Join(",", customfieldoptions);
                        }
                        else if (contactcustomfiled != null && !string.IsNullOrEmpty(contactcustomfiled.Value))
                        {
                            replacablecode = contactcustomfiled.Value;
                        }
                        node.InnerHtml = node.InnerHtml.Replace("*|" + node.Id + "CF|*", replacablecode);
                    }
                    else if (nodetype == "dropdownfield")
                    {
                        var    phonefield     = contact.Phones.Where(i => i.PhoneType.ToString() == node.Id && i.ContactID == contact.Id).FirstOrDefault();
                        string replacablecode = string.Empty;
                        if (phonefield != null && !string.IsNullOrEmpty(phonefield.Number))
                        {
                            replacablecode = phonefield.Number;
                        }
                        node.InnerHtml = node.InnerHtml.Replace("*|" + node.Id + "DF|*", replacablecode);
                    }
                }
                string outerhtml = doc.DocumentNode.OuterHtml;
                return(outerhtml);
            }
            catch (Exception ex)
            {
                Logger.Current.Informational(ex.ToString());
                return(HtmlContent);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CMS.DocumentEngine.Types.Contact" /> class.
 /// </summary>
 public Contact()
     : base(CLASS_NAME)
 {
     mFields = new ContactFields(this);
 }