/// <summary> /// This method is called when user edits the user profile containing NTRP/Preference & other tennis user data /// </summary> /// <param name="ntrp"></param> /// <param name="preference"></param> /// <returns></returns> public ActionResult PostTennisUserDetails(string ntrp, string preference, string courtData, string style, bool emailOffers) { var fbContext = FacebookWebContext.Current; TennisUser tennisUser = this.DB.TennisUser.Where(u => u.FacebookId == fbContext.UserId).FirstOrDefault(); User user = this.DB.User.Where(u => u.FacebookId == fbContext.UserId).FirstOrDefault(); Court court = ProcessCourtData(courtData); user.EmailOffers = emailOffers; tennisUser.Rating = Convert.ToDouble(ntrp); tennisUser.SinglesDoubles = preference; tennisUser.Court = court; tennisUser.PlayStyle = style; this.DB.SubmitChanges(); // Given the user details has changed, update all modules that are potentially impacted besides the UserDetails module itself return(Json( new { UserDetails = RenderPartialViewToString("UserDetails", ModelUtils.GetModel <ModuleModel>(fbContext.UserId, this.DB)), QuickMatch = RenderPartialViewToString("QuickMatch", ModelUtils.GetModel <ModuleModel>(fbContext.UserId, this.DB)), Players = RenderPartialViewToString("Players", ModelUtils.GetModel <PlayersModel>(FacebookWebContext.Current.UserId, this.DB)), PotentialOffers = RenderPartialViewToString("PotentialOffers", ModelUtils.GetModel <PotentialOffersModel>(FacebookWebContext.Current.UserId, this.DB)) } )); }
public ActionResult Index() { var app = new FacebookWebClient(); var fbContext = FacebookWebContext.Current; ViewData["FirstRun"] = false; TennisUserModel existingUser = ModelUtils.GetTennisUsers(this.DB).Where(tu => tu.FacebookId == fbContext.UserId).FirstOrDefault(); if (null == existingUser && null != fbContext.SignedRequest) { if (!fbContext.SignedRequest.Data.ContainsKey("registration")) { return(new RedirectResult("/home/register")); } var regInfo = (JsonObject)fbContext.SignedRequest.Data["registration"]; long locationId; City city = GetCity(regInfo, out locationId); double timeZoneOffset = 0; JsonArray users = (JsonArray)app.Query("SELECT timezone FROM user WHERE uid = " + fbContext.UserId); if (null != users && users.Count > 0) { dynamic userData = users[0]; timeZoneOffset = Convert.ToDouble(userData.timezone); } if (null == city) { JsonArray places = (JsonArray)app.Query("SELECT latitude,longitude FROM place WHERE page_id = " + locationId); if (null != places && places.Count > 0) { JsonObject location = regInfo.GetValue <JsonObject>("location"); dynamic place = places[0]; city = new City(); city.LocationId = location.GetValue <long>("id"); city.Name = location.GetValue <string>("name"); city.Latitude = Convert.ToDouble(place.latitude); city.Longitude = Convert.ToDouble(place.longitude); this.DB.City.InsertOnSubmit(city); } } User user = new User(); user.FacebookId = fbContext.UserId; user.Name = regInfo.GetValue <string>("name"); user.Email = regInfo.GetValue <string>("email"); user.Birthday = regInfo.GetValue <DateTime>("birthday"); user.Gender = regInfo.GetValue <string>("gender") == "male"; user.City = city; user.TimeZoneOffset = timeZoneOffset; user.EmailOffers = true; TennisUser tennisUser = new TennisUser(); tennisUser.FacebookId = fbContext.UserId; tennisUser.Rating = regInfo.GetValue <double>("NTRPRating"); tennisUser.SinglesDoubles = regInfo.GetValue <string>("SinglesDoubles"); tennisUser.CurrentAvailability = true; this.DB.User.InsertOnSubmit(user); this.DB.TennisUser.InsertOnSubmit(tennisUser); this.DB.SubmitChanges(); return(new RedirectResult(Facebook.FacebookApplication.Current.ReturnUrlPath + "?fr=1")); } if (null == existingUser) { return(new RedirectResult("/home/register")); } if (!string.IsNullOrEmpty(Request["fr"])) { ViewData["FirstRun"] = true; } ViewData.Model = new IndexModel(existingUser, this.DB); ViewData["Action"] = "Index"; return(View("~/Views/Home/Index.aspx")); }
public ActionResult Index() { var app = new FacebookWebClient(); var fbContext = FacebookWebContext.Current; ViewData["FirstRun"] = false; TennisUserModel existingUser = ModelUtils.GetTennisUsers(this.DB).Where(tu => tu.FacebookId == fbContext.UserId).FirstOrDefault(); if (null == existingUser && null != fbContext.SignedRequest) { if (!fbContext.SignedRequest.Data.ContainsKey("registration")) { return new RedirectResult("/home/register"); } var regInfo = (JsonObject)fbContext.SignedRequest.Data["registration"]; long locationId; City city = GetCity(regInfo, out locationId); double timeZoneOffset = 0; JsonArray users = (JsonArray)app.Query("SELECT timezone FROM user WHERE uid = " + fbContext.UserId); if (null != users && users.Count > 0) { dynamic userData = users[0]; timeZoneOffset = Convert.ToDouble(userData.timezone); } if (null == city) { JsonArray places = (JsonArray)app.Query("SELECT latitude,longitude FROM place WHERE page_id = " + locationId); if (null != places && places.Count > 0) { JsonObject location = regInfo.GetValue<JsonObject>("location"); dynamic place = places[0]; city = new City(); city.LocationId = location.GetValue<long>("id"); city.Name = location.GetValue<string>("name"); city.Latitude = Convert.ToDouble(place.latitude); city.Longitude = Convert.ToDouble(place.longitude); this.DB.City.InsertOnSubmit(city); } } User user = new User(); user.FacebookId = fbContext.UserId; user.Name = regInfo.GetValue<string>("name"); user.Email = regInfo.GetValue<string>("email"); user.Birthday = regInfo.GetValue<DateTime>("birthday"); user.Gender = regInfo.GetValue<string>("gender") == "male"; user.City = city; user.TimeZoneOffset = timeZoneOffset; user.EmailOffers = true; TennisUser tennisUser = new TennisUser(); tennisUser.FacebookId = fbContext.UserId; tennisUser.Rating = regInfo.GetValue<double>("NTRPRating"); tennisUser.SinglesDoubles = regInfo.GetValue<string>("SinglesDoubles"); tennisUser.CurrentAvailability = true; this.DB.User.InsertOnSubmit(user); this.DB.TennisUser.InsertOnSubmit(tennisUser); this.DB.SubmitChanges(); return new RedirectResult(Facebook.FacebookApplication.Current.ReturnUrlPath + "?fr=1"); } if (null == existingUser) { return new RedirectResult("/home/register"); } if (!string.IsNullOrEmpty(Request["fr"])) { ViewData["FirstRun"] = true; } ViewData.Model = new IndexModel(existingUser, this.DB); ViewData["Action"] = "Index"; return View("~/Views/Home/Index.aspx"); }