// Post api/GetUserInfo
        public FullUserInfoDTO Post(AccountId accountid)
        {
            MobileServiceContext context = new MobileServiceContext();
            FullUserInfoDTO userinfo = new FullUserInfoDTO();
            userinfo.AccountId = accountid.accountid;

            Account a = context.Accounts.FirstOrDefault(x => x.Id == accountid.accountid);
            if (a.FacebookId != null)
            {
                userinfo.FacebookProfileLink = "https://facebook.com/" + a.FacebookId;
                userinfo.FacebookConnected = true;
            }
            else
            {
                userinfo.FacebookConnected = false;
            }
            if (a.LinkedInId != null)
            {
                userinfo.LinkedInProfileLink = "http://www.linkedin.com/profile/view?id=" + a.LinkedInId;
                userinfo.LinkedInConnected = true;
            }
            else
            {
                userinfo.LinkedInConnected = false;
            }

            if (!context.UserInfos.Any(uinfo => uinfo.UserId == accountid.accountid))
            {
                context.UserInfos.Add(new UserInfo() { Id = Guid.NewGuid().ToString(), Bio = "About me", UserId = accountid.accountid });
                context.SaveChanges();

            }
            UserInfo ui = context.UserInfos.Include("Account").First(uinfo => uinfo.UserId == accountid.accountid);
            userinfo.UserInfoId = ui.Id;
            userinfo.Age = ui.Age;
            userinfo.Status = ui.Bio;
            userinfo.About = ui.About;
            userinfo.Gender = ui.Gender;
            userinfo.Username = ui.Account.Username;
            userinfo.FirstName = ui.FirstName;
            userinfo.LastName = ui.LastName;
            userinfo.ProfilePicUrl = ui.ProfilePicUrl;
            userinfo.BusinessInterested = a.BusinessInterest;
            userinfo.PrivateInterested = a.PrivateInterest;

            UserContact userContact = context.UserContacts.FirstOrDefault(contact => contact.UserId == accountid.accountid);
            if(userContact != null)
            {
                userinfo.PhoneNr = userContact.PhoneNr;
                userinfo.Email = userContact.Email;
            }
            return userinfo;
        }
 // POST api/ConnectedUsers
 public HttpResponseMessage Post(AccountId accountid)
 {
     MobileServiceContext context = new MobileServiceContext();
     if(accountid == null)
         return this.Request.CreateResponse(HttpStatusCode.NotFound);
     string requesterId = accountid.accountid;
     List<BasicUserInfoDTO> response = new List<BasicUserInfoDTO>();
     foreach (ConnectRequest connRequests in context.ConnectRequests.Where(x => x.Accepted == true && (x.RequestUserId == requesterId || x.ConnectUserId == requesterId)))
     {
         response.Add(UserInfoService.GetBasicUserInfo((connRequests.ConnectUserId != requesterId) ? connRequests.ConnectUserId: connRequests.RequestUserId));
     }
     return this.Request.CreateResponse(HttpStatusCode.OK, response);
 }
        // Post api/FBGetProfile
        public async Task<HttpResponseMessage> Post(AccountId accountid)
        {
            HttpStatusCode httpStatus = HttpStatusCode.OK;
            MobileServiceContext context = new MobileServiceContext();

            ServiceUser user = this.User as ServiceUser;
            if (user == null)
            {
                throw new InvalidOperationException("This can only be called by authenticated clients");
            }
            FacebookCredentials creds = (await user.GetIdentitiesAsync()).OfType<FacebookCredentials>().FirstOrDefault();
            if (creds != null)
            {
                var fbDataProvider =  new FBProfileDataProvider(creds.AccessToken);
                Network facebook = context.Networks.First(n => n.Id == (Int16)NetworkType.FACEBOOK);
                ProfileData fbProfileData = await fbDataProvider.GetUserInfo();
                UserInfo userInfo;
                if (context.UserInfos.Any(ui => ui.UserId == accountid.accountid))
                {
                    userInfo = context.UserInfos.Include("UserInfoDetail").First(ui => ui.UserId == accountid.accountid);
                    userInfo.Bio = fbProfileData.Bio;
                    userInfo.About = fbProfileData.About;
                    userInfo.ProfilePicUrl = fbProfileData.ProfilePicUrl;
                    // TODO: Update other propoerties
                    UserInfoDetail detail = userInfo.UserInfoDetails.First(x => x.NetworkId == facebook.Id);
                    if (detail == null)
                    {
                        detail = new UserInfoDetail() { JsonInfo = fbProfileData.AsJsonString(), NetworkId = facebook.Id };
                        userInfo.UserInfoDetails.Add(detail);
                    }
                    else
                        detail.JsonInfo = fbProfileData.AsJsonString();
                }
                else
                {
                    userInfo = new UserInfo() { UserId = accountid.accountid };
                    userInfo.SetProfileInfo(fbProfileData);
                    userInfo.Id = Guid.NewGuid().ToString();
                    userInfo.UserInfoDetails.Add(new UserInfoDetail() { JsonInfo = fbProfileData.AsJsonString() });
                    context.UserInfos.Add(userInfo);
                }
                context.SaveChanges();
                httpStatus = HttpStatusCode.Created;
                return this.Request.CreateResponse(httpStatus, userInfo);
            }

            throw new Exception("Facebook identity not found");
        }