示例#1
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        public async Task <UserMaster> GetUserByEmailAsync(string email)
        {
            var specification = new UserFilterSpecification(email);
            var user          = await _userRepository.FirstAsync(specification);

            return(user);
        }
示例#5
0
        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
            });
        }
示例#7
0
        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());
            }
        }
示例#8
0
        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));
        }