public EndpointResult Set(ProfileResult data) { if (Request.IsAnonymousUser) throw new InsufficientPermissionsException("User is not logged in"); var userId = Request.User.Guid; var user = Repository.ObjectGet(userId, true); if (user == null) throw new NotImplementedException("Profile object not found"); var metadata = user.Metadatas.FirstOrDefault(item => item.MetadataSchemaGuid == Settings.UserProfileMetadataSchemaGuid); var xml = SerializerFactory.XMLSerializer.Serialize(data); if (metadata == null) Repository.MetadataSet(userId, Guid.NewGuid(), Settings.UserProfileMetadataSchemaGuid, "da", 0, xml, userId); else Repository.MetadataSet(userId, metadata.Guid, Settings.UserProfileMetadataSchemaGuid, "da", 0, xml, userId); return EndpointResult.Success(); }
private ProfileResult Map(Object user) { if (user == null || user.Metadatas == null) return ProfileResult.CreateNullObject(); var metadata = user.Metadatas.FirstOrDefault(item => item.MetadataSchemaGuid == Settings.UserProfileMetadataSchemaGuid); if (metadata == null || metadata.MetadataXml == null) return ProfileResult.CreateNullObject(); var root = metadata.MetadataXml.Root; if (root == null) return ProfileResult.CreateNullObject(); var result = new ProfileResult(); result.Name = root.Element("Name").Value; result.Title = root.Element("Title").Value; result.About = root.Element("About").Value; result.Organization = root.Element("Organization").Value; foreach (var email in root.Element("Emails").Elements()) result.Emails.Add(email.Value); foreach (var phonenumber in root.Element("PhoneNumbers") != null ? root.Element("PhoneNumbers").Elements() : root.Element("Phonenumbers").Elements()) result.PhoneNumbers.Add(phonenumber.Value); foreach (var website in root.Element("Websites").Elements()) result.Websites.Add(website.Value); result.Skype = root.Element("Skype").Value; result.LinkedIn = root.Element("LinkedIn").Value; result.Twitter = root.Element("Twitter").Value; result.Address = root.Element("Address").Value; result.City = root.Element("City").Value; result.ZipCode = root.Element("ZipCode") == null ? root.Element("Zipcode").Value : root.Element("ZipCode").Value; result.Country = root.Element("Country").Value; return result; }