コード例 #1
0
        public void FunctionCallToPropertyWithTransformation()
        {
            // register the property mapping of a source and a destination
            // type with trasformations (in this case we do add a string to
            // the name to generate a calendar title of "Birthday: Riddle, Tom")
            var mapper = new Mapper();

            mapper.Register <StdContact, StdCalendarItem>(contact => contact.Id, (calendar, entity) => calendar.Id = (Guid)entity);
            mapper.Register <StdContact, StdCalendarItem>(contact => contact.GetFullName(), (calendar, entity) => calendar.Title = "Birthday: " + entity);

            // setup a source and a destination object
            var source = new StdContact {
                Name = new PersonName("Tom Riddle")
            };
            var target = new StdCalendarItem();

            // perform the mapping
            mapper.Map(source, target);

            // test it
            Assert.AreEqual(source.Id, target.Id);
            Assert.AreEqual("Birthday: " + source.GetFullName(), target.Title);
        }
コード例 #2
0
        /// <summary>
        /// converts a StdContact into a vCard (binary content)
        /// </summary>
        /// <param name="contact">
        /// The contact to be converted.
        /// </param>
        /// <returns>
        /// a binary vCard representation
        /// </returns>
        public static byte[] StdContactToVCard(StdContact contact)
        {
            Bouncer
            .ForCheckData(() => contact)
            .Assert(x => x.Name != null);

            var vCard = new StringBuilder();

            vCard.AppendLine("BEGIN:VCARD");
            vCard.AppendLine("VERSION:2.1");
            AddAttributeToStringBuilder(
                vCard,
                "N",
                contact.Name.LastName,
                contact.Name.FirstName,
                contact.Name.MiddleName,
                contact.Name.AcademicTitle);
            AddAttributeToStringBuilder(vCard, "FN", contact.GetFullName());
            AddAttributeToStringBuilder(vCard, "SORT-STRING", contact.Name.LastName);
            AddAttributeToStringBuilder(vCard, "EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=PREF", contact.BusinessEmailPrimary);
            AddAttributeToStringBuilder(vCard, "EMAIL;TYPE=INTERNET;TYPE=HOME", contact.PersonalEmailPrimary);
            AddAttributeToStringBuilder(vCard, "URL;TYPE=HOME", contact.PersonalHomepage);

            if (contact.DateOfBirth.Year > 1900 && contact.DateOfBirth.Year < 2200)
            {
                AddAttributeToStringBuilder(
                    vCard, "BDAY", contact.DateOfBirth.ToString("yyyyMMdd", CultureInfo.CurrentCulture));
            }

            if (contact.BusinessAddressPrimary != null)
            {
                AddAttributeToStringBuilder(
                    vCard,
                    "ADR;TYPE=WORK",
                    null,
                    null,
                    contact.BusinessAddressPrimary.StreetName,
                    contact.BusinessAddressPrimary.CityName,
                    contact.BusinessAddressPrimary.StateName,
                    contact.BusinessAddressPrimary.PostalCode,
                    contact.BusinessAddressPrimary.CountryName);
                AddAttributeToStringBuilder(vCard, "TEL;TYPE=WORK", contact.BusinessAddressPrimary.Phone);
            }

            if (contact.PersonalAddressPrimary != null)
            {
                AddAttributeToStringBuilder(
                    vCard,
                    "ADR;TYPE=HOME",
                    null,
                    null,
                    contact.PersonalAddressPrimary.StreetName,
                    contact.PersonalAddressPrimary.CityName,
                    contact.PersonalAddressPrimary.StateName,
                    contact.PersonalAddressPrimary.PostalCode,
                    contact.PersonalAddressPrimary.CountryName);
                AddAttributeToStringBuilder(vCard, "TEL;TYPE=HOME", contact.PersonalAddressPrimary.Phone);
            }

            AddAttributeToStringBuilder(vCard, "TEL;TYPE=CELL,HOME", contact.PersonalPhoneMobile);
            AddAttributeToStringBuilder(vCard, "TEL;TYPE=CELL,WORK", contact.BusinessPhoneMobile);

            AddAttributeToStringBuilder(vCard, "ORG", contact.BusinessCompanyName);
            AddAttributeToStringBuilder(vCard, "URL;TYPE=WORK", contact.BusinessHomepage);
            AddAttributeToStringBuilder(vCard, "URL;TYPE=HOME", contact.PersonalHomepage);
            AddAttributeToStringBuilder(vCard, "TITLE", contact.BusinessPosition);
            AddAttributeToStringBuilder(vCard, "NOTE", contact.AdditionalTextData);

            AddAttributeToStringBuilder(vCard, "X-MATZEN-STDUID", contact.Id);
            AddAttributeToStringBuilder(vCard, "X-MATZEN-GENERATOR", "generated by Sem.Sync - www.svenerikmatzen.info");
            AddAttributeToStringBuilder(vCard, "PRODID", "-//MATZEN//www.svenerikmatzen.info//Sem.Sync//Version 1.0");
            AddAttributeToStringBuilder(vCard, "PHOTO;TYPE=JPEG", contact.PictureData);
            AddAttributeToStringBuilder(vCard, "UID", contact.Id.ToString("N"));

            vCard.AppendLine("END:VCARD");

            return(Encoding.UTF8.GetBytes(vCard.ToString()));
        }