Example #1
0
        /// <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))
            }
                       ));
        }
Example #2
0
        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"));
        }
Example #3
0
        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");
        }