/// <summary>
        /// Convert a Outlook.com exported contact to VCard
        /// </summary>
        /// <param name="csvContact">The outlook contact</param>
        /// <param name="correctDates">Add +1 day to birthday an anniversary dates</param>
        /// <returns></returns>
        public VCard ConvertOutlookComCsvContact(OutlookComCsvContact csvContact, bool correctDates)
        {
            VCard vcard = new VCard
            {
                Version = MixERP.Net.VCards.Types.VCardVersion.V4,

                FirstName  = csvContact.FirstName,
                MiddleName = csvContact.MiddleName,
                LastName   = csvContact.LastName,
                Title      = csvContact.Title,
                Suffix     = csvContact.Suffix,
                NickName   = csvContact.Nickname,

                Organization       = csvContact.Company,
                OrganizationalUnit = csvContact.Department,

                Emails     = getEmails(csvContact),
                Telephones = ConvertTelephones(csvContact),
                Addresses  = ConvertAddresses(csvContact)
            };

            if (csvContact.Birthday != "")
            {
                vcard.BirthDay = ConvertDate(csvContact.Birthday, correctDates);
            }

            if (csvContact.Anniversary != "")
            {
                vcard.Anniversary = ConvertDate(csvContact.Anniversary, correctDates);
            }

            return(vcard);
        }
        private IEnumerable <Address> ConvertAddresses(OutlookComCsvContact csvContact)
        {
            List <Address> addresses = new List <Address>();

            addresses.Add(ToAddress(csvContact.HomeCountryRegion, csvContact.HomePostalCode, csvContact.HomeCity, csvContact.HomeStreet));
            addresses.Add(ToAddress(csvContact.BusinessCountryRegion, csvContact.BusinessPostalCode, csvContact.BusinessCity, csvContact.BusinessStreet));
            addresses.Add(ToAddress(csvContact.OtherCountryRegion, csvContact.OtherPostalCode, csvContact.OtherCity, csvContact.OtherStreet));

            return(addresses);
        }
        private IEnumerable <Email> getEmails(OutlookComCsvContact csvContact)
        {
            List <Email> emails = new List <Email>();

            foreach (string e in csvContact.GetEmails())
            {
                Email email = new Email();
                email.EmailAddress = e;
                emails.Add(email);
            }

            return(emails);
        }
        private IEnumerable <Telephone> ConvertTelephones(OutlookComCsvContact csvContact)
        {
            List <Telephone> telephones = new List <Telephone>();

            foreach (string p in csvContact.GetHomePhones())
            {
                Telephone telephone = new Telephone();
                telephone.Number = p;
                telephone.Type   = MixERP.Net.VCards.Types.TelephoneType.Home;
                telephones.Add(telephone);
            }

            foreach (string p in csvContact.GetBusinessPhones())
            {
                Telephone telephone = new Telephone();
                telephone.Number = p;
                telephone.Type   = MixERP.Net.VCards.Types.TelephoneType.Work;
                telephones.Add(telephone);
            }

            if (csvContact.MobilePhone != null && csvContact.MobilePhone != "")
            {
                Telephone mobile = new Telephone();
                mobile.Number = csvContact.MobilePhone;
                mobile.Type   = MixERP.Net.VCards.Types.TelephoneType.Cell;
                telephones.Add(mobile);
            }

            if (csvContact.CarPhone != null && csvContact.CarPhone != "")
            {
                Telephone car = new Telephone();
                car.Number = csvContact.CarPhone;
                car.Type   = MixERP.Net.VCards.Types.TelephoneType.Car;
                telephones.Add(car);
            }

            if (csvContact.OtherPhone != null && csvContact.OtherPhone != "")
            {
                Telephone other = new Telephone();
                other.Number = csvContact.OtherPhone;
                // TODO: Find a better type for "other"
                other.Type = MixERP.Net.VCards.Types.TelephoneType.Personal;
                telephones.Add(other);
            }

            if (csvContact.PrimaryPhone != null && csvContact.PrimaryPhone != "")
            {
                Telephone primary = new Telephone();
                primary.Number = csvContact.OtherPhone;
                primary.Type   = MixERP.Net.VCards.Types.TelephoneType.Preferred;
                telephones.Add(primary);
            }

            if (csvContact.Pager != null && csvContact.Pager != "")
            {
                Telephone pager = new Telephone();
                pager.Number = csvContact.OtherPhone;
                pager.Type   = MixERP.Net.VCards.Types.TelephoneType.Pager;
                telephones.Add(pager);
            }


            if (csvContact.HomeFax != null && csvContact.HomeFax != "")
            {
                Telephone fax = new Telephone();
                fax.Number = csvContact.HomeFax;
                fax.Type   = MixERP.Net.VCards.Types.TelephoneType.Fax;
                telephones.Add(fax);
            }
            if (csvContact.BusinessFax != null && csvContact.BusinessFax != "")
            {
                Telephone fax = new Telephone();
                fax.Number = csvContact.BusinessFax;
                fax.Type   = MixERP.Net.VCards.Types.TelephoneType.Fax;
                telephones.Add(fax);
            }
            if (csvContact.OtherFax != null && csvContact.OtherFax != "")
            {
                Telephone fax = new Telephone();
                fax.Number = csvContact.OtherFax;
                fax.Type   = MixERP.Net.VCards.Types.TelephoneType.Fax;
                telephones.Add(fax);
            }

            return(telephones);
        }