예제 #1
0
        public static string GetNameMatchingLocalizedLabel(this CNContactProperty property)
        {
            var label = property?.Label;

            if (!string.IsNullOrEmpty(label))
            {
                var nativelabel = new NSString(label);
                switch (property.Label)
                {
                case "emailAddresses":
                    return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel));

                case "phoneNumbers":
                    return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel));

                case "postalAddresses":
                    return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel));
                }
            }
            return(null);
        }
        void HandleCNContactStoreListContactsHandler(CNContact contact, ref bool stop)
        {
            if (stop == false)
            {
                try
                {
                    ContactItem item = new ContactItem();
                    item.ContactID = contact.Identifier ?? "";
                    //Birthday
                    if (contact.Birthday != null)
                    {
                        var month = contact.Birthday.Month.ToString();
                        var day   = contact.Birthday.Day.ToString();
                        var year  = contact.Birthday.Year.ToString();
                        item.Birthday = day + "/" + month + "/" + year;
                    }
                    if (contact.GivenName.Length > 0 || contact.FamilyName.Length > 0)
                    {
                        //Displayname
                        item.DisplayName = contact.GivenName + " " + contact.FamilyName;
                    }
                    else
                    {
                        item.DisplayName = "";
                    }

                    //Name
                    Name name = new Name();
                    name.FirstName  = contact.GivenName;
                    name.LastName   = contact.FamilyName;
                    name.Prefix     = contact.NamePrefix;
                    name.Suffix     = contact.NameSuffix;
                    name.MiddleName = contact.MiddleName;
                    item.GetNames   = name;
                    Console.WriteLine(contact.FamilyName ?? "");
                    //Phone
                    List <Phone> phoneslist = new List <Phone>();
                    foreach (var number in contact.PhoneNumbers)
                    {
                        string phonenumber     = number.Value.ValueForKey(new NSString("digits")).ToString() ?? "";
                        string phonenumberType = CNLabeledValue <NSString> .LocalizeLabel(new NSString(number.Label ?? "")) ?? "";

                        Phone phone = new Phone
                        {
                            Type        = phonenumberType,
                            PhoneNumber = phonenumber
                        };
                        phoneslist.Add(phone);
                        Console.WriteLine(phonenumber);
                    }
                    item.GetPhones = phoneslist;
                    //Email
                    List <Email> emailslist = new List <Email>();
                    foreach (var obj in contact.EmailAddresses)
                    {
                        var   type   = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? "";
                        var   email  = Regex.Replace(obj.Value, @"[^0-9a-zA-Z@]+", "") ?? "";
                        Email email1 = new Email();
                        email1.Emailid = email;
                        email1.Type    = type;
                        emailslist.Add(email1);
                    }
                    item.GetEmails = emailslist;

                    //Address
                    List <Address> addresseslist = new List <Address>();
                    foreach (var obj in contact.PostalAddresses)
                    {
                        Address address    = new Address();
                        var     type       = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? "";
                        var     street     = obj.Value.Street;
                        var     city       = obj.Value.City;
                        var     state      = obj.Value.State;
                        var     postalcode = obj.Value.PostalCode;
                        var     country    = obj.Value.Country;
                        address.Type        = type;
                        address.FullAddress = street + "," + city + "," + "," + state + "," + postalcode + "," + country;
                        addresseslist.Add(address);
                    }
                    item.GetAddress = addresseslist;
                    //Company
                    Company company = new Company
                    {
                        CompanyName = contact.OrganizationName ?? "",
                        Role        = contact.JobTitle
                    };
                    item.GetCompany = company;
                    //Url
                    List <Url> url = new List <Url>();
                    foreach (var obj in contact.UrlAddresses)
                    {
                        Url url1 = new Url();
                        url1.URL = Regex.Replace(obj.Value, @"[^0-9a-zA-Z@]+", "") ?? "";
                        url.Add(url1);
                    }
                    item.GetUrls = url;
                    //Date
                    List <DateList> dateLists = new List <DateList>();
                    foreach (var obj in contact.Dates)
                    {
                        var      type       = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? "";
                        var      datestring = obj.Value;
                        DateList list       = new DateList();
                        var      month      = contact.Birthday.Month.ToString() ?? "";
                        var      day        = contact.Birthday.Day.ToString() ?? "";
                        var      year       = contact.Birthday.Year.ToString() ?? "";
                        list.Date = day + "/" + month + "/" + year;
                        list.type = type;
                        dateLists.Add(list);
                    }
                    item.GetDateList = dateLists;
                    totalContactListWithoutGrouping.Add(item);


                    try
                    {
                        if (item.DisplayName != null && !string.IsNullOrEmpty(item.DisplayName))
                        {
                            var firstLetter = item.DisplayName.Substring(0, 1).ToUpper();
                            var indexs      = Array.IndexOf(alphate, firstLetter);
                            totalContactList[indexs].Add(item);
                        }
                        else
                        {
                            totalContactList[26].Add(item);
                        }
                        //var vcvc = from s in totalContactList where s.Count > 0 select s.ToList();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            else
            {
                Console.WriteLine(stop);
            }
        }