Ejemplo n.º 1
0
        public virtual IActionResult List(OnlineUserSearchModel searchModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageUsers))
            {
                return(AccessDeniedKendoGridJson());
            }

            //prepare model
            var model = _userModelFactory.PrepareOnlineUserListModel(searchModel);

            return(Json(model));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Prepare online user search model
        /// </summary>
        /// <param name="searchModel">Online user search model</param>
        /// <returns>Online user search model</returns>
        public virtual OnlineUserSearchModel PrepareOnlineUserSearchModel(OnlineUserSearchModel searchModel)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            //prepare page parameters
            searchModel.SetGridPageSize();

            return(searchModel);
        }
Ejemplo n.º 3
0
        public SummaryDataPageResponse <OnlineUser> GetOnlineUsers(OnlineUserSearchModel searchModel)
        {
            var onlineUserList = GetAllOnlineUsers();


            var count = onlineUserList.Count;
            var query = onlineUserList.AsQueryable();

            query = ApplySortingRule(query, searchModel, x => x.SessionStartedDate);
            query = ApplyPagingRule(query, searchModel);


            return(new SummaryDataPageResponse <OnlineUser>(query.ToList(), searchModel.PageNumber, count, false));
        }
Ejemplo n.º 4
0
        /// <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);
        }