public ActionResult NearbyVenues(int maxRadius)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "FoursquareLogin"));
            }

            FoursquareUserContext foursquareUserContext = new FoursquareUserContext();
            //TODO maybe change to premium warning notification
            int userId = Convert.ToInt32(User.Identity.Name);
            FoursquareUserModel user =
                foursquareUserContext.FoursquareUsers.
                First(x => x.FoursquareUserId == userId);

            int premiumRadius = Convert.ToInt32(ConfigurationManager.AppSettings["PremiumRadius"]);

            if (!user.IsPremium && premiumRadius < maxRadius)
            {
                maxRadius = premiumRadius;
            }

            string token = GetCurrentUserToken();

            logger.Debug("Got token " + token);
            Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(token);



            List <string> res = FSQOAuth.GetNearbyVenues(maxRadius);


            logger.Debug("Got venues " + res.Count);
            List <FoursquareOAuth.Venue> venues = new List <FoursquareOAuth.Venue>();

            if (res.Count == 0)
            {
                ViewBag.venues = null;
                return(View());
            }
            try
            {
                foreach (var re in res)
                {
                    venues.Add(FSQOAuth.GetVenuesInfo(re));
                }
            }
            catch (Exception e)
            {
                logger.Error(e.Message);
            }
            logger.Debug("Got venues info");
            ViewBag.venues = venues;
            return(View());
        }
        public NameValueCollection GetProfileInfo(int targetId)
        {
            string token = GetCurrentUserToken();

            Logic.FoursquareOAuth FSQOAuth = new FoursquareOAuth(token);
            Profile pf = FSQOAuth.GetProfileInfo(targetId);

            Models.FoursquareUserContext db = new FoursquareUserContext();
            int userID             = FSQOAuth.GetUserId();
            FoursquareUserModel um = db.FoursquareUsers.Find(userID);
            NameValueCollection nv = pf.getInfo(um.IsPremium);

            nv["isPremium"] = um.IsPremium.ToString();
            return(nv);
        }
Beispiel #3
0
        public ActionResult AuthInfo()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login"));
            }
            FoursquareUserContext fsqDBContext = new FoursquareUserContext();
            FoursquareUserModel   curUser      = fsqDBContext.FoursquareUsers.Find(Convert.ToInt32(User.Identity.Name));

            if (curUser != null)
            {
                UserAuthInfo res = new UserAuthInfo(curUser.FoursquareUserId, curUser.Token);
                return(Json(res, JsonRequestBehavior.AllowGet));
            }
            return(null);
        }
Beispiel #4
0
        public static bool ValidateAuthData(int userId, string token)
        {
            FoursquareUserContext dbContent = new FoursquareUserContext();
            FoursquareUserModel   user      = dbContent.FoursquareUsers.Find(userId);

            if (user == null)
            {
                return(false);
            }

            if (user.FoursquareUserId == userId && token == user.Token)
            {
                return(true);
            }
            return(false);
        }
Beispiel #5
0
        public ActionResult Authenticate()
        {
            Logic.FoursquareOAuth FSQOAuth = new Logic.FoursquareOAuth(null);
            if (Request["code"] == null)
            {
                return(Redirect(FSQOAuth.GetAuthURL()));
            }
            if (FSQOAuth.makeAuthentication(Request["code"]))
            {
                int    userId = FSQOAuth.GetUserId();
                string lastVenue;
                try
                {
                    lastVenue = FSQOAuth.GetLastVenue();
                }
                catch (Exception e)
                {
                    lastVenue = null;
                }

                FoursquareUserContext fsqDBContext = new FoursquareUserContext();
                FoursquareUserModel   curUser      = fsqDBContext.FoursquareUsers.Find(userId);
                if (curUser != null)
                {
                    MembershipUser mUser = Membership.GetUser(curUser.UserGuid);
                    curUser.LastVenueID = lastVenue;
                    if (curUser.Token != FSQOAuth.Token)
                    {
                        curUser.Token = FSQOAuth.Token;
                    }
                    UpdateModel(curUser);
                    fsqDBContext.SaveChanges();
                    FormsAuthentication.SetAuthCookie(mUser.UserName, true);
                }
                else
                {
                    curUser = new FoursquareUserModel();
                    curUser.FoursquareUserId = userId;
                    curUser.Token            = FSQOAuth.Token;
                    string password = Guid.NewGuid().ToString();

                    MembershipUser mUser;
                    try
                    {
                        mUser = Membership.CreateUser(userId.ToString(), password);
                    }
                    catch (Exception)
                    {
                        mUser = Membership.FindUsersByName(userId.ToString())[userId.ToString()];
                    }
                    curUser.UserGuid    = (Guid)mUser.ProviderUserKey;
                    curUser.UserName    = userId.ToString();
                    curUser.LastVenueID = lastVenue;
                    fsqDBContext.FoursquareUsers.Add(curUser);
                    fsqDBContext.SaveChanges();
                    FormsAuthentication.SetAuthCookie(curUser.UserName, true);
                }
            }

            return(RedirectToAction("Index"));
        }