// 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"); }