Example #1
0
        public string sendMsg()
        {
            var     keysToFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.PhoneNumbers };
            NSError error;

            bool check = false;

            using (var store = new CNContactStore())
            {
                var allContainers = store.GetContainers(null, out error);
                foreach (var container in allContainers)
                {
                    try
                    {
                        using (var predicate = CNContact.GetPredicateForContactsInContainer(container.Identifier))
                        {
                            var containerResults = store.GetUnifiedContacts(predicate, keysToFetch, out error);
                            foreach (var item in containerResults)
                            {
                                var num = item.PhoneNumbers;
                                foreach (var cn in num)
                                {
                                    string mob = cn.Value.StringValue;
                                    if (mob == ProfileContentView.phone)
                                    {
                                        check = true;
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                }
            }
            if (check == false)
            {
                var store       = new CNContactStore();
                var contact     = new CNMutableContact();
                var cellPhone   = new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.Mobile, new CNPhoneNumber(ProfileContentView.phone));
                var phoneNumber = new[] { cellPhone };
                contact.PhoneNumbers = phoneNumber;
                contact.GivenName    = ProfileContentView.name;
                var saveRequest = new CNSaveRequest();
                saveRequest.AddContact(contact, store.DefaultContainerIdentifier);
            }
            return("1");
        }
Example #2
0
        private static NSArray <CNLabeledValue <NSString> > ToCNCotactEmails(KeyValuePair <string, string>[] emails)
        {
            if (emails == null)
            {
                return(null);
            }

            var result = new NSMutableArray <CNLabeledValue <NSString> >();

            foreach (var email in emails)
            {
                NSString label       = NSString.StringWithUTF8String(email.Key);
                NSString nativeEmail = NSString.StringWithUTF8String(email.Value);
                result.AddObject(CNLabeledValue <NSString> .LabeledValueWithLabel(label, nativeEmail));
            }
            return(result);
        }
Example #3
0
        private static NSArray <CNLabeledValue <CNPhoneNumber> > ToCNContactPhoneNumbers(KeyValuePair <string, string>[] phoneNumbers)
        {
            if (phoneNumbers == null)
            {
                return(null);
            }

            var result = new NSMutableArray <CNLabeledValue <CNPhoneNumber> >();

            foreach (var phoneNumber in phoneNumbers)
            {
                NSString      label  = NSString.StringWithUTF8String(phoneNumber.Key);
                CNPhoneNumber number = CNPhoneNumber.PhoneNumberWithStringValue(phoneNumber.Value);
                result.AddObject(CNLabeledValue <CNPhoneNumber> .LabeledValueWithLabel(label, number));
            }
            return(result);
        }
Example #4
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);
        }
Example #5
0
        public int WriteContact(Contact contact)
        {
            var contactToAdd = new CNMutableContact();

            contactToAdd.GivenName = contact.FirstName;
            var phoneNumber = new CNLabeledValue <CNPhoneNumber>(label: CNLabelKey.Home, value: new CNPhoneNumber(stringValue: contact.Number));

            contactToAdd.PhoneNumbers = new [] { phoneNumber };
            var store       = new CNContactStore();
            var saveRequest = new CNSaveRequest();

            saveRequest.AddContact(contactToAdd, null);
            var error = new NSError();

            try
            {
                store.ExecuteSaveRequest(saveRequest, out error);
                return(0);
            }
            catch
            {
                return(1);
            }
        }
Example #6
0
        public bool AddContacts(QContact qc)
        {
            Console.WriteLine("export contacts ios");

            var contact = new CNMutableContact();

            // Set standard properties
            contact.GivenName  = PreventNull(qc.FirstName);
            contact.FamilyName = PreventNull(qc.LastName);


            // Add email addresses
            var homeEmail = new CNLabeledValue <NSString>(CNLabelKey.Home, new NSString(PreventNull(qc.Email)));
            var email     = new[] { homeEmail };

            contact.EmailAddresses = email;

            // Add work address
            var workAddress = new CNMutablePostalAddress()
            {
                Street = PreventNull(qc.Addr)
            };

            contact.PostalAddresses = new[] { new CNLabeledValue <CNPostalAddress>(CNLabelKey.Work, workAddress) };

            // ADD BIRTHday
            string[] birth = PreventNull(qc.Birthday.ToString("MM/dd/yyyy")).Split('/');
            if (birth.Length == 3)
            {
                var birthday = new NSDateComponents()
                {
                    Month = int.Parse(birth[0]),
                    Day   = int.Parse(birth[1]),
                    Year  = int.Parse(birth[2])
                };
                contact.Birthday = birthday;
            }

            // add company
            contact.OrganizationName = PreventNull(qc.Company);

            // add others-> fb
            StringBuilder sb = new StringBuilder();

            sb.Append("Facebook:").Append(PreventNull(qc.Facebook)).Append(", Instagram:").Append(PreventNull(qc.Instagram))
            .Append(", Linkedin:").Append(PreventNull(qc.LinkedIn)).Append(", Skype:").Append(PreventNull(qc.Skype))
            .Append(", Twitter:").Append(PreventNull(qc.Twitter));
            contact.Note = sb.ToString();

            // add url
            var url   = new CNLabeledValue <NSString>(CNLabelKey.UrlAddressHomePage, new NSString(PreventNull(qc.URL)));
            var myUrl = new[] { url };

            contact.UrlAddresses = myUrl;

            //mobile
            var cellPhone =
                new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.Mobile, new CNPhoneNumber(PreventNull(qc.Mobile)));
            //var phoneNumber = new[] { cellPhone };
            //contact.PhoneNumbers = phoneNumber;

            //home phone
            var homePhone =
                new CNLabeledValue <CNPhoneNumber>("HOME", new CNPhoneNumber(PreventNull(qc.HomePhone)));

            //work phone
            var workPhone =
                new CNLabeledValue <CNPhoneNumber>("WORK", new CNPhoneNumber(PreventNull(qc.WorkPhone)));

            //homefax
            var homeFax =
                new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.HomeFax, new CNPhoneNumber(PreventNull(qc.HomeFax)));

            //workFax
            var workFax =
                new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.WorkFax, new CNPhoneNumber(PreventNull(qc.WorkFax)));
            var phoneNumber = new[] { cellPhone, homePhone, workPhone, homeFax, workFax };

            contact.PhoneNumbers = phoneNumber;

            // Save new contact
            var store       = new CNContactStore();
            var saveRequest = new CNSaveRequest();

            saveRequest.AddContact(contact, store.DefaultContainerIdentifier);

            NSError error;

            if (store.ExecuteSaveRequest(saveRequest, out error))
            {
                Console.WriteLine("New contact saved");
                return(true);
            }
            else
            {
                Console.WriteLine("Save error: {0}", error);
                return(false);
            }
        }
Example #7
0
            private void SelectedNumber(CNLabeledValue <CNPhoneNumber> number)
            {
                string stringNumber = number.Value.StringValue.Replace("(", string.Empty).Replace(")", string.Empty).Replace(" ", string.Empty);

                SelectContacts(new string[] { stringNumber });
            }
        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);
            }
        }
Example #9
0
        public static async void CreateContact(object sender, EventArgs e)
        {
            var     store = new CNContactStore();
            NSError error;

            if (CNContactStore.GetAuthorizationStatus(CNEntityType.Contacts) == CNAuthorizationStatus.Authorized)
            {
                CNContact currentUser = null;
                var       predicate   = CNContact.GetPredicateForContacts("Appleseed");
                var       fetchKeys   = new NSString[] { CNContactKey.GivenName, CNContactKey.FamilyName };
                NSError   cError;
                var       contacts = store.GetUnifiedContacts(predicate, fetchKeys, out cError);
                for (int i = 0; i < contacts.Count(); i++)
                {
                    if (contacts[i].GivenName == App.contactuser.FirstName && contacts[i].FamilyName == App.contactuser.LastName)
                    {
                        currentUser = contacts[i];
                    }
                }


                // Found?
                if (currentUser != null)
                {
                    bool k = await App.Current.MainPage.DisplayAlert("Exists", "Requested contact already exists...", "Edit", "OK");

                    if (k)
                    {
                        personViewController = CNContactViewController.FromContact(currentUser);
                        var done = new UIBarButtonItem(UIBarButtonSystemItem.Done);
                        done.Clicked += (s, ea) =>
                        {
                            personViewController.DismissViewController(false, null);
                        };
                        personViewController.NavigationItem.LeftBarButtonItem = done;

                        navController.PushViewController(personViewController, true);
                        UIApplication.SharedApplication.KeyWindow.RootViewController.ShowViewController(navController, null);
                    }
                }
                else
                {
                    var contact = new CNMutableContact();

                    contact.GivenName  = App.contactuser.FirstName;
                    contact.FamilyName = App.contactuser.LastName;

                    // Add email addresses
                    var email = new CNLabeledValue <NSString>(CNLabelKey.Home, new NSString(App.contactuser.email));
                    contact.EmailAddresses = new CNLabeledValue <NSString>[] { email };

                    // Add phone numbers
                    var cellPhone = new CNLabeledValue <CNPhoneNumber>(CNLabelPhoneNumberKey.iPhone, new CNPhoneNumber(App.contactuser.phoneNumber));
                    contact.PhoneNumbers = new CNLabeledValue <CNPhoneNumber>[] { cellPhone };
                    // Save new contact
                    var _store      = new CNContactStore();
                    var saveRequest = new CNSaveRequest();
                    saveRequest.AddContact(contact, _store.DefaultContainerIdentifier);

                    NSError cerror;
                    if (store.ExecuteSaveRequest(saveRequest, out cerror))
                    {
                        personViewController = CNContactViewController.FromContact(contact);
                        var done = new UIBarButtonItem(UIBarButtonSystemItem.Done);
                        done.Clicked += (s, ea) =>
                        {
                            personViewController.DismissViewController(false, null);
                        };
                        personViewController.NavigationItem.LeftBarButtonItem = done;
                        navController.PushViewController(personViewController, true);
                        UIApplication.SharedApplication.KeyWindow.RootViewController.ShowViewController(navController, null);
                    }
                    else
                    {
                        Console.WriteLine("Save error: {0}", cerror);
                    }
                }
            }
            else
            {
                store.RequestAccess(CNEntityType.Contacts, RequestAccepted);
            }
        }