/// <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); }
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); } }
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); } }
/// <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); } }
/// <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(); } } }
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); }
/// <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); }
/// <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"); }
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); }
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)); }
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); } }
public abstract void UserUpdateForShare(FbDTO user);
public abstract FbDTO update_user(FbDTO dto);
public abstract FbDTO Save_user(FbDTO dto);
public abstract int usercount(FbDTO dto);
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()); }
public void UserUpdateForShare(FbDTO user) { _ifbpdb.UserUpdateForShare(user); }
/// <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")); }