/// <summary> /// Retrieve the list of users with filters and pagination /// </summary> /// <param name="pageNumber">Page number</param> /// <param name="firstName">First name</param> /// <param name="lastName">Last name</param> /// <param name="isExport">Is or not export to excel</param> public void SearchUsers(int pageNumber, string firstName, string lastName, bool isExport = false) { //Get the current index int currentIndex = (pageNumber - 1) * SearchResult.PageSize; using (Cotecna.Voc.Business.UsersContext context = new Cotecna.Voc.Business.UsersContext()) { //Get the list of users var query = (from user in context.UserProfiles join userInRole in context.UserInRoles on user.UserId equals userInRole.UserId join role in context.Roles on userInRole.RoleId equals role.RoleId where user.IsInternalUser == false select new { Email = user.UserName, user.FirstName, user.LastName, IsActive = user.IsActive, RoleName = role.RoleName }); //add first name filter if (!string.IsNullOrEmpty(firstName)) query = query.Where(data => data.FirstName.Contains(firstName)); //add last name filter if (!string.IsNullOrEmpty(lastName)) query = query.Where(data => data.LastName.Contains(lastName)); //get the total of itmes SearchResult.TotalCount = query.Count(); //set page number SearchResult.Page = pageNumber; if (!isExport) { foreach (var item in query.OrderBy(x => x.FirstName).Skip(currentIndex).Take(SearchResult.PageSize).ToList()) { //build the result SearchResult.Collection.Add(new UserModel { Email = item.Email, FullName = item.FirstName + " " + item.LastName, IsActive = item.IsActive.GetValueOrDefault() ? Resources.Common.Yes : Resources.Common.No, Role = item.RoleName }); } } else { foreach (var item in query.OrderBy(x => x.FirstName).ToList()) { //build the result SearchResult.Collection.Add(new UserModel { Email = item.Email, FullName = item.FirstName + " " + item.LastName, IsActive = item.IsActive.GetValueOrDefault() ? Resources.Common.Yes : Resources.Common.No, Role = item.RoleName }); } } //get the number of pages SearchResult.NumberOfPages = (int)Math.Ceiling((double)SearchResult.TotalCount / (double)SearchResult.PageSize); } }
/// <summary> /// Retrieve the user /// </summary> /// <param name="email"></param> public void SearchUser(string email) { //Get the current index using (Cotecna.Voc.Business.UsersContext context = new Cotecna.Voc.Business.UsersContext()) { //Get the list of users var query = (from user in context.UserProfiles join userInRole in context.UserInRoles on user.UserId equals userInRole.UserId join role in context.Roles on userInRole.RoleId equals role.RoleId where user.UserName == email select new UserModel { Email = user.UserName, FirstName = user.FirstName, LastName = user.LastName, Active = user.IsActive.HasValue ? user.IsActive.Value : false, SelectedRole = role.RoleName }); UserModel us = query.SingleOrDefault(); Charge(us); } }