public async Task <UsersListDto> ListUsersAsync(int pageIndex, int itemsPage, string search) { var filterPaginatedEspecification = new UserFilterPaginatedSpecification(itemsPage * pageIndex, itemsPage, search); var filterSpecification = new UserFilterSpecification(search); var itemsOnPage = await _userRepository.ListAsync(filterPaginatedEspecification); var totalItems = await _userRepository.CountAsync(filterSpecification); var users = new UsersListDto() { Users = itemsOnPage.Select(s => s.MapUserDto()).ToList(), PaginationInfo = new PaginationInfoDto() { ActualPage = pageIndex, ItemsPerPage = itemsOnPage.Count, TotalItems = totalItems, TotalPages = int.Parse(Math.Ceiling(((decimal)totalItems / itemsPage)).ToString()) } }; users.PaginationInfo.Next = (users.PaginationInfo.ActualPage == users.PaginationInfo.TotalPages - 1) ? "is-disabled" : ""; users.PaginationInfo.Previous = (users.PaginationInfo.ActualPage == 0) ? "is-disabled" : ""; return(users); }
public async Task <UserDto> AuthenticateAsync(string username, string password) { var userSpec = new UserFilterSpecification(username, password); var user = await _userRepository.FirstOrDefaultAsync(userSpec); UserDto userDto = new UserDto(); userDto = _mapper.Map(user, userDto); if (user == null) { return(null); } // authentication successful so generate jwt token var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_configuration.GetSection("AppSettings").GetSection("Secret").Value); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.Id.ToString()), new Claim(ClaimTypes.Role, "Admin") }), Expires = DateTime.UtcNow.AddDays(1), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature), Audience = _configuration.GetSection("AppSettings").GetSection("Audience").Value, //<string>("AppSettings:Audience"), Issuer = _configuration.GetSection("AppSettings").GetSection("Issuer").Value, // _configuration.GetValue<string>("AppSettings:Issuer") }; var token = tokenHandler.CreateToken(tokenDescriptor); userDto.Token = tokenHandler.WriteToken(token); return(userDto); }
public async Task <string> ExportToExcelAsync(string searchString = "") { var userSpec = new UserFilterSpecification(searchString); var users = await _userManager.Users .Specify(userSpec) .OrderByDescending(a => a.CreatedOn) .ToListAsync(); var result = await _excelService.ExportAsync(users, sheetName : _localizer["Users"], mappers : new Dictionary <string, Func <BlazorHeroUser, object> > { { _localizer["Id"], item => item.Id }, { _localizer["FirstName"], item => item.FirstName }, { _localizer["LastName"], item => item.LastName }, { _localizer["UserName"], item => item.UserName }, { _localizer["Email"], item => item.Email }, { _localizer["EmailConfirmed"], item => item.EmailConfirmed }, { _localizer["PhoneNumber"], item => item.PhoneNumber }, { _localizer["PhoneNumberConfirmed"], item => item.PhoneNumberConfirmed }, { _localizer["IsActive"], item => item.IsActive }, { _localizer["CreatedOn (Local)"], item => DateTime.SpecifyKind(item.CreatedOn, DateTimeKind.Utc).ToLocalTime().ToString("G", CultureInfo.CurrentCulture) }, { _localizer["CreatedOn (UTC)"], item => item.CreatedOn.ToString("G", CultureInfo.CurrentCulture) }, { _localizer["ProfilePictureDataUrl"], item => item.ProfilePictureDataUrl }, }); return(result); }
public async Task <UserMaster> GetUserByEmailAsync(string email) { var specification = new UserFilterSpecification(email); var user = await _userRepository.FirstAsync(specification); return(user); }
public async Task <IPagedResult <User> > ListAsync(int pageIndex, int pageSize) { var filterSpecification = new UserFilterSpecification(); var filterPaginatedSpecification = new UserFilterPaginatedSpecification(pageIndex * pageSize, pageSize); var items = await _userRepository.ListAsync(filterPaginatedSpecification); var totalItems = await _userRepository.CountAsync(filterSpecification); return(new PagedResult <User>(pageIndex, pageSize, totalItems, items)); }
//todo for tripat public async Task <DatabaseResponse> GetUsersAsync(int?RoleId) { var userSpec = new UserFilterSpecification(RoleId); var users = await _userRepository.ListAsync(userSpec); int status = 0; status = (int)DbReturnValue.RecordExists; return(new DatabaseResponse { ResponseCode = status, Results = users }); }
public virtual async Task <ActionResult> Index(int p = 1, int pageSize = 10, string orderBy = "Id desc", string search = "") { var spec = UserFilterSpecification.Create <TDto>(HttpContext.Request.Query); if (!spec.IsValid) { return(HandleReadException()); } var cts = TaskHelper.CreateChildCancellationTokenSource(ClientDisconnectedToken()); try { var dataTask = Service.SearchAsync(cts.Token, null, search, spec.ToExpression(), orderBy, p, pageSize, false, null); await TaskHelper.WhenAllOrException(cts, dataTask); var data = dataTask.Result; var response = new WebApiPagedResponseDto <TDto> { Page = p, PageSize = pageSize, Records = data.TotalCount, Rows = data.ToList(), OrderBy = orderBy, Search = search }; ViewBag.Search = search; ViewBag.Page = p; ViewBag.PageSize = pageSize; ViewBag.OrderBy = orderBy; ViewBag.PageTitle = Title; ViewBag.Admin = Admin; return(View("~/Views/Bootstrap4/List.cshtml", response)); //return View("List", response); } catch { return(HandleReadException()); } }
public async Task <IActionResult> GetUsers([FromQuery] UserParams userParams) { var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var userFromRepo = await _userRepository.GetByIdAsync(currentUserId); userParams.UserId = currentUserId; // Filter the user by gender var genderFilter = userParams.Gender ?? (userFromRepo.Gender == "male" ? "female" : "male"); var minDateOfBirthFilter = DateTime.Today.AddYears(-99 - 1);; var maxDateOfBirthFilter = DateTime.Today.AddYears(-18);; if (userParams.minAge != 18 || userParams.maxAge != 99) { minDateOfBirthFilter = DateTime.Today.AddYears(-userParams.maxAge - 1); maxDateOfBirthFilter = DateTime.Today.AddYears(-userParams.minAge); } IEnumerable <int> userLikers = null; IEnumerable <int> userLikees = null; if (userParams.Likers) { userLikers = await _userRepository.GetUserLikes(userParams.UserId, userParams.Likers); } if (userParams.Likees) { userLikees = await _userRepository.GetUserLikes(userParams.UserId, userParams.Likers); } var userFilterSpecification = new UserFilterSpecification( includePhotos: true, gender: genderFilter, excludeUserId: userFromRepo.Id, minDateOfBirth: minDateOfBirthFilter, maxDateOfBirth: maxDateOfBirthFilter, userLikers: userLikers, userLikees: userLikees ); var userFilterPaginatedSpecification = new UserFilterPaginatedSpecification( userParams.TotalResultsToSkipForPagination, userParams.PageSize, includePhotos: true, gender: genderFilter, excludeUserId: userFromRepo.Id, minDateOfBirth: minDateOfBirthFilter, maxDateOfBirth: maxDateOfBirthFilter, userLikers: userLikers, userLikees: userLikees ); // ---------------- Filter applied ----------------- var users = await _userRepository.ListAsync(userFilterPaginatedSpecification); var totalUsers = _userRepository.Count(userFilterSpecification); var usersToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users); Response.AddPagination(userParams.PageNumber, userParams.PageSize, totalUsers, userParams.TotalPages(totalUsers)); return(Ok(usersToReturn)); }