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); }
//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); }
public async Task RemoveUser(OnlineUserModel user) { if (user == null) { throw new ArgumentNullException(nameof(user)); } onlineUsers.OnlineUsers.Remove(user); await onlineUsers.SaveAsync(); }
public async Task AddOnlineUser(OnlineUserModel onlineUserModel) { if (onlineUserModel == null) { throw new ArgumentNullException(nameof(onlineUserModel)); } onlineUsers.OnlineUsers.Add(onlineUserModel); await onlineUsers.SaveAsync(); }
public override async Task OnDisconnectedAsync(Exception ex) { OnlineUserModel _loggedUser = GetLoggedUser(); if (_loggedUser != null) { await _onlineUsers.RemoveUser(_loggedUser); } await base.OnDisconnectedAsync(ex); }
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); }
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); }
/// <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); }
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(); }
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)); }