//
        // GET: /Foursquare/Checkins
        public ActionResult Checkins()
        {
            if (Session["CurrentUser"] != null)
            {
                var            daysRequest = Request["days"] ?? null;
                int            days        = 0;
                FoursquareUser currentUser = Session["CurrentUser"] as Cuatro.Common.FoursquareUser;
                string         accessToken = currentUser.AccessToken;

                Users myUser = new Users(currentUser, accessToken);
                if (daysRequest != null)
                {
                    days = int.Parse(daysRequest);
                    if (days > 365)
                    {
                        days = 365;
                    }
                }
                else
                {
                    days = 7;
                }

                ViewBag.Days = days;
                List <Cuatro.Common.Checkin> myCheckins   = new List <Checkin>();
                List <Cuatro.Common.Checkin> tempCheckins = myUser.GetCheckins(new TimeSpan(Math.Abs(days), 0, 0, 0), 0);
                int theOffset = 0;

                myCheckins.AddRange(tempCheckins);

                if (tempCheckins.Count == 20)
                {
                    while (tempCheckins.Count == 20)
                    {
                        tempCheckins = myUser.GetCheckins(new TimeSpan(Math.Abs(days), 0, 0, 0), theOffset);
                        if (tempCheckins != null)
                        {
                            myCheckins.AddRange(tempCheckins);
                            theOffset += 20;
                        }
                        else
                        {
                            break;
                        }
                    }
                }

                if (myCheckins != null && myCheckins.Count > 0)
                {
                    return(View(myCheckins));
                }
                else
                {
                    return(View());
                }
            }

            return(RedirectToAction("LogOn", "FoursquareOauth"));
        }
示例#2
0
        public async Task <IActionResult> DeleteConfirmed(Guid id)
        {
            FoursquareUser foursquareUser = await _context.FoursquareUsers.SingleAsync(m => m.Id == id);

            _context.FoursquareUsers.Remove(foursquareUser);
            await _context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
示例#3
0
 public async Task <IActionResult> Create(FoursquareUser foursquareUser)
 {
     if (ModelState.IsValid)
     {
         var factory = FourSquareFactory.Create();
         var authURI = factory.GetAuthenticationURI();
         return(Redirect(authURI));
     }
     return(View(foursquareUser));
 }
示例#4
0
 //
 // GET: /Home/Profile
 public ActionResult Profile(FoursquareUser user)
 {
     if (user != null)
     {
         return(View(user));
     }
     else
     {
         return(View());
     }
 }
示例#5
0
        public async Task <IActionResult> Edit(FoursquareUser foursquareUser)
        {
            if (ModelState.IsValid)
            {
                _context.Update(foursquareUser);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(foursquareUser));
        }
示例#6
0
        // GET: FoursquareUser/Edit/5
        public async Task <IActionResult> Edit(Guid?id)
        {
            if (id == null)
            {
                return(HttpNotFound());
            }

            FoursquareUser foursquareUser = await _context.FoursquareUsers.SingleAsync(m => m.Id == id);

            if (foursquareUser == null)
            {
                return(HttpNotFound());
            }
            return(View(foursquareUser));
        }
示例#7
0
        public IActionResult FoursquareOauth([FromQuery] string uri)
        {
            if (ModelState.IsValid)
            {
                var factory = FourSquareFactory.Create();
                factory.Authenticate(uri);
                var foursquareUser = new FoursquareUser {
                    Id = Guid.NewGuid()
                };
                _context.FoursquareUsers.Add(foursquareUser);
                _context.SaveChangesAsync();
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult UserSearchSubmit(FormCollection collection)
        {
            if (Session["CurrentUser"] != null)
            {
                FoursquareUser currentUser = Session["CurrentUser"] as Cuatro.Common.FoursquareUser;
                string         accessToken = currentUser.AccessToken;

                Users          myUser = new Users(currentUser, accessToken);
                UserSearchType type   = UserSearchType.twitter;
                // TODO: Consider creating its own class (UserSearchResult or something) to order by relevance/etc
                List <FoursquareUser> resultList = new List <FoursquareUser>();
                switch (int.Parse(collection.GetValue("typeIndex").ToString()))
                {
                case 1:
                    type = UserSearchType.phone;
                    break;

                case 2:
                    type = UserSearchType.email;
                    break;

                case 3:
                    type = UserSearchType.fbid;
                    break;

                case 4:
                    type = UserSearchType.twitter;
                    break;
                }

                resultList = myUser.SearchUser(type, collection.GetValue("query").ToString());

                if (resultList != null)
                {
                    return(PartialView("SearchResults", resultList));
                }
                else
                {
                    return(PartialView());
                }
            }

            return(RedirectToAction("LogOn", "FoursquareOauth"));
        }
        public ActionResult VenueSearch(FormCollection collection)
        {
            try {
                List <Venue> results = new List <Venue>();

                string query  = collection["SearchQuery"] ?? "";
                string near   = collection["Near"] ?? "";
                double mylat  = 0.00f;
                double mylong = 0.00f;
                double.TryParse(collection["Latitude"], out mylat);
                double.TryParse(collection["Longitude"], out mylong);
                LocationCoords coords = new LocationCoords()
                {
                    Latitude  = mylat,
                    Longitude = mylong
                };

                FoursquareUser currentUser = Session["CurrentUser"] as Cuatro.Common.FoursquareUser;
                string         accessToken = currentUser.AccessToken;

                Venues myVenues = new Venues(currentUser, accessToken);

                if (mylat != 0.00f && mylong != 0.00f)
                {
                    results = myVenues.SearchVenues(query, coords, near);
                }

                return(View(new VenueSearchModel()
                {
                    Latitude = mylat,
                    Longitude = mylong,
                    Near = near,
                    SearchQuery = query,
                    VenueResults = results
                }));
            } catch (Exception ex) {
                return(RedirectToAction("Error", "Home", new { error = "There was a problem. Ex: " + ex.Message }));

                throw;
            }
        }
        //
        // GET: /Foursquare/Leaderboard
        public ActionResult Leaderboard()
        {
            if (Session["CurrentUser"] != null)
            {
                FoursquareUser currentUser = Session["CurrentUser"] as Cuatro.Common.FoursquareUser;
                string         accessToken = currentUser.AccessToken;

                Users myUser = new Users(currentUser, accessToken);
                Cuatro.Common.Leaderboard myLeaderboard = myUser.GetLeaderboard();

                if (myLeaderboard != null && myLeaderboard.UsersList != null && myLeaderboard.UsersList.Count > 0)
                {
                    return(View(myLeaderboard));
                }
                else
                {
                    return(View());
                }
            }

            return(RedirectToAction("LogOn", "FoursquareOauth"));
        }
        //
        // GET: /Foursquare/Requests
        public ActionResult Requests()
        {
            if (Session["CurrentUser"] != null)
            {
                FoursquareUser currentUser = Session["CurrentUser"] as Cuatro.Common.FoursquareUser;
                string         accessToken = currentUser.AccessToken;

                Users myUser = new Users(currentUser, accessToken);
                List <FriendRequest> myRequests = myUser.GetFriendRequests();

                if (myRequests != null && myRequests.Count > 0)
                {
                    return(View(myRequests));
                }
                else
                {
                    return(View());
                }
            }

            return(RedirectToAction("LogOn", "FoursquareOauth"));
        }
        //
        // GET: /FoursquareOauth/Receiver
        /// <summary>
        /// Receive the oauth token from Foursquare
        /// </summary>
        /// <returns></returns>
        public ActionResult Receiver()
        {
            Session["foursquare_access_token"] = "";
            string         code      = Request["code"] ?? "";
            var            tokenJson = Request["access_token"] ?? null;
            string         message   = Request["error"] ?? "";
            FoursquareUser user      = new FoursquareUser();

            if (tokenJson == null)
            {
                if (code != "" && code != null)
                {
                    StringBuilder accessTokenUri = new StringBuilder();
                    accessTokenUri.Append("https://foursquare.com/oauth2/access_token");
                    accessTokenUri.Append(String.Format("?client_id={0}", FoursquareSecrets.CLIENT_ID));
                    accessTokenUri.Append(String.Format("&client_secret={0}", FoursquareSecrets.CLIENT_SECRET));
                    accessTokenUri.Append("&grant_type=authorization_code");
                    accessTokenUri.Append(String.Format("&redirect_uri={0}", FoursquareSecrets.REDIRECT_URI));
                    accessTokenUri.Append("&code=" + code);

                    var response = WebRequestHelper.WebRequest(WebRequestHelper.Method.GET, accessTokenUri.ToString(), string.Empty);

                    if (response != null && response != "")
                    {
                        var    json  = JObject.Parse(response);
                        string token = json["access_token"].ToString().Replace("\"", "");

                        String foursquareUserUri = String.Format("https://api.foursquare.com/v2/users/self?oauth_token={0}", token);
                        var    responseUser      = WebRequestHelper.WebRequest(WebRequestHelper.Method.GET, foursquareUserUri.ToString(), string.Empty);
                        var    jsonUser          = JObject.Parse(responseUser);

                        if (int.Parse(jsonUser["meta"]["code"].ToString()) == 200)
                        {
                            user.AccessToken      = token;
                            user.FirstName        = jsonUser["response"]["user"]["firstName"].ToString().Replace("\"", "");
                            user.LastName         = jsonUser["response"]["user"]["lastName"].ToString().Replace("\"", "");
                            user.FoursquareUserId = int.Parse(jsonUser["response"]["user"]["id"].ToString().Replace("\"", ""));
                            user.Gender           = jsonUser["response"]["user"]["gender"].ToString().Replace("\"", "");
                            user.HomeCity         = jsonUser["response"]["user"]["homeCity"].ToString().Replace("\"", "");
                            user.PhotoUri         = jsonUser["response"]["user"]["photo"].ToString().Replace("\"", "");
                        }
                        else
                        {
                            var errorCode    = int.Parse(jsonUser["meta"]["code"].ToString());
                            var errorMessage = jsonUser["meta"]["errorMessage"].ToString() ?? null;
                            var errorToSend  = String.Format("Error code: {0} Error Message: {1}", errorCode, errorMessage);
                            return(RedirectToAction("Error", new { error = errorToSend }));
                        }
                    }
                }
                else
                {
                    ViewBag.Message = "Error: " + message;
                }
            }

            if (user.FoursquareUserId > 0)
            {
                Session["foursquare_access_token"] = user.AccessToken;
                //FormsAuthentication.SetAuthCookie(user.FoursquareUserId.ToString(), false);
                Session["CurrentUser"]  = user;
                Session["foursquareId"] = user.FoursquareUserId;
                return(RedirectToAction("Profile", "Home", user));
            }
            else
            {
                return(RedirectToAction("Error", "Home", new { error = "Problem Authenticating user" }));
            }
        }
示例#13
0
 /// <summary>
 /// Setup the endpoint for use with API calls
 /// </summary>
 /// <param name="CurrentAccessToken"></param>
 /// <param name="CurrentUser"></param>
 /// <param name="Extras"></param>
 public void SetupEndpoint(FoursquareUser CurrentUser, string CurrentAccessToken, object extras)
 {
     AccessToken = CurrentAccessToken;
     User = CurrentUser;
 }
示例#14
0
 public Users(FoursquareUser User, string AccessToken)
 {
     SetupEndpoint(User, AccessToken, null);
 }