public async Task <IEnumerable <AppUser> > GetUsersFilteredSortedAsync(FilterSortingParams filterSortingParams)
        {
            var users = _context.Users.AsQueryable();

            if (!string.IsNullOrEmpty(filterSortingParams.SearchByEmail))
            {
                users = users.Where(x => EF.Functions.Like(x.Email.ToLower(),
                                                           "%" + filterSortingParams.SearchByEmail.ToLower() + "%"));
            }

            if (!string.IsNullOrEmpty(filterSortingParams.SearchByPhone))
            {
                users = users.Where(x => EF.Functions.Like(x.Phone.ToLower(),
                                                           "%" + filterSortingParams.SearchByPhone.ToLower() + "%"));
            }

            if (!string.IsNullOrEmpty(filterSortingParams.SortBy))
            {
                users = users.Sort(filterSortingParams.SortBy);
            }

            var latestUsers = await users.ToListAsync();

            return(latestUsers);
        }
        public async Task <ActionResult <IEnumerable <UserDto> > > GetUsers(FilterSortingParams sortingParams)
        {
            try
            {
                var users = await _unitOfWork.UserRepository.GetUsersFilteredSortedAsync(sortingParams);

                var result = _mapper.Map <IEnumerable <UserDto> >(users);

                if (users.Count() > 0)
                {
                    return(Ok(result));
                }

                return(NotFound());
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }