package com.imprimelibros.erp.users; import com.imprimelibros.erp.datatables.DataTablesResponse; import jakarta.servlet.http.HttpServletRequest; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.security.access.prepost.PreAuthorize; import com.imprimelibros.erp.datatables.DataTablesRequest; import com.imprimelibros.erp.datatables.DataTablesParser; import com.imprimelibros.erp.datatables.DataTable; import java.util.Map; import java.util.List; @Controller @RequestMapping("/users") public class UserController { private UserDao repo; public UserController(UserDao repo, UserService userService) { this.repo = repo; } @PreAuthorize("hasRole('ADMIN') or hasRole('SUPERADMIN')") @GetMapping("/") public DataTablesResponse> datatable(HttpServletRequest request) { DataTablesRequest dt = DataTablesParser.from(request); Specification base = (root, query, cb) -> cb.conjunction(); long total = repo.count(); return DataTable .of(repo, User.class, dt, List.of( "username", "email", "role" // campos buscables )) .where(base) .toJson(total); } }