protected void btnPublishClick(object sender, EventArgs e)
        {
            LoveHitchFacebookApp facebook = null;
            if (Context.Session["facebook"] != null)
            {
                facebook = (LoveHitchFacebookApp)Context.Session["facebook"];
            }
            else if ((Context.Session["facebookAccessToken"] != null) && (((String)Context.Session["facebookAccessToken"]).Length > 0))
            {
                facebook = new LoveHitchFacebookApp((String)Context.Session["facebookAccessToken"]);
            }
            else if (Request.QueryString["access_token"] != null && Request.QueryString["access_token"].Length > 0)
            {
                facebook = new LoveHitchFacebookApp(Request.QueryString["access_token"]);
            }

            //foreach (ListItem li in cblFriends.Items)
            //{
            //    //if (li.Selected)
            //    {
            //        string uidStr = String.Format("/{0}", li.Value);
            //        JsonObject fbUser = facebook.Api(uidStr) as JsonObject;
            //        if (!fbUser.ContainsKey("email")) continue;
            //        string email = (String)fbUser["email"];
            //        if (email.IsNullOrEmpty()) continue;
            //        Email.Send(CurrentUserSession.Name, 
            //                   CurrentUserSession.Email, 
            //                   "Invitation to LoveHitch".Translate(),
            //                   "https://www.LoveHitch.com or https://www.facebook.com/LoveHitch",
            //                   true);
            //    }   
            //}
        }
 public FacebookFriendsDataBackgroundWorkerClass(PageBase pageBase, HttpContext context,
                                            LoveHitchFacebookApp facebook, long id, string accessToken)
 {
     _pageBase = pageBase;
     _context = context;
     timestamps = new TimeMeasure();
     _facebook = facebook;
     _id = id;
     _accessToken = accessToken;
 }
Exemple #3
0
		protected void Page_Load(object sender, EventArgs e) {
			
            if(CurrentUserSession != null && CurrentUserSession.IsAuthorized) 
            {                
				Response.Redirect(MatchmakerHelper.CurrentHomePage);
                //Server.Transfer(MatchmakerHelper.CurrentHomePage);
			} 
            else if(Request.UrlReferrer != null) {
			
                String referer = Request.UrlReferrer.AbsoluteUri;

				if (referer.StartsWith("https://apps.facebook.com/lovehitch_local/") || referer.StartsWith("https://apps.facebook.com/lovehitch/")
                    || referer.StartsWith("http://apps.facebook.com/lovehitch_local/") || referer.StartsWith("http://apps.facebook.com/lovehitch/")
                    || referer.StartsWith("apps.facebook.com/lovehitch_local/") || referer.StartsWith("apps.facebook.com/lovehitch/"))
                {
                    LoveHitchFacebookApp app;

					if((Request.QueryString["access_token"] != null) && (Request.QueryString["access_token"].Length > 0)) {
                        Server.Transfer("LoginThroughFacebook.aspx?access_token" + Request.QueryString["access_token"]);
					} else {
                        //Server.Transfer("LoginThroughFacebook.aspx?facebook=1");
                        app = new LoveHitchFacebookApp();
                        Dictionary<String, Object> p = new Dictionary<String, object>();
                        
                        p["req_perms"] = ConfigurationManager.AppSettings["FacebookPermissions"];
                        p["next"] = Config.Urls.FacebookHome + "/LoginThroughFacebook.aspx";
                        p["canvas"] = 1;
                        p["fbconnect"] = 0;

                        Response.Write("<html>\n");
                        Response.Write("<head>\n");
                        Response.Write("<script type='text/javascript' src='https://connect.facebook.net/en_US/all.js'></script>\n");
                        Response.Write("</head>\n");
                        Response.Write("<body>\n");
                        Response.Write("<script type='text/javascript'>\n");
                        Response.Write("if (parent != self) \n");
                        Response.Write("	top.location.href = \"" + app.GetLoginUrl(p).ToString() + @"&v=1.0" + "\";\n");
                        //Response.Write("	top.location.href = \"" + app.GetLoginUrl(p).ToString() + "\";\n");
                        Response.Write("else\n");
                        Response.Write("	self.location.href = \"" + app.GetLoginUrl(p).ToString() + @"&v=1.0" + "\";\n");
                        //Response.Write("	self.location.href = \"" + app.GetLoginUrl(p).ToString() + "\";\n");
                        Response.Write("</script>\n");
                        Response.Write("</body>\n");
                        Response.Write("</html>\n");
					}
				}
			}

			if(!Page.IsPostBack) {
				preparePage();
				prepareRssLinks();
			}

			loadComponents();
		}
        protected void Page_Load(object sender, EventArgs e)
        {
            divFacebook.Visible = Config.Misc.EnableFacebookIntegration;

            if (!Config.Misc.EnableFacebookIntegration)
            {
                Response.End();
                return;
            }

            //btnInvite.Text = "Invite".Translate();

            LoveHitchFacebookApp facebook = null;
            if (Context.Session["facebook"] != null)
            {
                facebook = (LoveHitchFacebookApp)Context.Session["facebook"];
            }
            else if ((Context.Session["facebookAccessToken"] != null) && (((String)Context.Session["facebookAccessToken"]).Length > 0))
            {
                facebook = new LoveHitchFacebookApp((String)Context.Session["facebookAccessToken"]);
            }
            else if (Request.QueryString["access_token"] != null && Request.QueryString["access_token"].Length > 0)
            {
                facebook = new LoveHitchFacebookApp(Request.QueryString["access_token"]);
            }
            else
            {
                facebook = new LoveHitchFacebookApp();
            }
            DataTable dtFriends = new DataTable("friends");
            dtFriends.Columns.Add("Id", typeof (long));
            dtFriends.Columns.Add("Name");
            JsonObject fbUser = facebook.Api("/me") as JsonObject;
            long id = long.Parse((String)fbUser["id"]);

            if (id > 0)
            {
                divFacebookButton.Visible = false;
            }
        }
        private void PopulateUserDataUsingFacebook()
        {
            LoveHitchFacebookApp facebook = null;
            if (Context.Session["facebook"] != null)
            {
                facebook = (LoveHitchFacebookApp)Context.Session["facebook"];
            }
            else if ((Context.Session["facebookAccessToken"] != null) &&
                     (((String)Context.Session["facebookAccessToken"]).Length > 0))
            {
                facebook = new LoveHitchFacebookApp((String)Context.Session["facebookAccessToken"]);
            }
            else if (Request.QueryString["access_token"] != null && Request.QueryString["access_token"].Length > 0)
            {
                facebook = new LoveHitchFacebookApp(Request.QueryString["access_token"]);
            }
            else
            {
                facebook = new LoveHitchFacebookApp();
            }

            Facebook.JsonObject user;
            long id;

            if (facebook.AppSecret == null)
            {
                facebook.AppSecret = Properties.Settings.Default.Facebook_Secret_Key;
            }
            try
            {
                user = facebook.Api("/me") as Facebook.JsonObject;

                if (user != null && user["id"] != null
                    && long.TryParse((String)user["id"], out id) && id > 0)
                {
                    FacebookID = id;

                    #region log on the user if she is already registered

                    string[] usernames = Classes.User.FetchUsernamesByFacebookID(new[] { facebook.UserId });
                    if (usernames.Length > 0)
                    {
                        UserSession userSession;
                        try
                        {
                            userSession = new UserSession(usernames[0]);
                            Classes.User.AuthorizeByFacebookID(facebook.UserId);
                            ((PageBase)Page).CurrentUserSession = userSession;
                            MatchmakerHelper.CurrentUsername = userSession.Username;
                            userSession.Authorize(Session.SessionID);
                        }
                        catch (NotFoundException)
                        {
                            goto populatedate;
                        }
                        catch (AccessDeniedException err)
                        {
                            IDictionary<string, object> parameters = new Dictionary<string, object>();
                            StatusPageMessage = err.Message;
                            parameters["next"] = Config.Urls.Home + "/ShowStatus.aspx";
                            Response.Redirect(facebook.GetLogoutUrl(parameters).ToString());
                            return;
                        }
                        catch (SmsNotConfirmedException)
                        {
                            Response.Redirect("SmsConfirm.aspx?username="******"next"] = Config.Urls.Home + "/ShowStatus.aspx";
                            Response.Redirect(facebook.GetLogoutUrl(parameters).ToString());
                            return;
                        }
                        catch (Exception err)
                        {
                            IDictionary<string, object> parameters = new Dictionary<string, object>();
                            Global.Logger.LogWarning(err);
                            StatusPageMessage = err.Message;
                            parameters["next"] = Config.Urls.Home + "/ShowStatus.aspx";
                            Response.Redirect(facebook.GetLogoutUrl(parameters).ToString());
                            return;
                        }
                        CurrentUserSession = userSession;
                        CurrentUserSession.LoggedInThroughFacebook = true;
                        Response.Redirect("Home.aspx");
                    }

                    #endregion

                populatedate:

                    string fbImgUrl = FacebookHelper.GetProfilePictureSource(facebook, id);
                    //ImageHandler.CreateFacebookImageUrl(id, ImageHandler.eFacebookImageType.Large);
                    this.LastAsyncFileUploadLocation = fbImgUrl;

                    var o = new FacebookHelper.FetchAndSaveSaveFacebookFriendImageClass();
                    o.FetchAndSaveFacebookImageBySource(fbImgUrl, id);

                    JsonObject friends = facebook.Api("/me/friends") as JsonObject;
                    if (friends != null)
                    {
                        JsonArray friendsArr = friends["data"] as JsonArray;
                        FacebookFriendIDs = new long[friendsArr.Count];
                        for (int i = 0; i < friendsArr.Count(); i++)
                        {
                            long.TryParse((string)((JsonObject)friendsArr[i])["id"], out FacebookFriendIDs[i]);
                        }
                    }
                    if (user != null)
                    {
                        DateTime birthday;
                        if (DateTime.TryParse((String)user["birthday"], CultureInfo.InvariantCulture,
                                              DateTimeStyles.None, out birthday))
                        {
                            datePicker1.SelectedDate = birthday;
                            //txtDatePicker.Text = datePicker1.SelectedDate.ToShortDateString();
                            BirthdayPicker1.CurrentText = datePicker1.SelectedDate.ToShortDateString();
                        }
                        Classes.User.eGender? gender = null;

                        if (!String.IsNullOrEmpty((String)user["gender"]))
                        {
                            switch (((String)user["gender"]).ToLower(CultureInfo.InvariantCulture))
                            {
                                case "male":
                                    gender = Classes.User.eGender.Male;
                                    break;
                                case "female":
                                    gender = Classes.User.eGender.Female;
                                    break;
                            }
                        }
                        if (gender.HasValue)
                        {
                            dropGender.SelectedValue = ((int)gender).ToString();

                            switch (gender)
                            {
                                case Classes.User.eGender.Male:
                                    dropInterestedIn.SelectedValue = ((int)Classes.User.eGender.Female).ToString();
                                    break;
                                case Classes.User.eGender.Female:
                                    dropInterestedIn.SelectedValue = ((int)Classes.User.eGender.Male).ToString();
                                    break;
                            }
                        }

                        if (user.ContainsKey("location"))
                        {
                            JsonObject location = (JsonObject)user["location"];
                            string locationName = null;
                            if (location.ContainsKey("name"))
                            {
                                locationName = (string)location["name"];
                            }
                            if (locationName.IsNotNullOrEmpty())
                            {
                                string[] locationTokens = locationName.Split(new[] { "," },
                                                                             StringSplitOptions.RemoveEmptyEntries);
                                var fbCountry = locationTokens.Length > 2 ? locationTokens[2].Trim() : "";
                                var fbRegion = locationTokens.Length > 1 ? locationTokens[1].Trim() : "";
                                var fbCity = locationTokens.Length > 0 ? locationTokens[0].Trim() : "";

                                var allCountries = Config.Users.GetCountries();
                                var regions = new string[0];
                                var cities = new string[0];
                                foreach (var country in allCountries)
                                {
                                    this.dropCountry.Items.Add(country);
                                    if (country.Contains(fbCountry))
                                    {
                                        this.dropCountry.SelectedValue = country;
                                    }
                                }
                                if (this.dropCountry.SelectedIndex > 0)
                                {
                                    regions = Config.Users.GetRegions(this.dropCountry.SelectedValue);
                                    foreach (var region in regions)
                                    {
                                        this.dropRegion.Items.Add(region);
                                        if (region.Contains(fbRegion))
                                        {
                                            this.dropRegion.SelectedValue = region;
                                        }
                                    }
                                    if (this.dropRegion.SelectedIndex > 0)
                                        cities = Config.Users.GetCities(this.dropCountry.SelectedValue,
                                                                        this.dropRegion.SelectedValue);
                                    foreach (var city in cities)
                                    {
                                        this.dropCity.Items.Add(city);
                                        if (city.Contains(fbCity))
                                            dropCity.SelectedValue = city;
                                    }
                                }
                            }
                        }

                        if (user.ContainsKey("big_pic") && !String.IsNullOrEmpty((String)user["pic_big"]))
                            PrimaryPhotoURL = (String)user["pic_big"];
                        else
                            PrimaryPhotoURL = String.Format("https://graph.facebook.com/{0}/picture?type={1}", id
                                                             , Config.FacebookSettings.FacebookDefaultImageIsNormal
                                                                            ? AspNetDating.ImageHandler.eFacebookImageType.Normal.ToString().ToLower()
                                                                            : AspNetDating.ImageHandler.eFacebookImageType.Large.ToString().ToLower());

                        if (user.ContainsKey("email") && !String.IsNullOrEmpty((String)user["email"]))
                            FacebookEmail = (String)user["email"];
                        txtEmail.Text = FacebookEmail;

                        //var albums = facebookService.photos.getAlbums(user.uid).ToArray();
                        //albums[0].

                        txtName.Text = (String)user["name"];
                        txtUsername.Text = (String)user["username"];
                        IsFacebookVerified = false;

                        if (user.ContainsKey("verified") && (user["verified"] is bool))
                            IsFacebookVerified = (bool)user["verified"];

                        //divCardSpace.Visible = false;
                        //divMySpace.Visible = false;
                        divFacebook.Visible = false;
                    }
                }
            }
            catch (Exception e)
            {
            }
        }
Exemple #6
0
        public void AddUpdateFacebookFriendsDataWorker(LoveHitchFacebookApp facebook, long id, string accessToken)
        {
            var clsWorker = new FacebookFriendsDataBackgroundWorkerClass(this, Context, facebook, id, accessToken);
            var bgDic = (Dictionary<string, LovehitchBackgroundWorker>)Global.AppBackgroundWorkersDic;
            if (bgDic != null)
            {
                UpdateFacebookFriendsDataBackgroundWorker bgWorker =
                    (UpdateFacebookFriendsDataBackgroundWorker)
                    bgDic["ezFixUp.Data.UpdateFacebookFriendsDataBackgroundWorker"];

                if (bgWorker != null && facebook != null && CurrentUserSession.FacebookID.HasValue)
                {
                    lock (UpdateFacebookFriendsDataBackgroundWorker.WorkersList)
                    {
                        UpdateFacebookFriendsDataBackgroundWorker.WorkersList.Add(clsWorker);
                        CurrentUserSession.ToUpdateFacebookFriendsData = false;
                    }
                }
            }
        }
Exemple #7
0
        public void TryLoginThroughFacebook(LoveHitchFacebookApp facebook, long id, string accessToken, string backUrl)
        {
            FacebookHelper.SessionFacebookApp = facebook;
            FacebookHelper.CurrentSessionAccessToken = accessToken;
            FacebookHelper.CurrentSessionUserID = id;
            FacebookHelper.IsCurrentSessionConnected = true;
            FacebookHelper.SessionConnectTriesElapsed = 0;

            SetCurrentUserSession(null);
            string[] usernames = null;
            UserSession userSession;

            try
            {
                usernames = Data.User.AuthorizeByFacebookID(id);
                userSession = new UserSession(usernames[0]);
                ((PageBase)Page).CurrentUserSession = userSession;
                MatchmakerHelper.CurrentUsername = userSession.Username;
                userSession.Authorize(Session.SessionID);
                userSession.LoggedInThroughFacebook = true;
                //facebook.Session.UserId = id;
                userSession.SetFacebookApp(facebook);
                //Response.Redirect(backUrl.ToLower().Contains("loginthroughfacebook.aspx") ? "home.aspx" : backUrl);
                userSession.ToUpdateFacebookFriendsData = true;
            }
            catch (NotFoundException)
            {
                if (CurrentUserSession != null)
                {
                    CurrentUserSession.FacebookID = id;
                    CurrentUserSession.Update();
                    MatchmakerHelper.CurrentUsername = CurrentUserSession.Username;
                    if (!CurrentUserSession.IsAuthorized) CurrentUserSession.Authorize(Session.SessionID);
                    CurrentUserSession.LoggedInThroughFacebook = true;
                    if (CurrentUserSession.FacebookID.HasValue && CurrentUserSession.FacebookID > 0)
                    {
                        var qry = "SELECT uid1, uid2 FROM friend " +
                            " WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1=me()) " +
                            " AND   uid2 IN (SELECT uid2 FROM friend WHERE uid1=me())";
                        JsonArray mutualFriendsByQuery = FacebookHelper.GetFqlResult(qry);
                        Session["FacebookMutualFriends"] =
                            mutualFriendsByQuery
                                .Select(o => new MutualFriendItem
                                {
                                    FriendID = long.Parse((string)((JsonObject)o)["uid1"]),
                                    MutualFriendID = long.Parse((string)((JsonObject)o)["uid2"])
                                })
                                .ToList();
                        FacebookHelper.AddFriends(CurrentUserSession, 0, HttpContext.Current, null);
                        Response.Redirect(backUrl ?? MatchmakerHelper.CurrentHomePage);
                        //Server.Transfer(backUrl ?? MatchmakerHelper.CurrentHomePage);
                    }
                }
                else
                {
                    Response.Redirect("Registration.aspx?facebook=1&back_url=" + backUrl);
                    //Server.Transfer("Registration.aspx?facebook=1&back_url=" + backUrl);
                    return;
                }
            }
            catch (AccessDeniedException err)
            {
                IDictionary<string, object> parameters = new Dictionary<string, object>();
                StatusPageMessage = err.Message;
                parameters["next"] = "ShowStatus.aspx";
                //Response.Redirect(facebook.GetLogoutUrl(parameters).ToString());
                Response.Redirect("ShowStatus.aspx");
                //Server.Transfer("ShowStatus.aspx");
                return;
            }
            catch (SmsNotConfirmedException)
            {
                Response.Redirect("SmsConfirm.aspx?username="******"next"] = Config.Urls.Home + "/ShowStatus.aspx";
                //Response.Redirect(facebook.GetLogoutUrl(parameters).ToString());
                Response.Redirect("ShowStatus.aspx");
                //Server.Transfer("ShowStatus.aspx");
                return;
            }
            catch (Exception err)
            {
                IDictionary<string, object> parameters = new Dictionary<string, object>();
                Global.Logger.LogWarning(err);
                StatusPageMessage = err.Message;
                parameters["next"] = Config.Urls.Home + "/ShowStatus.aspx";
                Response.Redirect("ShowStatus.aspx");
                //Server.Transfer("ShowStatus.aspx"); 
                return;
            }
            //Response.Redirect(backUrl.ToLower().Contains("loginthroughfacebook.aspx") ? "default.aspx" : backUrl);
            Response.Redirect(MatchmakerHelper.CurrentHomePage);
            //Response.Redirect("ManageProfile.aspx");
            //Server.Transfer("default.aspx", false);
        }
        public static void AddFriendsWithoutMutualFriends(LoveHitchFacebookApp facebook, HttpContext context)
        {
            try
            {
                var mfDic = context.GetFacebookMutualFriendsDic();
                if (mfDic == null) return;
                var lstMutualFriends = (List<MutualFriendItem>)mfDic[facebook.UserId];
                if (lstMutualFriends == null) return;
                var user = FacebookHelper.LoadUserFromDbByFacebookId(facebook.UserId);

                var friendsIDsWithMutualFriends =
                    lstMutualFriends.Select(f => f.FriendID).Distinct().ToList();

                if (User.IsUsernameTaken(friendsIDsWithMutualFriends.Last().ToString()))
                {
                    FacebookHelper.AddFriends(user, 5000, context, facebook);
                }
            }
            catch (Exception ex)
            {
            }
        }
        //protected override void OnDoWork(DoWorkEventArgs e)
        public new static void DoWork(LoveHitchFacebookApp facebook, HttpContext context)
        {
            //ReportProgress(0, "Working hard on this report...");
            //var msWait = 1000 * 120;

            //while (true)
            {
                //Thread.Sleep(msWait);

                //if (this.FacebookAppList.Count == 0)
                //{
                //    Thread.Sleep(msWait);
                //}
                //else
                {
                    //var facebook = FacebookAppList[0];
                    var user = FacebookHelper.LoadUserFromDbByFacebookId(facebook.UserId);
                    if (user == null) return;

                    //for (int i = 0; i < 2; i++)
                    {
                        DateTime[] time = new DateTime[10];
                        time[0] = DateTime.Now;

                        IList<FacebookHelper.FacebookFriendData> allFriendsData =
                            FacebookHelper.GetFriendsDataList(facebook, facebook.UserId);
                        var mfDic = context.GetFacebookMutualFriendsDic();// (Dictionary<long, List<MutualFriendItem>>)context.Application["FacebookMutualFriendsDic"];
                        var allMutualFriends = (List<MutualFriendItem>)mfDic[facebook.UserId];
                        if (allMutualFriends != null)
                        {
                            for (int i = 0; i < allFriendsData.Count; i++)
                            {
                                var fbFriendData = allFriendsData[i];
                                fbFriendData.MutualFriendsCount =
                                    allMutualFriends.Count(f => f.FriendID == fbFriendData.UserId);
                            }

                            allFriendsData = allFriendsData.OrderByDescending(f => f.MutualFriendsCount).ToList();
                        }
                        var lstFriendsIds = new List<long>();
                        try
                        {
                            using (var db = new ezFixUpDataContext())
                            {
                                var tmpList =
                                    CompiledQueries.FetchActiveFriendsForUsername(db, user.Username).
                                        ToList();
                                var tmpArray =
                                    tmpList.Where(
                                        f =>
                                        f.User1.u_logincount == 0 && f.User1.u_facebookid.HasValue &&
                                        !f.User1.u_face_control_approved)
                                        .OrderBy(f => f.User1.u_name).Select(f => f.User1.u_facebookid.Value).ToArray();

                                foreach (var friendData in allFriendsData)
                                {
                                    var un = friendData.UserId;

                                    if (!tmpArray.Contains(un)) continue;

                                    int imgId = Photo.GetPrimaryOrDefaultId(un.ToString());
                                    if (imgId < 0)
                                        lstFriendsIds.Add(un);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                        if (lstFriendsIds.Count > 0)
                        {
                            try
                            {
                                var parameterizedThreadsList =
                                    new LoveHitchParallel.ParameterizedThreadsList<long>(
                                        lstFriendsIds,
                                        (new FacebookHelper.FetchAndSaveSaveFacebookFriendImageClass()).
                                            FetchAndSaveFacebookImageByFacebookId,
                                        null);
                                parameterizedThreadsList.RunAsBackgroundThreads = true;
                                parameterizedThreadsList.ExecuteParallelWork(1);
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                    //FacebookAppList.RemoveAt(0);
                }
            }
        }
        private static void FetchAndSaveFacebookMutualFriends(LoveHitchFacebookApp facebook, HttpContext context)
        {
            DateTime[] time = new DateTime[5];
            time[0] = DateTime.Now;

            var user = FacebookHelper.LoadUserFromDbByFacebookId(facebook.UserId);
            var dic = context.GetFacebookFriendsDic();
            if (user == null || dic == null) return;

            var sessionFriendsData = (dic.ContainsKey(facebook.UserId)) ? dic[facebook.UserId] : null;
            if (sessionFriendsData == null) return;

            var mfDic = context.GetFacebookMutualFriendsDic();
            if (mfDic == null || mfDic[facebook.UserId] == null) return;

            var lstMutualFriends = (List<MutualFriendItem>)mfDic[facebook.UserId];
            if (lstMutualFriends == null) return;

            var totalFriendsCount = sessionFriendsData.Count;
            int limit = 40;
            var lstFriendsMutualCount = new List<MutualFriendItem>();

            for (int offset = 0; offset < totalFriendsCount; offset += limit)
            {
                var qry1 = "SELECT uid2 FROM friend WHERE uid1=me()";
                var qry2tmpl =
                    "select uid, mutual_friend_count from user where mutual_friend_count > 00 and mutual_friend_count <= 30 and uid in " +
                    "( SELECT uid2 FROM friend WHERE uid1=me() limit {0} offset {1})";
                var qry2 = String.Format(qry2tmpl, limit, offset);

                JsonArray res = FacebookHelper.GetFqlResult(facebook, qry2);
                lstFriendsMutualCount =
                    lstFriendsMutualCount.Union(
                                          res.Select(o => new MutualFriendItem
                                          {
                                              FriendID = long.Parse((string)((JsonObject)o)["uid"]),
                                              MutualFriendID = ((JsonObject)o)["mutual_friend_count"] == null ? 0 : long.Parse((string)((JsonObject)o)["mutual_friend_count"])
                                          })).ToList();
            }
            //var groups = lstFriendsMutualCount.GroupBy(o => o.FriendID);
            //int groupsCount = groups.Count();
            //long x = lstFriendsMutualCount.Sum(o => o.MutualFriendID);

            time[1] = DateTime.Now;

            var lstFacebookSessionMutualFriends = new List<MutualFriendItem>();
            //long counter = 0;
            const long limitCount = 20;
            //long skipCount = 0;
            int qryCount = 0;
            for (long i = 0; i < totalFriendsCount; i += limitCount)
            {
                //if (counter + lstFriendsMutualCount[i].MutualFriendID < 400 && limitCount < 80)
                //if (counter + lstFriendsMutualCount[i].MutualFriendID < 300 && limitCount < 30)
                //{
                //    limitCount++;
                //    counter += lstFriendsMutualCount[i].MutualFriendID;
                //}
                //else
                {
                    qryCount++;
                    //counter = lstFriendsMutualCount[i].MutualFriendID;
                    var qry1tmpl =
                        "select uid from user where mutual_friend_count > 30 and mutual_friend_count <= 200 and uid in (SELECT uid2 FROM friend WHERE uid1=me()  limit {0} offset {1}) ";
                    var qry1 = String.Format(qry1tmpl, limitCount, i);
                    //for (long j = 0; j < totalFriendsCount; j += 1260)
                    {
                        //var qry2tmpl = "SELECT uid2 FROM friend WHERE uid1=me() limit 1260 offset {0}";
                        //var qry2 = String.Format(qry2tmpl, j);
                        var qry2 = "SELECT uid2 FROM friend WHERE uid1=me()";
                        //limitCount = 1;
                        //skipCount = i-1;
                        var qry3tmpl = "select uid1,uid2 from friend where uid1 in ({0}) and uid2 in ({1})";
                        var qry3 = String.Format(qry3tmpl, qry1, qry2);
                        JsonArray res = FacebookHelper.GetFqlResult(facebook, qry3);
                        var res1 = res.Select(o => new MutualFriendItem
                        {
                            FriendID = long.Parse((string)((JsonObject)o)["uid1"]),
                            MutualFriendID =
                                long.Parse((string)((JsonObject)o)["uid2"])
                        });
                        var res2 = res1.Select(o => new MutualFriendItem
                        {
                            FriendID = o.MutualFriendID,
                            MutualFriendID = o.FriendID
                        });
                        lstFacebookSessionMutualFriends = lstFacebookSessionMutualFriends.Union(res1).Union(res2).ToList();
                    }
                }
            }
            time[2] = DateTime.Now;
            //time[2] = DateTime.Now;

            //var qryFriendsCountMF =
            //    //"SELECT uid FROM user ORDER BY mutual_friend_count DESC limit 5000";
            //    //"SELECT uid,mutual_friend_count FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) order by mutual_friend_count DESC limit 5000";
            //        "SELECT uid2 FROM friend WHERE uid1=me()";

            //JsonArray friendsByQuery = facebook.GetFqlResult(qryFriendsCountMF);

            //var lstFriends = friendsByQuery
            //        .Select(o => new
            //        {
            //            FriendID = long.Parse((string)((JsonObject)o)["uid2"])
            //            //,MutualFriendsCount = long.Parse((string) ((JsonObject) o)["mutual_friend_count"])
            //        }).ToList();

            //var qryMutualFriendsTemplate = "SELECT uid1, uid2 FROM friend " +
            //                               " WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1=me() limit {0} offset {1}) " +
            //                               " AND   uid2 IN (SELECT uid2 FROM friend WHERE uid1=me())";

            //var mutualFriendItems = new List<MutualFriendItem>();
            //int limit = 60;
            //for (int offset = 0; offset < lstFriends.Count; offset += limit)
            //{
            //    JsonArray mutualFriendsPerFriendByQuery =
            //        facebook.GetFqlResult(String.Format(qryMutualFriendsTemplate, limit, offset));

            //    mutualFriendItems = mutualFriendItems.Union(
            //        mutualFriendsPerFriendByQuery.Select(o => new MutualFriendItem
            //        {
            //            FriendID = long.Parse((string)((JsonObject)o)["uid1"]),
            //            MutualFriendID = long.Parse((string)((JsonObject)o)["uid2"])
            //        })
            //                                            ).ToList();
            //}
            //var mfDic = context.GetFacebookMutualFriendsDic();
            //if (mfDic == null) return;
            //var lstMutualFriends = (List<MutualFriendItem>)mfDic[facebook.UserId];
            //if (lstMutualFriends == null) return;

            lstMutualFriends = lstMutualFriends.Union(lstFacebookSessionMutualFriends).ToList();
            var quickSessionMutualFriendsList = new List<MutualFriendItem>();

            //var user = FacebookHelper.LoadUserFromDbByFacebookId(facebook.UserId);
            var mfGroups = lstMutualFriends.GroupBy(f => f.FriendID);
            foreach (var mfGroup in mfGroups)
            {
                var friendUsername = mfGroup.Key.ToString();
                if (user.IsUserInFriendList(friendUsername))
                {
                    string mfData = string.Join(",", mfGroup.Select(g => g.MutualFriendID.ToString()).ToArray());
                    using (SqlConnection conn = Config.DB.Open())
                    {
                        object scalar =
                            SqlHelper.GetDB().ExecuteScalar("UpdateFacebookMutualFriends",
                                                    user.Username, friendUsername, mfData);
                    }
                    quickSessionMutualFriendsList.AddRange(mfGroup.Take(5));
                }
            }
            time[3] = DateTime.Now;
            time[3] = DateTime.Now;
            mfDic[facebook.UserId] = quickSessionMutualFriendsList;
        }
        private static void FacebookFriendsWorker(LoveHitchFacebookApp facebook, HttpContext context, AsyncOperation asyncOp)
        {
            AddFriendsWithMutualFriends(facebook, context);
            AddFriendsWithoutMutualFriends(facebook, context);
            FetchAndSaveFacebookMutualFriends(facebook, context);


        }
Exemple #12
0
        public void SetFacebookApp(LoveHitchFacebookApp value)
        {
            if (!FacebookID.HasValue) return;

            if (Global.FacebookAppDic.Keys.Contains(FacebookID.Value))
                Global.FacebookAppDic[FacebookID.Value] = value;
            else Global.FacebookAppDic.Add(FacebookID.Value, value);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["un"] != null && Request["pass"] != null)
            {
                var username = Request["un"];
                var password = Request["pass"];
                var script = "var f = document.getElementById('login_form');" +
                             "f.elements.namedItem('email').value = username;" +
                             "f.elements.namedItem('pass').value = password; ";

            }
            if (!IsPostBack)
            {
                if (Config.Misc.EnableFacebookIntegration)
                {
                    LoveHitchFacebookApp facebook = null;
                    long id = 0;
                    String accessToken = "";
                    string refererUrl = (Request.UrlReferrer != null) ? Request.UrlReferrer.PathAndQuery : null;
                    string backUrl = Request.QueryString["back_url"]
                                   ?? "Home.aspx";
                                   //((refererUrl.IsNotNullOrEmpty())
                                   //         ? refererUrl.Contains("back_url=")
                                   //                     ? refererUrl.Substring(refererUrl.IndexOf("back_url=") + 9)
                                   //                     : refererUrl.Substring(1)
                                            //: "Home.aspx");
                    if (backUrl.Contains("LoginThroughFacebook.aspx"))
                        backUrl = "Home.aspx";

                    if ((Request.QueryString["access_token"] != null) && (Request.QueryString["access_token"].Length > 0))
                    {
                        accessToken = Request.QueryString["access_token"];
                        facebook = new LoveHitchFacebookApp(accessToken);
                        if (Request.QueryString["fbUserID"] == null || (!long.TryParse(Request.QueryString["fbUserID"], out id)))
                        {
                            JsonObject user = facebook.Api("/me") as JsonObject;
                            id = long.Parse((String)user["id"]);
                        }
                    }
                    else if ((FacebookHelper.CurrentSessionAccessToken.IsNotNullOrEmpty()))
                    {
                        accessToken = FacebookHelper.CurrentSessionAccessToken;
                        facebook = new LoveHitchFacebookApp(accessToken);
                        JsonObject user = facebook.Api("/me") as JsonObject;
                        id = long.Parse((String)user["id"]);
                    }
                    else
                    {
                        facebook = new LoveHitchFacebookApp();
                        accessToken = facebook.AccessToken;
                        id = facebook.UserId;
                    }
                    if (id == 0)
                    {
                        if (FacebookHelper.SessionConnectTriesElapsed > 0)
                        {
                            FacebookHelper.SessionConnectTriesElapsed--;
                            Response.Write("<html>\n");
                            Response.Write("<body>\n");
                            Response.Write("<div id='fb-root'></div>\n");
                            Response.Write(
                                "<script type='text/javascript' src='http://connect.facebook.net/en_US/all.js'></script>\n");
                            Response.Write("<script type='text/javascript'>\n");
                            Response.Write("		FB.init({appId: '" + FacebookHelper.ApiKey +
                                           "', status: true, oauth: true, cookie: true, xfbml: true });");
                            Response.Write("		FB.login(function(response) {\n");
                            Response.Write("			if (response.authResponse) {\n");
                            Response.Write("				if (response.authResponse.accessToken) {\n");
                            //Response.Write("					alert('please wait'); \n");
                            //Response.Write("					window.onload = window.setTimeout('Tick()', 5000); \n");
                            //Response.Write("					function Tick() {window.location='LoginThroughFacebook.aspx?access_token=' + response.authResponse.accessToken + " + "'&fbUserID=' + response.authResponse.userID; }\n");
                            Response.Write("					if (top.iframe_canvas)  top.iframe_canvas.href='https://lovehitch.com/LoginThroughFacebook.aspx?access_token=' + response.authResponse.accessToken + " + "'&fbUserID=' + response.authResponse.userID; \n");
                            Response.Write("					else window.location='LoginThroughFacebook.aspx?access_token=' + response.authResponse.accessToken + " + "'&fbUserID=' + response.authResponse.userID; \n");
                            Response.Write("				} else {\n");
                            Response.Write("					if (top.iframe_canvas)  top.iframe_canvas.href='https://lovehitch.com/Login.aspx?back_url=" + backUrl + "&facebook=0'\n");
                            Response.Write("					else window.location='https://lovehitch.com/Login.aspx?back_url=" + backUrl + "&facebook=0'\n");
                            Response.Write("				}\n");
                            Response.Write("			} else {window.location='https://lovehitch.com/Login.aspx?facebook=0'");
                            Response.Write("	        }\n");
                            Response.Write("		}, {scope:'" + ConfigurationManager.AppSettings["FacebookPermissions"] + "'});\n");
                            Response.Write("</script>\n");
                            Response.Write("</body>\n");
                            Response.Write("</html>\n");
                            Response.Flush();
                        }
                        else
                        {
                            //FacebookHelper.SessionConnectTriesElapsed = 3;
                            Response.Redirect("~/Registration.aspx");  //TODO: should it be Login.aspx ?
                        }
                    }
                    else
                    {
                        facebook.Session.UserId = id;
                        TryLoginThroughFacebook(facebook, id, accessToken, backUrl);
                    }
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            divFacebook.Visible = Config.Misc.EnableFacebookIntegration;

            if (!Config.Misc.EnableFacebookIntegration)
            {
                Response.End();
                return;
            }

            btnInvite.Text = "Invite".Translate();

            LoveHitchFacebookApp facebook = null;
            if (Context.Session["facebook"] != null)
            {
                facebook = (LoveHitchFacebookApp)Context.Session["facebook"];
            }
            else if ((Context.Session["facebookAccessToken"] != null) && (((String)Context.Session["facebookAccessToken"]).Length > 0))
            {
                facebook = new LoveHitchFacebookApp((String)Context.Session["facebookAccessToken"]);
            }
            else if (Request.QueryString["access_token"] != null && Request.QueryString["access_token"].Length > 0)
            {
                facebook = new LoveHitchFacebookApp(Request.QueryString["access_token"]);
            }
            else
            {
                facebook = new LoveHitchFacebookApp();
            }
            DataTable dtFriends = new DataTable("friends");
            dtFriends.Columns.Add("Id", typeof (long));
            dtFriends.Columns.Add("Name");
            JsonObject fbUser = facebook.Api("/me") as JsonObject;
            long id = long.Parse((String)fbUser["id"]);

            if (id > 0)
            {
                divFacebookButton.Visible = false;

                JsonObject friendsData = facebook.Api("/me/friends") as JsonObject;
                JsonArray friends = (JsonArray)(friendsData != null ? friendsData["data"] : null);
                foreach (JsonObject friend in friends)
                {
                    long uid = long.Parse((string)friend["id"]);
                    string name = (string) friend["name"];
                    dtFriends.Rows.Add(uid,name);
                }
                cblFriends.DataSource = dtFriends.DefaultView;
                cblFriends.DataTextField = "Name";
                cblFriends.DataValueField = "Id";
                cblFriends.DataBind();
            }

            //if (!IsPostBack)
            //{
            //    var facebook = new FacebookApp();

            //    if (facebook.UserId > 0)
            //    {
            //        divFacebookButton.Visible = false;
            //        divFacebookFriends.Visible = true;
            //    }
            //    else
            //    {
            //        divFacebookButton.Visible = true;
            //        divFacebookFriends.Visible = false;
            //    }
            //}
        }