Esempio n. 1
0
        public async Task <GridViewModel <UsersViewModel> > ReadAsync(int currentPage, int rows, string searchQuery)
        {
            GridViewModel <UsersViewModel> vm = new GridViewModel <UsersViewModel>();

            try {
                int maxRows = rows == 0 ? 10 : rows;
                currentPage = currentPage == 0 ? 1 : currentPage;

                IQueryable <Brownbag.Data.Models.User> query = _context.Users;

                if (searchQuery != null)
                {
                    query = query.Where(
                        e => e.UserFullName.CaseInsensitiveContains(searchQuery)
                        );
                    // Returns the search query to help maintain state
                    vm.SearchQuery = searchQuery;
                }
                double pageCount = (double)((decimal)query.Count() / Convert.ToDecimal(maxRows));
                vm.PageCount = (int)Math.Ceiling(pageCount);

                query = query
                        .OrderBy(item => item.UserName).Skip((currentPage - 1) * maxRows)
                        .Take(maxRows);

                var mapped = _mapper.Map <UsersViewModel[]>(query);
                vm.Data = mapped;

                foreach (UsersViewModel user in vm.Data)
                {
                    var currentUser = await _userManager.FindByIdAsync(user.Id);

                    foreach (var claim in await _userManager.GetRolesAsync(currentUser))
                    {
                        var item = new StringOptionsLookupViewModel();
                        item.value    = claim;
                        item.label    = claim;
                        item.disabled = false;
                        user.Roles.Add(item);
                    }
                }
                vm.Page = currentPage;
                vm.Rows = maxRows;

                return(vm);
            } catch (Exception ex) {
                vm.Errors = ex.ToString();
                return(vm);
            }
        }
Esempio n. 2
0
        public async Task <UsersViewModel> EditAsync([FromRoute] Guid id)
        {
            /*
             * We are NOT using automapper here even because we can just return the entity because
             * it has no has virtual or irrelevant properties which should not be sent for no reason.
             * If you look at OccupationalSpecialtyController it does the opposite
             */
            var user        = _mapper.Map <UsersViewModel>(_context.Users.Where(y => y.Id.Equals(id)).FirstOrDefault());
            var currentUser = await _userManager.FindByIdAsync(id.ToString());

            foreach (var role in await _userManager.GetRolesAsync(currentUser))
            {
                var item = new StringOptionsLookupViewModel();
                item.value    = role;
                item.label    = role;
                item.disabled = false;
                user.Roles.Add(item);
            }
            return(user);
        }