public void LogoutToOfflineTest() { OnlineClientDto onlineClientDto = new OnlineClientDto(); onlineClientDto.UniqueID = _onlineClient.UniqueID; onlineClientDto.Comments = _onlineClient.Comments; onlineClientDto.MachineIP = _onlineClient.MachineIP; bool result = UserManagementService.LogoutToOffline(onlineClientDto); Assert.AreEqual(true, result); }
/// <summary> /// is online /// </summary> /// <param name="onlineClientDto"></param> /// <returns></returns> public bool IsOnline(OnlineClientDto onlineClientDto) { string webUserFlag = "web login user"; OnlineClient onlineClientOld = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.Comments == webUserFlag && o.IsOnline == 1 && o.MachineIP == onlineClientDto.MachineIP).FirstOrDefault(); if (onlineClientOld != null) { return(true); } return(false); }
public void LoginToOnlineTest() { OnlineClientDto onlineClientDto = new OnlineClientDto(); onlineClientDto.UniqueID = RandomHelper.GenerateString(); onlineClientDto.MachineIP = _onlineClient.MachineIP; string message = ""; int result = UserManagementService.LoginToOnline(onlineClientDto, "0", out message); Assert.AreEqual(1, result); onlineClientDto.UniqueID = _onlineClient.UniqueID; onlineClientDto.MachineIP = RandomHelper.GenerateString(); result = UserManagementService.LoginToOnline(onlineClientDto, "0", out message); Assert.AreEqual(3, result); onlineClientDto.UniqueID = _onlineClient.UniqueID; onlineClientDto.MachineIP = _onlineClient.MachineIP; onlineClientDto.Comments = _onlineClient.Comments; result = UserManagementService.LoginToOnline(onlineClientDto, "0", out message); Assert.AreEqual(0, result); }
/// <summary> /// add or update online info when login /// </summary> /// <param name="onlineClientDto"></param> /// <returns>0:sucess;1:error, same user login on other location;2:error, max user; 3:same user login in other location 4: can not get license data 5:license expired</returns> public int LoginToOnline(OnlineClientDto onlineClientDto, string isForce, out string message) { message = ""; List <OnlineClient> onlineClientList = _OnlineClientRepository.Get(o => o.MachineIP == onlineClientDto.MachineIP && o.IsOnline == 1).ToList(); foreach (OnlineClient onlineClient in onlineClientList) { //not selfservice login user if ((onlineClient.Comments == null || onlineClient.Comments.ToLower() != "selfservice login user") && string.Compare(onlineClient.UniqueID, onlineClientDto.UniqueID, true) != 0) { //同一台机器上只能允许登陆1次,请退出后再登陆! if (isForce == "0") { UserDto user = GetUserByID(onlineClient.UniqueID); if (user != null) { message = user.LoginName; } return(1); } else { //onlineClient.IsOnline = 0; } } } //get max value string countName = "OnlineUserCheckTimePeriod"; string countValue = null; int currentOnline = 0; SystemProfile systemProfile = null; SiteProfile siteProfile = _dbContext.Set <SiteProfile>().Where(s => s.Name == countName && s.Domain == onlineClientDto.Domain && s.Site == onlineClientDto.Site).FirstOrDefault(); if (siteProfile != null && siteProfile.Value != null) { countValue = siteProfile.Value; currentOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain && o.Site == onlineClientDto.Site).Count(); } else { systemProfile = _dbContext.Set <SystemProfile>().Where(s => s.Name == countName && s.Domain == onlineClientDto.Domain).FirstOrDefault(); if (systemProfile != null && systemProfile.Value != null) { countValue = systemProfile.Value; currentOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain).Count(); } } if (countValue != null) { //Max user count reached int profileMaxUserNumber = GetMaxOnlineUserCount(countValue); if (currentOnline >= profileMaxUserNumber) { return(2); } } List <OnlineClient> onlineClientList2 = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.IsOnline == 1).ToList(); foreach (OnlineClient onlineClient in onlineClientList2) { //not selfservice login user //if ((onlineClient.Comments == null || onlineClient.Comments.ToLower() != "selfservice login user") // && (string.Compare(onlineClient.MachineIP, onlineClientDto.MachineIP, true) != 0 // || string.Compare(onlineClient.Comments, onlineClientDto.Comments, true) != 0)) if (onlineClient.Comments != null && onlineClient.Comments.ToLower() != "selfservice login user" && string.Compare(onlineClient.MachineIP, onlineClientDto.MachineIP, true) != 0) { //同一用户只能在一个地方登录 if (isForce == "0") { message = onlineClient.MachineName + "&" + onlineClient.MachineIP; return(3); } else { //onlineClient.IsOnline = 0; } } } //clear all offline List <OnlineClient> onlineClientList3 = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.IsOnline == 0).ToList(); foreach (OnlineClient onlineClient in onlineClientList3) { _OnlineClientRepository.Delete(onlineClient); } _OnlineClientRepository.SaveChanges(); //add or update online data string webUserFlag = "web login user"; // check web license var webOnline = _OnlineClientRepository.Get(o => o.IsOnline == 1 && o.Domain == onlineClientDto.Domain && o.Comments == webUserFlag).Count(); if (_license.IsSuccessed) { if (_license.IsExpired) { return(5); } if (webOnline >= _license.MaxOnlineUserCount) { return(2); } } else { return(4); } OnlineClient onlineClientOld = _OnlineClientRepository.Get(o => o.UniqueID == onlineClientDto.UniqueID && o.Comments != "selfservice login user").FirstOrDefault(); if (onlineClientOld != null && onlineClientOld.IsOnline == 1) { } else { OnlineClient onlineClientNew = Mapper.Map <OnlineClientDto, OnlineClient>(onlineClientDto); onlineClientNew.RoleName = GetUserDefaultRole(new UserDto { UniqueID = onlineClientDto.UniqueID, Domain = onlineClientDto.Domain }); _OnlineClientRepository.Add(onlineClientNew); _OnlineClientRepository.SaveChanges(); } return(0); }