/// <summary>
        /// Prepare paged online user list model
        /// </summary>
        /// <param name="searchModel">Online user search model</param>
        /// <returns>Online user list model</returns>
        public virtual OnlineUserListModel PrepareOnlineUserListModel(OnlineUserSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            //get parameters to filter users
            var lastActivityFrom = DateTime.UtcNow.AddMinutes(-_userSettings.OnlineUserMinutes);

            //get online users
            var users = _userService.GetOnlineUsers(userRoleIds: null,
                                                    lastActivityFromUtc: lastActivityFrom,
                                                    pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize);

            //prepare list model
            var model = new OnlineUserListModel
            {
                Data = users.Select(user =>
                {
                    //fill in model values from the entity
                    var userModel = new OnlineUserModel
                    {
                        Id = user.Id
                    };

                    //convert dates to the user time
                    userModel.LastActivityDate = _dateTimeHelper.ConvertToUserTime(user.LastActivityDateUtc, DateTimeKind.Utc);

                    //fill in additional values (not existing in the entity)
                    userModel.UserInfo = user.IsRegistered()
                        ? user.Email : _localizationService.GetResource("Admin.Users.Guest");
                    userModel.LastIpAddress = _userSettings.StoreIpAddresses
                        ? user.LastIpAddress : _localizationService.GetResource("Admin.Users.OnlineUsers.Fields.IPAddress.Disabled");
                    userModel.Location        = _geoLookupService.LookupCountryName(user.LastIpAddress);
                    userModel.LastVisitedPage = _userSettings.StoreLastVisitedPage
                        ? _genericAttributeService.GetAttribute <string>(user, NopUserDefaults.LastVisitedPageAttribute)
                        : _localizationService.GetResource("Admin.Users.OnlineUsers.Fields.LastVisitedPage.Disabled");

                    return(userModel);
                }),
                Total = users.TotalCount
            };

            return(model);
        }
Example #2
0
        /// <summary>
        /// 在线用户列表
        /// </summary>
        /// <param name="provinceId">省id</param>
        /// <param name="cityId">市id</param>
        /// <param name="regionId">区/县id</param>
        /// <param name="sortColumn">排序列</param>
        /// <param name="sortDirection">排序方向</param>
        /// <param name="pageNumber">当前页数</param>
        /// <param name="pageSize">每页数</param>
        /// <returns></returns>
        public ActionResult OnlineUserList(string sortColumn, string sortDirection, int provinceId = -1, int cityId = -1, int regionId = -1, int pageNumber = 1, int pageSize = 15)
        {
            int locationType = 0, locationId = 0;

            if (regionId > 0)
            {
                locationType = 2;
                locationId   = regionId;
            }
            else if (cityId > 0)
            {
                locationType = 1;
                locationId   = cityId;
            }
            else if (provinceId > 0)
            {
                locationType = 0;
                locationId   = provinceId;
            }

            string    sort      = OnlineUsers.GetOnlineUserListSort(sortColumn, sortDirection);
            PageModel pageModel = new PageModel(pageSize, pageNumber, OnlineUsers.GetOnlineUserCount(locationType, locationId));

            OnlineUserListModel model = new OnlineUserListModel()
            {
                OnlineUserList = OnlineUsers.GetOnlineUserList(pageModel.PageSize, pageModel.PageNumber, locationType, locationId, sort),
                PageModel      = pageModel,
                SortColumn     = sortColumn,
                SortDirection  = sortDirection,
                ProvinceId     = provinceId,
                CityId         = cityId,
                RegionId       = regionId
            };

            MallUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&sortColumn={3}&sortDirection={4}&provinceId={5}&cityId={6}&regionId={7}",
                                                          Url.Action("onlineuserlist"),
                                                          pageModel.PageNumber, pageModel.PageSize,
                                                          sortColumn, sortDirection,
                                                          provinceId, cityId, regionId));
            return(View(model));
        }
Example #3
0
        /// <summary>
        /// 在线用户列表
        /// </summary>
        /// <param name="provinceId">省id</param>
        /// <param name="cityId">市id</param>
        /// <param name="regionId">区/县id</param>
        /// <param name="pageNumber">当前页数</param>
        /// <param name="pageSize">每页数</param>
        /// <returns></returns>
        public ActionResult OnlineUserList(int provinceId = -1, int cityId = -1, int regionId = -1, int pageNumber = 1, int pageSize = 15)
        {
            int locationType = 0, locationId = 0;

            if (regionId > 0)
            {
                locationType = 2;
                locationId   = regionId;
            }
            else if (cityId > 0)
            {
                locationType = 1;
                locationId   = cityId;
            }
            else if (provinceId > 0)
            {
                locationType = 0;
                locationId   = provinceId;
            }

            PageModel pageModel = new PageModel(pageSize, pageNumber, OnlineUsers.GetOnlineUserCount(locationType, locationId));

            OnlineUserListModel model = new OnlineUserListModel()
            {
                PageModel      = pageModel,
                OnlineUserList = OnlineUsers.GetOnlineUserList(pageModel.PageSize, pageModel.PageNumber, locationType, locationId),
                ProvinceId     = provinceId,
                CityId         = cityId,
                RegionId       = regionId
            };

            ShopUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&provinceId={3}&cityId={4}&regionId={5}",
                                                          Url.Action("onlineuserlist"),
                                                          pageModel.PageNumber, pageModel.PageSize,
                                                          provinceId, cityId, regionId));
            return(View(model));
        }