public async Task <IActionResult> List(string name = null, DateTime?creationDateFrom = null, DateTime?creationDateTo = null, int?idEmpresa = null)
        {
            try
            {
                var filters  = new UsuarioFilterDTO(name, creationDateFrom, creationDateTo, idEmpresa);
                var entities = await _usuarioService.List(this.Usuario, this.IsSuperUser, filters);

                return(Ok(entities));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e));
            }
        }
        public async Task <IEnumerable <UsuarioDTO> > List(UsuarioDTO userLogged, bool isSuperUser, UsuarioFilterDTO filter = null)
        {
            IEnumerable <Usuario> entities;

            if (isSuperUser)
            {
                entities = await _userRepository.ListBy(usuario =>
                                                        ((!filter.IdEmpresa.HasValue || usuario.IdEmpresa == filter.IdEmpresa.Value) &&
                                                         (!filter.CreationDateFrom.HasValue || usuario.CreationDate >= filter.CreationDateFrom.Value) &&
                                                         (!filter.CreationDateTo.HasValue || usuario.CreationDate <= filter.CreationDateTo.Value) &&
                                                         (filter.Nombre.IsNullOrEmpty() || usuario.Nombre.ToLower().Contains(filter.Nombre) ||
                                                          usuario.Apellido.ToLower().Contains(filter.Nombre) ||
                                                          usuario.Email.ToLower().Contains(filter.Nombre))) &&
                                                        usuario.Active == true,
                                                        s => s.Rol,
                                                        includeProperties => includeProperties.Empresa);

                //using (var ctx = new InfoRapContext())
                //{
                //    entities = await ctx.Usuario.Where(s => s.Active)
                //        .Include(s => s.Rol)
                //        .Include(s => s.Empresa)
                //        .ToListAsync();
                //}
            }
            else
            {
                entities = await _userRepository.ListBy(usuario =>
                                                        usuario.IdEmpresa == userLogged.IdEmpresa &&
                                                        ((!filter.CreationDateFrom.HasValue || usuario.CreationDate >= filter.CreationDateFrom.Value) &&
                                                         (!filter.CreationDateTo.HasValue || usuario.CreationDate <= filter.CreationDateTo.Value) &&
                                                         (filter.Nombre.IsNullOrEmpty() || usuario.Nombre.ToLower().Contains(filter.Nombre) ||
                                                          usuario.Apellido.ToLower().Contains(filter.Nombre) ||
                                                          usuario.Email.ToLower().Contains(filter.Nombre))) &&
                                                        usuario.Active == true,
                                                        includeProperties => includeProperties.Rol,
                                                        includeProperties => includeProperties.Empresa);
            }
            var dtos = _mapper.Map <IEnumerable <UsuarioDTO> >(entities);

            return(dtos);
        }