Beispiel #1
0
        public async Task <DataTablesResponse> GetUsuarios(IDataTablesRequest modelo, ApplicationUserManager userManager)
        {
            try
            {
                var sortedColumn = modelo.Columns.GetSortedColumns().Where(x => x.OrderNumber == 0).FirstOrDefault();
                UserColumnasOrdenables?columnaOrdenar = null;
                bool orderByDescending = false;
                if (sortedColumn != null && Enum.GetNames(typeof(UserColumnasOrdenables)).Contains(sortedColumn.Name))
                {
                    columnaOrdenar    = (UserColumnasOrdenables)Enum.Parse(typeof(UserColumnasOrdenables), sortedColumn.Name);
                    orderByDescending = sortedColumn.SortDirection == Column.OrderDirection.Descendant;
                }

                var users = _securityManager.Users.AsQueryable();

                if (!string.IsNullOrEmpty(modelo.Search.Value))
                {
                    users = users.Where(m => m.Email == modelo.Search.Value);
                }

                if (orderByDescending)
                {
                    users = users.OrderBy(m => columnaOrdenar);
                }
                else
                {
                    users = users.OrderByDescending(m => columnaOrdenar);
                }

                var listadoUsuariosDb = users.Skip(modelo.Start).Take(modelo.Length).ToList();

                var listadoUsuarios = _mapper.MapDataAModel(listadoUsuariosDb);

                listadoUsuarios.ForEach(u =>
                {
                    u.rol = GetRolesById(u.rol)?.Name;
                    var tipoDocumentoEntity = _contexto.Catalogo.FirstOrDefault(c => c.Id == u.TipoDocumento && c.Tipo == nameof(CatalogosEnum.TipoDocumento));
                    u.TipoDocumentoNombre   = tipoDocumentoEntity?.Nombre;
                });

                var tabla = new DataTablesResponse(modelo.Draw, listadoUsuarios, _securityManager.Users.Count(), listadoUsuarios.Count);

                return(tabla);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                return(new DataTablesResponse(modelo.Draw, new List <UserViewModel>(), 0, 0));
            }
        }