Пример #1
0
        /// <summary>
        /// Checks to see if the user just shared to a single network and hasn't already earned the badge
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        private bool UnlockedSingleShareBadge(FbDTO user)
        {
            var count = 0;

            if (user.SharedToFacebookOn != null && user.SharedToFacebookOn != DateTime.MinValue)
            {
                count++;
            }
            if (user.SharedToTwitterOn != null && user.SharedToTwitterOn != DateTime.MinValue)
            {
                count++;
            }
            if (user.SharedToPinterestOn != null && user.SharedToPinterestOn != DateTime.MinValue)
            {
                count++;
            }

            // If this is the first share, attempt to assign and return the result. if true this means we should notify
            if (count == 1)
            {
                return(_ipres.AssignBadge(user.UID, 21, null));
            }

            return(false);
        }
Пример #2
0
        public override FbDTO Save_user(FbDTO dto)
        {
            using (var context = new PHCEntities())
            {
                FbDTO fb = new FbDTO();
                try
                {
                    User usr = new User();
                    usr.FirstName  = dto.Fname;
                    usr.LastName   = dto.Lname;
                    usr.Gender     = dto.Sex;
                    usr.Email      = dto.Email;
                    usr.fbid       = dto.fbid;
                    usr.acesstoken = dto.acctoken;
                    //    usr.Address = dto.Address;
                    //    usr.Link = dto.Link;

                    context.AddToUsers(usr);
                    context.SaveChanges();


                    fb.UID      = usr.UID;
                    fb.Email    = usr.Email;
                    fb.Fname    = usr.FirstName;
                    fb.acctoken = usr.acesstoken;
                    fb.fbid     = usr.fbid;
                }
                catch (Exception)
                {
                    throw;
                }
                return(fb);
            }
        }
Пример #3
0
 public override List <FbDTO> users_list()
 {
     using (var context = new PHCEntities())
     {
         List <FbDTO> ldto = new List <FbDTO>();
         FbDTO        dto  = null;
         try
         {
             List <User> usr = new List <User>();
             usr = context.Users.ToList();
             if (usr != null)
             {
                 foreach (User u in usr)
                 {
                     dto       = new FbDTO();
                     dto.Fname = u.FirstName;
                     dto.Lname = u.LastName;
                     dto.Sex   = u.Gender;
                     dto.Email = u.Email;
                     dto.UID   = u.UID;
                     dto.fbid  = u.fbid;
                     ldto.Add(dto);
                 }
             }
         }
         catch (Exception)
         {
             throw;
         }
         return(ldto);
     }
 }
Пример #4
0
        /// <summary>
        /// Returns a single user by facebookId
        /// </summary>
        /// <param name="fbId"></param>
        /// <returns></returns>
        public override FbDTO GetUserByFacebookId(string fbId)
        {
            using (var context = new PHCEntities())
            {
                FbDTO fb  = new FbDTO();
                var   usr = context.Users.Where(p => p.fbid == fbId).SingleOrDefault();

                if (usr == null)
                {
                    return(fb);
                }

                fb.UID                 = usr.UID;
                fb.Email               = usr.Email;
                fb.Fname               = usr.FirstName;
                fb.Lname               = usr.LastName;
                fb.Sex                 = usr.Gender;
                fb.acctoken            = usr.acesstoken;
                fb.fbid                = usr.fbid;
                fb.SharedToFacebookOn  = usr.SharedToFacebookOn.HasValue ? usr.SharedToFacebookOn.Value : DateTime.MinValue;
                fb.SharedToPinterestOn = usr.SharedToPinterestOn.HasValue ? usr.SharedToPinterestOn.Value : DateTime.MinValue;
                fb.SharedToTwitterOn   = usr.SharedToTwitterOn.HasValue ? usr.SharedToTwitterOn.Value : DateTime.MinValue;

                return(fb);
            }
        }
Пример #5
0
        /// <summary>
        /// Updates a user and ensures the share fields are included
        /// </summary>
        /// <param name="dto"></param>
        public override void UserUpdateForShare(FbDTO dto)
        {
            using (var context = new PHCEntities())
            {
                User usr = context.Users.Where(p => p.fbid == dto.fbid).SingleOrDefault();
                if (usr != null)
                {
                    usr.FirstName  = dto.Fname;
                    usr.LastName   = dto.Lname;
                    usr.Gender     = dto.Sex;
                    usr.Email      = dto.Email;
                    usr.fbid       = dto.fbid;
                    usr.acesstoken = dto.acctoken;
                    if (dto.SharedToFacebookOn > DateTime.MinValue)
                    {
                        usr.SharedToFacebookOn = dto.SharedToFacebookOn;
                    }
                    if (dto.SharedToPinterestOn > DateTime.MinValue)
                    {
                        usr.SharedToPinterestOn = dto.SharedToPinterestOn;
                    }
                    if (dto.SharedToTwitterOn > DateTime.MinValue)
                    {
                        usr.SharedToTwitterOn = dto.SharedToTwitterOn;
                    }

                    context.SaveChanges();
                }
            }
        }
Пример #6
0
        public override int usercount(FbDTO dto)
        {
            int cnt;

            using (var context = new PHCEntities())
            {
                cnt = context.Users.Where(p => p.fbid == dto.fbid).Count();
            }
            return(cnt);
        }
Пример #7
0
 /// <summary>
 /// Returns true if the user shared to all three services and hasn't yet received the badge
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 private bool UnlockedSuperShareBadge(FbDTO user)
 {
     if (user.SharedToFacebookOn != null && user.SharedToFacebookOn != DateTime.MinValue &&
         user.SharedToTwitterOn != null && user.SharedToTwitterOn != DateTime.MinValue &&
         user.SharedToPinterestOn != null && user.SharedToPinterestOn != DateTime.MinValue
         )
     {
         return(_ipres.AssignBadge(user.UID, 20, null));
     }
     return(false);
 }
Пример #8
0
 /// <summary>
 /// Returns 'single', 'super', or 'na' based on if this user just unlocked a badge
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 private string GetShareBadgeResponse(FbDTO user)
 {
     if (UnlockedSingleShareBadge(user))
     {
         return("single");
     }
     else if (UnlockedSuperShareBadge(user))
     {
         return("super");
     }
     return("na");
 }
Пример #9
0
        private FbDTO Save_Update_profile(FbDTO dto)
        {
            if (dto != null)
            {
                _ifbp = (FbprofilePres)_ifbp;
                int cnt = _ifbp.userCount(dto);
                if (cnt == 0)
                {
                    FbDTO fb = _ifbp.Save_user(dto);
                    if (fb != null)
                    {
                        adto          = new FbDTO();
                        adto.UID      = fb.UID;
                        adto.Fname    = fb.Fname;
                        adto.Lname    = fb.Lname;
                        adto.Sex      = fb.Sex;
                        adto.Email    = fb.Email;
                        adto.acctoken = fb.acctoken;
                        adto.fbid     = fb.fbid;
                        adto.rcnt     = 1;
                    }
                }
                else
                {
                    FbDTO fb = _ifbp.update_user(dto);

                    if (fb != null)
                    {
                        adto          = new FbDTO();
                        adto.UID      = fb.UID;
                        adto.Fname    = fb.Fname;
                        adto.Lname    = fb.Lname;
                        adto.Sex      = fb.Sex;
                        adto.Email    = fb.Email;
                        adto.acctoken = fb.acctoken;
                        adto.fbid     = fb.fbid;
                        adto.rcnt     = 2;
                    }
                }
            }
            return(adto);
        }
Пример #10
0
        public ActionResult Index()
        {
            //if (ControllerContext.HttpContext.Request.Cookies.Count == 0)
            //    return RedirectToAction("NoCookies");
            //// Safari/IE cookie issues
            //var userAgent = ControllerContext.HttpContext.Request.UserAgent.ToLower();
            //if (!userAgent.Contains("chrome") && userAgent.Contains("safari") )
            //{
            //    if (Request.QueryString["start_session"] != null) // redirect to the full app experience
            //        return Redirect(ConfigurationHelper.FacebookAppUrl);

            //    if (Request.QueryString["sid"] == null)
            //        return Redirect(ConfigurationHelper.SiteUrl + "/?sid=" + ControllerContext.HttpContext.Session.SessionID );
            //    var sid = ControllerContext.HttpContext.Session.SessionID;
            //    if (string.IsNullOrWhiteSpace(sid) || Request.QueryString["sid"] != sid)
            //    {
            //        Response.Write("<script>");
            //        Response.Write("top.window.location='?start_session=true';");
            //        Response.Write("</script>");
            //        Response.End();
            //        return View();
            //    }
            //}

            adto                = null;
            ViewBag.appId       = FB_APP_ID;
            ViewBag.SkipFbLogin = Request.QueryString["forcesignup"] == null ? false : true;

            var model = new SignupViewModel();

            model.PetType = new SelectList(new Dictionary <int, string>()
            {
                { 0, "Type" },
                { 1, "Dog" },
                { 2, "Cat" }
            }
                                           , "key", "value");

            return(View(model));
        }
Пример #11
0
        public override FbDTO update_user(FbDTO dto)
        {
            using (var context = new PHCEntities())
            {
                FbDTO fb = new FbDTO();
                try
                {
                    User usr = context.Users.Where(p => p.fbid == dto.fbid).SingleOrDefault();
                    if (usr != null)
                    {
                        usr.FirstName  = dto.Fname;
                        usr.LastName   = dto.Lname;
                        usr.Gender     = dto.Sex;
                        usr.Email      = dto.Email;
                        usr.fbid       = dto.fbid;
                        usr.acesstoken = dto.acctoken;

                        //   usr.Address = dto.Address;

                        //    usr.Link = dto.Link;


                        context.SaveChanges();
                    }


                    fb.UID      = usr.UID;
                    fb.Email    = usr.Email;
                    fb.Fname    = usr.FirstName;
                    fb.acctoken = usr.acesstoken;
                    fb.fbid     = usr.fbid;
                }
                catch (Exception)
                {
                    throw;
                }
                return(fb);
            }
        }
Пример #12
0
 public abstract void UserUpdateForShare(FbDTO user);
Пример #13
0
 public abstract FbDTO update_user(FbDTO dto);
Пример #14
0
 public abstract FbDTO  Save_user(FbDTO dto);
Пример #15
0
 public abstract int usercount(FbDTO dto);
Пример #16
0
        public ActionResult savedet(string id, string MN)
        {
            string fname = id;
            // string mname = "";       //0
            string lname = "";       //0
            string sex   = "";       //1

            string fbid  = "";       //2
            string token = "";       //3

            #region Retrieve Email


            string email   = "";
            string details = "";

            string[] Retrieveemail = MN.Split('~');
            int      m             = 0;
            foreach (string e in Retrieveemail)
            {
                if (m == 0)
                {
                    details = e;
                    m++;
                }
                else
                {
                    email = e;
                    m     = 0;
                }
            }

            #endregion

            #region Retrieve Details


            string[] RetrieveDetails = details.Split('?');
            foreach (string d in RetrieveDetails)
            {
                if (m == 0)
                {
                    lname = d;
                    m++;
                }
                else if (m == 1)
                {
                    sex = d;
                    m++;
                }
                else if (m == 2)
                {
                    fbid = d;
                    m++;
                }
                else if (m == 3)
                {
                    token = d;
                    m     = 0;
                }


                else
                {
                    m = 0;
                }
            }


            #endregion



            FbDTO dto = new FbDTO();
            dto.Email = email;
            dto.Fname = fname;
            dto.Lname = lname;
            dto.Sex   = sex;


            dto.fbid     = fbid;
            dto.acctoken = token;

            Save_Update_profile(dto);
            return(View());
        }
Пример #17
0
 public void UserUpdateForShare(FbDTO user)
 {
     _ifbpdb.UserUpdateForShare(user);
 }
Пример #18
0
        /// <summary>
        /// Callback after the initial facebook oauth request
        /// </summary>
        /// <returns></returns>
        public ActionResult FacebookCallback()
        {
            Response.AddHeader("P3P:CP", "IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT");

            var code  = Request.QueryString["code"].Replace("#_=_", "");
            var fbUrl = "https://graph.facebook.com/oauth/access_token?client_id=" + FB_APP_ID
                        + "&redirect_uri=" + FB_REDIRECT_URL
                        + "&client_secret=" + FB_SECRET
                        + "&code=" + code;

            var result = new System.Net.WebClient().DownloadString(fbUrl);
            var token  = result.Split('&')[0].Split('=')[1];

            // store token in user data
            Session[FB_AUTH_TOKEN_KEY] = token;

            // get the current user
            var     fbClient = new FacebookClient(token);
            dynamic fbUser   = fbClient.Get("/me");

            // convert the user information into our data model
            FbDTO user = Save_Update_profile(new FbDTO()
            {
                fbid     = fbUser.id,
                Username = String.IsNullOrWhiteSpace(fbUser.username) ? fbUser.id : fbUser.username,
                Email    = fbUser.email,
                Fname    = fbUser.first_name,
                Lname    = fbUser.last_name,
                Sex      = fbUser.gender,
                acctoken = token
            });

            // convert our pet signup model and save
            var model      = Session[FB_USER_DATA_KEY] as SignupPostModel;
            var petProfile = _ifbp.SavePetDetSignUp(new PetProfileDTO()
            {
                PetName = model.PetName,
                //PetBreed = model.PetBreed,
                pcid = model.PetType,
                UID  = user.UID
            });

            // Award this first badge
            //
            // TODO: Ensure user never gets this badge more than once
            //
            _petService.SaveFirstBadge(user.UID, petProfile.PID);

            // get the badge count

            var pbcnt = _petService.GetBadgeCount(user.UID);

            if (pbcnt.badgecount == 1)
            {
                HttpContext.Session["ShowFirstBadgeModel"] = true;
            }
            else
            {
                HttpContext.Session.Remove("ShowFirstBadgeModel");
            }

            // Stash our user in the session
            HttpContext.Session[USER] = adto;



            // hack to remove the facebook appened #_-_
            return(RedirectToAction("Index", "Home"));
        }