Example #1
0
        public virtual ActionResult UserWidgetHover(int userid)
        {
            User user = _aService.GetUser(userid, "Profile");
            UserHoverViewModel model = new UserHoverViewModel();

            model = Mapper.Map <User, UserHoverViewModel>(user);
            model.FollowStatus = user.Followers.Count(t => t.Id == User.Identity.GetUserId <int>()) > 0;
            UserFriendship friendship1 = user.PassiveRelationship.Where(r => r.UserId == User.Identity.GetUserId <int>()).FirstOrDefault();
            UserFriendship friendship2 = user.ActiveRelationships.Where(r => r.TargetUserId == User.Identity.GetUserId <int>()).FirstOrDefault();

            if (friendship1 != default(UserFriendship))
            {
                switch (friendship1.Status)
                {
                case RelationshipEnum.Requesting:
                    model.RequestStatus = FriendStatusEnum.ActiveRequesting;
                    break;

                case RelationshipEnum.Friend:
                    model.RequestStatus = FriendStatusEnum.Friend;
                    break;

                case RelationshipEnum.Blocked:
                    model.RequestStatus = FriendStatusEnum.Blocked;
                    break;

                default:
                    model.RequestStatus = FriendStatusEnum.Stranger;
                    break;
                }
            }
            else if (friendship2 != default(UserFriendship))
            {
                switch (friendship2.Status)
                {
                case RelationshipEnum.Requesting:
                    model.RequestStatus = FriendStatusEnum.PasssiveRequesting;
                    break;

                case RelationshipEnum.Friend:
                    model.RequestStatus = FriendStatusEnum.Friend;
                    break;

                case RelationshipEnum.Blocked:
                    model.RequestStatus = FriendStatusEnum.Blocked;
                    break;

                default:
                    model.RequestStatus = FriendStatusEnum.Stranger;
                    break;
                }
            }
            else
            {
                model.RequestStatus = FriendStatusEnum.Stranger;
            }
            return(PartialView("Widgets/_UserHoverWidget", model));
        }
Example #2
0
        public async Task <JsonResult> Hover(int userId, string username, string userAppId)
        {
            if (!Request.ContentType.Contains("json"))
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(new { success = false, message = "Bad request type." }));
            }
            using (var db = new ZapContext())
            {
                int hoverUserId      = userId; // take from parameter passed
                var callingUserAppId = User.Identity.GetUserId();
                var usernameClean    = username.Trim();

                // If a username was provided - use it in search, otherwise don't use.  This is built as a separate query
                // here to reduce the sql query payload.
                IQueryable <User> uiq;
                if (hoverUserId > 0)
                {
                    uiq = db.Users
                          .Where(u => u.Id == hoverUserId);
                }
                else if (userAppId != null)
                {
                    uiq = db.Users
                          .Where(u => u.AppId == userAppId);
                }
                else if (!String.IsNullOrEmpty(username))
                {
                    uiq = db.Users
                          .Where(u => u.Name == usernameClean);
                }
                else
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(Json(new { success = false, message = "Invalid parameters" }));
                }

                var userInfo = await uiq
                               .Select(u => new
                {
                    u.Id,
                    u.AppId,
                    u.Name,
                    u.Reputation,
                    u.ProfileImage.Version,
                    u.IsOnline,
                    IsFollowed = callingUserAppId == null ? false : u.Followers.Select(f => f.AppId).Contains(callingUserAppId),
                })
                               .FirstOrDefaultAsync().ConfigureAwait(true);

                if (userInfo == null)
                {
                    Response.StatusCode = (int)HttpStatusCode.NotFound;
                    return(Json(new { success = false, message = "User not found." }));
                }

                UserHoverViewModel vm = new UserHoverViewModel()
                {
                    UserId              = userInfo.Id,
                    AppId               = userInfo.AppId,
                    Name                = userInfo.Name,
                    Reputation          = userInfo.Reputation,
                    ProfileImageVersion = userInfo.Version,
                    IsFollowing         = userInfo.IsFollowed,
                    IsIgnored           = false, // TODO?
                    IsOnline            = userInfo.IsOnline,
                    IsSelf              = userInfo.AppId == callingUserAppId,
                };
                string HTMLString = RenderPartialViewToString("_PartialUserHover", model: vm);
                return(Json(new { success = true, HTMLString }));
            }
        }