/// <summary> /// To convert userloging dto to domain model /// </summary> /// <param name="userLogin"></param> /// <param name="clientUsers"></param> /// <param name="isEdit"></param> private void MapClientUser(Business.UserLoginDTO userLogin, UserLogin clientUsers, bool isEdit) { clientUsers.UserId = userLogin.UserId; clientUsers.FirstName = userLogin.FirstName; clientUsers.LastName = userLogin.LastName; clientUsers.Email = userLogin.Email; clientUsers.UserName = userLogin.Email; clientUsers.MobileNumber = userLogin.MobileNumber; clientUsers.ModifiedDate = DateTime.UtcNow; clientUsers.ModifiedBy = userContext.UserId; clientUsers.RecordStatus = userLogin.RecordStatus; clientUsers.RoleId = _m3pactContext.Roles.FirstOrDefault(x => x.RoleCode == userLogin.RoleCode).RoleId; clientUsers.ForgotPasswordToken = userLogin.ForgotPasswordToken; clientUsers.Password = userLogin.Password; if (!isEdit) { clientUsers.IsMeridianUser = userLogin.IsMeridianUser; clientUsers.CreatedDate = DateTime.UtcNow; clientUsers.CreatedBy = userContext.UserId; } //For M3 user we are setting SSO number as username. if (userLogin.IsMeridianUser == true) { clientUsers.UserName = _m3pactContext.Employee.FirstOrDefault(x => x.EmployeeId.ToString() == userLogin.UserId).Sso.ToString(); } }
/// <summary> /// Get User by userid or username /// </summary> /// <param name="userID"></param> /// <param name="email"></param> /// <returns></returns> public Business.UserLoginDTO GetUser(string userID, string email = null) { try { Business.UserLoginDTO userDto = new Business.UserLoginDTO(); UserLogin userLogin = _m3pactContext.UserLogin.FirstOrDefault(x => string.IsNullOrEmpty(userID) ? x.Email == email : x.UserId == userID); if (userLogin != null) { userDto.UserId = userLogin.UserId.ToString(); userDto.UserName = userLogin.UserName; userDto.FirstName = userLogin.FirstName; userDto.LastName = userLogin.LastName; userDto.Email = userLogin.Email; userDto.MobileNumber = userLogin.MobileNumber; userDto.RoleName = userLogin.Role?.RoleCode; userDto.RecordStatus = userLogin.RecordStatus; userDto.Password = userLogin.Password; userDto.ForgotPasswordToken = userLogin.ForgotPasswordToken; userDto.IsMeridianUser = userLogin.IsMeridianUser; return(userDto); } return(null); } catch (Exception ex) { throw ex; } }
/// <summary> /// /// </summary> /// <param name="userID"></param> /// <returns></returns> public Business.UserLoginDTO GetUserDetails(string userID) { try { Business.UserLoginDTO userDto = null; if (!string.IsNullOrEmpty(userID)) { UserLogin userlogin = (from u in _m3pactContext.UserLogin where u.UserId == userID select new UserLogin { UserId = u.UserId, UserName = u.UserName, FirstName = u.FirstName, MiddleName = u.MiddleName, LastName = u.LastName, Email = u.Email, UserClientMap = u.UserClientMap, MobileNumber = u.MobileNumber, RecordStatus = u.RecordStatus, Password = u.Password, ForgotPasswordToken = u.ForgotPasswordToken } ).FirstOrDefault(); if (userlogin != null) { userDto = new Business.UserLoginDTO(); userDto.UserId = userlogin.UserId.ToString(); userDto.FirstName = userlogin.FirstName; userDto.LastName = userlogin.LastName; userDto.Email = userlogin.Email; userDto.MobileNumber = userlogin.MobileNumber; userDto.RoleName = userlogin.Role?.RoleCode; userDto.RecordStatus = userlogin.RecordStatus; userDto.Password = userlogin.Password; userDto.ForgotPasswordToken = userlogin.ForgotPasswordToken; if (userlogin.UserClientMap != null) { foreach (UserClientMap userClient in userlogin.UserClientMap) { Client client = _m3pactContext.Client.FirstOrDefault(x => x.ClientId == userClient.ClientId); Business.ClientDetails clientDetails = new Business.ClientDetails(); clientDetails.ClientCode = client.ClientCode; clientDetails.Name = client.Name; userDto.Client.Add(clientDetails); } } } } return(userDto); } catch (Exception ex) { throw ex; } }
/// <summary> /// updates password /// </summary> /// <param name="userDto"></param> /// <returns></returns> public bool UpdatePassword(Business.UserLoginDTO userDto) { Domain.UserLogin user = _m3pactContext.UserLogin.FirstOrDefault(x => x.UserId == userDto.UserId); if (user != null) { user.Password = userDto.Password; user.ForgotPasswordToken = userDto.ForgotPasswordToken; user.LastPasswordChanged = userDto.LastPasswordChanged; user.ModifiedBy = userContext.UserId; user.ModifiedDate = DateTime.UtcNow; _m3pactContext.Update(user); return(_m3pactContext.SaveChanges() > 0); } return(false); }
/// <summary> /// To prepare removable and insertable UserClientMaps /// </summary> /// <param name="userLogin"></param> /// <param name="clientUsers"></param> /// <param name="clientIdList"></param> /// <param name="removableClientMaps"></param> /// <param name="insertableClients"></param> /// <returns></returns> private void PrepareChangedClientMaps(Business.UserLoginDTO userLogin, UserLogin clientUsers, List <int> clientIdList, List <int> insertableClients) { List <int> loggedInUserClientMapping = new List <int>(); List <Domain.UserClientMap> userclientMaping = new List <UserClientMap>(); List <Domain.UserClientMap> removableClientMaps = new List <UserClientMap>(); UserContext userContext = UserHelper.getUserContext(); if (!string.IsNullOrEmpty(userContext.UserId)) { if (userLogin.RoleCode != RoleType.Admin.ToString()) { string loggedinUserRoleCode = userContext.Role; if (loggedinUserRoleCode == RoleType.Admin.ToString()) { loggedInUserClientMapping = _m3pactContext.Client.Where(c => c.IsActive == DomainConstants.RecordStatusActive).Select(x => x.ClientId).ToList(); } else { loggedInUserClientMapping = (from uc in _m3pactContext.UserClientMap join u in _m3pactContext.UserLogin on uc.UserId equals u.Id where u.UserId == userContext.UserId && uc.RecordStatus == DomainConstants.RecordStatusActive select uc.ClientId).ToList(); } userclientMaping = _m3pactContext.UserClientMap.Where(x => x.UserId == clientUsers.Id && loggedInUserClientMapping.Contains(x.ClientId)).ToList(); } else { userclientMaping = _m3pactContext.UserClientMap.Where(x => x.UserId == clientUsers.Id).ToList(); } //Getting removable cleints which were existing in db and not present in the list which passed from UI removableClientMaps = userclientMaping.Where(x => !(clientIdList.Contains(x.ClientId))).ToList(); if (removableClientMaps != null && removableClientMaps.Count > 0) { _m3pactContext.RemoveRange(removableClientMaps); } //Getting adding cleints which were not existing in db and present in the list which passed from UI foreach (int id in clientIdList) { if (!(userclientMaping.Exists(x => x.ClientId == id))) { insertableClients.Add(id); } } } }
/// <summary> /// Saves client User /// </summary> /// <param name="userLogin"></param> /// <returns></returns> public bool SaveUser(Business.UserLoginDTO userLogin) { try { List <Domain.UserClientMap> userClientMapList = new List <DomainModel.DomainModels.UserClientMap>(); Domain.UserLogin existingClientUser = _m3pactContext.UserLogin.FirstOrDefault(x => x.UserId == userLogin.UserId); List <int> clientIdList = new List <int>(); if (userLogin.Client.Count > 0) { foreach (Business.ClientDetails client in userLogin.Client) { clientIdList.Add(_m3pactContext.Client.FirstOrDefault(x => x.ClientCode == client.ClientCode).ClientId); } } if (existingClientUser != null) { List <int> insertableClients = new List <int>(); MapClientUser(userLogin, existingClientUser, true); PrepareChangedClientMaps(userLogin, existingClientUser, clientIdList, insertableClients); userClientMapList = MapUserClientMap(existingClientUser, insertableClients); _m3pactContext.UserClientMap.AddRange(userClientMapList); } else { Domain.UserLogin insertableClientUser = new Domain.UserLogin(); MapClientUser(userLogin, insertableClientUser, false); _m3pactContext.UserLogin.Add(insertableClientUser); userClientMapList = MapUserClientMap(insertableClientUser, clientIdList); _m3pactContext.UserClientMap.AddRange(userClientMapList); } int i = _m3pactContext.SaveChanges(); return(i > 0); } catch (Exception ex) { throw ex; } }