private bool FillFacebookInfo(ClientInfo ManagedUserInfo)
        {
            if (ManagedUserInfo != null)
                if (!string.IsNullOrEmpty(ManagedUserInfo.FacebookId))
                {
                    using (Database db = new MySqlDatabase())
                    {
                        ClientInfo ci = db.GetClientInfo(Convert.ToInt64(Session["managed.userid"]));

                        Session["FBACC"] = db.GetSocialCredential(ci.ClientId, SocialConnector.Facebook, "accesstoken");

                        string expiresRaw = db.GetSocialCredential(ci.ClientId, SocialConnector.Facebook, "accesstokenexpires");

                        Facebook.AuthenticationService authServices = new Facebook.AuthenticationService();

                        if (authServices.TryAuthenticateAdminFBCred(expiresRaw, Convert.ToString(Session["FBACC"])))
                        {
                            Me me = authServices.GetMe(Convert.ToString(Session["FBACC"]));

                            try
                            {
                                Session["FBID"] = me.Id;
                            }
                            catch { }

                            FillFBFriendList(Convert.ToString(Session["FBACC"]));

                            FillFBPageList(Convert.ToString(Session["FBACC"]));

                            cbxShareToUserWall.Enabled = true;

                            cbxShareToUserWall.Visible = true;

                            divShareToUserWall.Visible = true;

                            return true;
                        }
                        else
                        {
                            Session["FBACC"] = Session["FBID"] = null;

                            db.RemoveSocialCredential(ci.ClientId, SocialConnector.Facebook);

                            db.UpdateFacebookID(ci.ClientId);

                            FillFBFriendList(null);

                            FillFBPageList(null);

                            cbxShareToUserWall.Enabled = false;

                            cbxShareToUserWall.Visible = false;

                            divShareToUserWall.Visible = false;

                            return false;
                        }
                    }
                }

            Session["FBACC"] = Session["FBID"] = null;

            FillFBFriendList(null);

            FillFBPageList(null);

            cbxShareToUserWall.Enabled = false;

            cbxShareToUserWall.Visible = false;

            divShareToUserWall.Visible = false;

            return false;
        }
        private bool FillSoundCloudInfo(ClientInfo ManagedUserInfo)
        {
            if (ManagedUserInfo != null)
                if (!string.IsNullOrEmpty(ManagedUserInfo.SoundCloudId))
                {
                    using (Database db = new MySqlDatabase())
                    {
                        ClientInfo ci = db.GetClientInfo(Convert.ToInt64(Session["managed.userid"]));

                        Session["soundCloudAccessToken"] = db.GetSocialCredential(ci.ClientId, SocialConnector.SoundCloud, "access_token");
                    }

                    cbxSendToSoundCloud.Enabled = true;
                    SoundCloudMsg.Enabled = true;
                    cbxSendToSoundCloud.Visible = true;

                    return true;
                }

            Session["soundCloudAccessToken"] = null;

            cbxSendToSoundCloud.Enabled = false;
            cbxSendToSoundCloud.Visible = false;
            SoundCloudMsg.Enabled = false;

            return false;
        }
        private void FillTwitterInfo(ClientInfo ManagedUserInfo)
        {
            if (ManagedUserInfo != null)
                if (!string.IsNullOrEmpty(ManagedUserInfo.TwitterId))
                {
                    using (Database db = new MySqlDatabase())
                    {
                        ClientInfo ci = db.GetClientInfo(Convert.ToInt64(Session["managed.userid"]));

                        Session["AccessToken"] = db.GetSocialCredential(ManagedUserInfo.ClientId, SocialConnector.Twitter, "oauthtoken");

                        Session["AccessTokenSecret"] = db.GetSocialCredential(ManagedUserInfo.ClientId, SocialConnector.Twitter, "oauthverifier");
                    }

                    cbxSendToTwitter.Enabled = true;

                    TwitterMsg.Enabled = true;

                    cbxSendToTwitter.Visible = true;

                    return;
                }

            Session["AccessToken"] = Session["AccessTokenSecret"] = null;

            cbxSendToTwitter.Enabled = false;

            TwitterMsg.Enabled = false;

            cbxSendToTwitter.Visible = false;
        }
        private void FillManagedArtistDropDown()
        {
            ddlManagedArtist.Items.Clear();
            ddlManagedArtist.Items.Add(new ListItem("---", "0"));

            using (Database db = new MySqlDatabase())
            {
                UserInfo[] uis = db.GetManagedUsers(Util.UserId, 1);

                foreach (UserInfo ui in uis)
                {
                    ClientInfo ci = db.GetClientInfo(ui.UserId);
                    ddlManagedArtist.Items.Add(new ListItem(ci.GetFullName(), ui.UserId.ToString()));
                }

                if (!string.IsNullOrEmpty(Request["id"]))
                {
                    Session["managed.userid"] = Convert.ToInt64(Request["id"]);

                    IsrcHandle.Text = GetIsrcCode(Convert.ToInt64(Session["managed.userid"]));

                    ddlManagedArtist.SelectedValue = Request.QueryString["id"].ToString();

                    ClientInfo _ManagedUserInfo = db.GetClientInfo(Convert.ToInt64(Request.QueryString["id"]));

                    string accessToken = db.GetSocialCredential(_ManagedUserInfo.ClientId, SocialConnector.Facebook, "accesstoken");

                    string expiresRaw = db.GetSocialCredential(_ManagedUserInfo.ClientId, SocialConnector.Facebook, "accesstokenexpires");

                    bool isNotExpired = true;

                    Facebook.AuthenticationService authService = new Facebook.AuthenticationService();

                    if (authService.TryAuthenticateAdminFBCred(expiresRaw, accessToken))
                    {
                        isNotExpired = true;
                    }
                    else
                    {
                        db.RemoveSocialCredential(_ManagedUserInfo.ClientId, SocialConnector.Facebook);
                        db.UpdateFacebookID(_ManagedUserInfo.ClientId);

                        isNotExpired = false;
                    }

                }
            }
        }
        private void FillTwitterInfo()
        {
            if (!string.IsNullOrEmpty(_clientInfo.TwitterId))
            {
                using (Database db = new MySqlDatabase())
                {
                    ClientInfo ci = db.GetClientInfo(Util.UserId);

                    Session["AccessToken"] = db.GetSocialCredential(ci.ClientId, SocialConnector.Twitter, "oauthtoken");

                    Session["AccessTokenSecret"] = db.GetSocialCredential(_clientInfo.ClientId, SocialConnector.Twitter, "oauthverifier");
                }

                cbxSendToTwitter.Enabled = true;

                TwitterMsg.Enabled = true;

                cbxSendToTwitter.Visible = true;

                return;
            }

            cbxSendToTwitter.Enabled = false;

            TwitterMsg.Enabled = false;

            cbxSendToTwitter.Visible = false;
        }
        private bool FillSoundCloudInfo()
        {
            if (!string.IsNullOrEmpty(_clientInfo.SoundCloudId))
            {
                using (Database db = new MySqlDatabase())
                {
                    ClientInfo ci = db.GetClientInfo(Util.UserId);

                    Session["soundCloudAccessToken"] = db.GetSocialCredential(ci.ClientId, SocialConnector.SoundCloud, "access_token");
                }

                cbxSendToSoundCloud.Enabled = true;

                SoundCloudMsg.Enabled = true;

                cbxSendToSoundCloud.Visible = true;

                return true;
            }

            cbxSendToSoundCloud.Enabled = false;

            SoundCloudMsg.Enabled = false;

            cbxSendToSoundCloud.Visible = false;

            return false;
        }
        /// <summary>
        /// Authenticate with social credentials from database. Also validates at Facebook.
        /// </summary>
        /// <param name="me">Me info</param>
        /// <param name="accessToken">Access token</param>
        /// <returns>True if authenticated, false if not.</returns>
        public bool TryAuthenticate(out Me me, out string accessToken)
        {
            if (_clientInfo == null) GetUser();

            me = null;
            accessToken = "";
            using (Database db = new MySqlDatabase())
            {
                accessToken = db.GetSocialCredential(_clientInfo.ClientId, SocialConnector.Facebook, "accesstoken");
                if (String.IsNullOrEmpty(accessToken))
                    return false;

                string expiresRaw = db.GetSocialCredential(_clientInfo.ClientId, SocialConnector.Facebook, "accesstokenexpires");
                if (String.IsNullOrEmpty(expiresRaw))
                    return false;

                DateTime expires = DateTime.MinValue;
                if (!DateTime.TryParse(expiresRaw, out expires))
                    return false;
                if (expires < DateTime.Now)
                    return false;

                me = GetMe(accessToken);
                if (me == null)
                    return false;
            }

            return true;
        }
        public bool TryAuthenticate(out string oauthtoken, out string oauthverifier)
        {
            if (_clientInfo == null) GetUser();

            oauthtoken = null;
            oauthverifier = null;

            using (Database db = new MySqlDatabase())
            {
                oauthtoken = db.GetSocialCredential(_clientInfo.ClientId, SocialConnector.Twitter, "oauthtoken");
                if (String.IsNullOrEmpty(oauthtoken))
                    return false;

                oauthverifier = db.GetSocialCredential(_clientInfo.ClientId, SocialConnector.Twitter, "oauthverifier");
                if (String.IsNullOrEmpty(oauthverifier))
                    return false;
            }

            if (IsTwitterAccessTokenValid(oauthtoken, oauthverifier) == false)
                return false;

            return true;
        }