コード例 #1
0
        public List <OnlineUserModel> lookUpUserOnline()
        {
            //Create own query and join the lists together with ID as the common property
            var query = from session in userSessionList
                        join user in userList on session.userId equals user.id into uid
                        join product in productList on session.productId equals product.id into pid
                        select new { userId = session.userId, name = uid, product = pid };

            foreach (var item in query)
            {
                foreach (var uid in item.name)
                {
                    foreach (var pid in item.product)
                    {
                        onlineUser = new OnlineUserModel()
                        {
                            id             = item.userId,
                            name           = uid.name,
                            viewingProduct = pid
                        };
                        onlineUserList.Add(onlineUser);
                        // System.Console.WriteLine($"Users online: {uid.name} \t ID: {item.userId} \t Product: {pid.id}");
                    }
                }
            }
            return(onlineUserList);
        }
コード例 #2
0
        //Highly coupled with onlineUser now
        public List <ProductModel> recommendAMovieByGenre(OnlineUserModel onlineUser)
        {
            ProductModel viewedProduct = onlineUser.viewingProduct;

            //Look at genre user is viewing,
            //Make sure the recommended is not the same as the one he's viewing
            suggestedList = productList.FindAll(x => x.keywordOne ==
                                                viewedProduct.keywordOne && x.id != viewedProduct.id ||
                                                x.keywordTwo == viewedProduct.keywordTwo && x.id != viewedProduct.id ||
                                                x.keywordThree == viewedProduct.keywordThree && x.id != viewedProduct.id ||
                                                x.keywordFour == viewedProduct.keywordFour && x.id != viewedProduct.id ||
                                                x.keywordFive == viewedProduct.keywordFive && x.id != viewedProduct.id);

            List <ProductModel> betterSuggestList = new List <ProductModel>();

            //Max 3 suggestions
            for (int i = 0; i < 4; i++)
            {
                betterSuggestList.Add(suggestedList[i]);
            }
            Random random       = new Random();
            int    randomNumber = random.Next(0, 3);

            onlineUser.suggestedProduct = betterSuggestList[randomNumber];

            // foreach (var item in suggestedList)
            // {
            //     System.Console.WriteLine($"Suggested: {item.id}");
            // }

            return(betterSuggestList);
        }
コード例 #3
0
 public async Task RemoveUser(OnlineUserModel user)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     onlineUsers.OnlineUsers.Remove(user);
     await onlineUsers.SaveAsync();
 }
コード例 #4
0
 public async Task AddOnlineUser(OnlineUserModel onlineUserModel)
 {
     if (onlineUserModel == null)
     {
         throw new ArgumentNullException(nameof(onlineUserModel));
     }
     onlineUsers.OnlineUsers.Add(onlineUserModel);
     await onlineUsers.SaveAsync();
 }
コード例 #5
0
        public override async Task OnDisconnectedAsync(Exception ex)
        {
            OnlineUserModel _loggedUser = GetLoggedUser();

            if (_loggedUser != null)
            {
                await _onlineUsers.RemoveUser(_loggedUser);
            }
            await base.OnDisconnectedAsync(ex);
        }
コード例 #6
0
        public static OnlineUserModel GetOnlineUsers()
        {
            DateTime        todayDate = DateTimeHelper.Today();
            OnlineUserModel model     = new OnlineUserModel();

            model.OnlineUsers = EmployeesRepositories.GetUsersSignIn(todayDate);
            model.NotComeUser = EmployeesRepositories.GetNotComeUser(todayDate);
            model.LeaveUser   = EmployeesRepositories.GetUserLeaved(todayDate);
            model.Date        = DateTimeHelper.Today();
            return(model);
        }
コード例 #7
0
        private OnlineUserModel GetLoggedUser()
        {
            OnlineUserModel user = new OnlineUserModel
            {
                Id        = Context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value,
                FirstName = Context.User.Claims.FirstOrDefault(c => c.Type == "FirstName").Value,
                LastName  = Context.User.Claims.FirstOrDefault(c => c.Type == "LastName").Value
            };

            return(user);
        }
コード例 #8
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);
        }
コード例 #9
0
        public override async Task OnConnectedAsync()
        {
            OnlineUserModel _loggedUser = GetLoggedUser();

            if (!string.IsNullOrWhiteSpace(_loggedUser.Id))
            {
                if (_onlineUsers.IsUserOnline(_loggedUser.Id))
                {
                    await _onlineUsers.RemoveUser(_loggedUser);
                }
                else
                {
                    _loggedUser.NotificationConnectionId = Context.ConnectionId;
                    await _onlineUsers.AddOnlineUser(_loggedUser);
                }
            }
            await base.OnConnectedAsync();
        }
コード例 #10
0
        public ActionResult OnlineUser()
        {
            OnlineUserModel model = new OnlineUserModel();

            try
            {
                model = EmployeesLogic.GetOnlineUsers();
            }
            catch (Exception e)
            {
                LogsLogic.InsertLog(new Log()
                {
                    Message    = e.Message,
                    StackTrace = e.StackTrace,
                    StoryName  = "ManagementProject/Employees/OnlineUser"
                });
            }
            return(View(model));
        }