diff --git a/src/java/com/library/controller/admin/AdminDashboardController.java b/src/java/com/library/controller/admin/AdminDashboardController.java index 3e63345..6778a0f 100644 --- a/src/java/com/library/controller/admin/AdminDashboardController.java +++ b/src/java/com/library/controller/admin/AdminDashboardController.java @@ -10,6 +10,7 @@ import com.library.model.entity.User; import com.library.service.ActivityService; import com.library.service.BookService; +import com.library.service.ExtendBookService; import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; @@ -32,16 +33,18 @@ public class AdminDashboardController extends HttpServlet { private final ActivityService activityService = ServiceFactory.getActivityService(); private final BookService bookService = ServiceFactory.getBookService(); + private final ExtendBookService extendSerivce = ServiceFactory.getExtendBookService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map map = bookService.getNumberBorrowedBookByCategory(); - + int total = extendSerivce.getNumberOfRequest(); AdminDashBoardDTO dto = activityService.adminDashBoard(); request.setAttribute("dto", dto); request.setAttribute("map", map); + request.setAttribute("total", total); request.getRequestDispatcher("/WEB-INF/views/admin/dashboard.jsp").forward(request, response); } diff --git a/src/java/com/library/controller/book/BookListController.java b/src/java/com/library/controller/book/BookListController.java index 3ec7749..ae5a3a0 100644 --- a/src/java/com/library/controller/book/BookListController.java +++ b/src/java/com/library/controller/book/BookListController.java @@ -41,10 +41,24 @@ public BookListController() { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String cursorParam = request.getParameter("cursor"); + String limitParam = request.getParameter("limit"); + + int cursor = (cursorParam == null) ? 0 : Integer.parseInt(cursorParam); + int limit = (limitParam == null) ? 20 : Integer.parseInt(limitParam); + try { - List bookList = bookDao.getAllBook(); + + List bookList = bookDao.getBooksByCursor(cursor, limit); + + int nextCursor = bookList.isEmpty() ? 0 : bookList.get(bookList.size() - 1).getBookID(); + request.setAttribute("bookList", bookList); + request.setAttribute("nextCursor", nextCursor); + request.setAttribute("limit", limit); + request.getRequestDispatcher("/WEB-INF/views/book/booklist.jsp").forward(request, response); + } catch (BookDataAccessException b) { logger.error("Error loading books", b); } diff --git a/src/java/com/library/dao/AdminDao.java b/src/java/com/library/dao/AdminDao.java index fb3a9b7..e3f06aa 100644 --- a/src/java/com/library/dao/AdminDao.java +++ b/src/java/com/library/dao/AdminDao.java @@ -12,5 +12,7 @@ * @author hieuchu */ public interface AdminDao { + public List getAllUserInformation(); + } diff --git a/src/java/com/library/dao/AdminDaoImpl.java b/src/java/com/library/dao/AdminDaoImpl.java index d883d8c..9e9b037 100644 --- a/src/java/com/library/dao/AdminDaoImpl.java +++ b/src/java/com/library/dao/AdminDaoImpl.java @@ -54,5 +54,6 @@ public List getAllUserInformation() { } return list; } + } diff --git a/src/java/com/library/dao/BookDaoImpl.java b/src/java/com/library/dao/BookDaoImpl.java index aa4b1e8..e08e2bd 100644 --- a/src/java/com/library/dao/BookDaoImpl.java +++ b/src/java/com/library/dao/BookDaoImpl.java @@ -369,8 +369,8 @@ public List getBooksByCursor(int cursor, int limit) { try (Connection conn = DBConnection.getInstance().getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { - ps.setInt(1, cursor); // ID cuối của trang trước (0 = trang đầu) - ps.setInt(2, limit); // số bản ghi muốn lấy + ps.setInt(1, cursor); + ps.setInt(2, limit); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { diff --git a/src/java/com/library/dao/ExtendRequestDao.java b/src/java/com/library/dao/ExtendRequestDao.java index 968cb1c..0f434a8 100644 --- a/src/java/com/library/dao/ExtendRequestDao.java +++ b/src/java/com/library/dao/ExtendRequestDao.java @@ -14,8 +14,14 @@ * @author hieuchu */ public interface ExtendRequestDao { - boolean insertExtendRequest(ExtendRequestDTO request) ; + + boolean insertExtendRequest(ExtendRequestDTO request); + List getAllExtendRequests(); - boolean hasUserSentRequest(int borrowingID , int userID ); - void updateStatus(int userID, String status); + + boolean hasUserSentRequest(int borrowingID, int userID); + + void updateStatus(int userID, String status); + + int countingRequest(); } diff --git a/src/java/com/library/dao/ExtendRequestDaoImpl.java b/src/java/com/library/dao/ExtendRequestDaoImpl.java index 0ba0d23..7debbe2 100644 --- a/src/java/com/library/dao/ExtendRequestDaoImpl.java +++ b/src/java/com/library/dao/ExtendRequestDaoImpl.java @@ -97,4 +97,18 @@ public void updateStatus(int userID, String status) { } } + @Override + public int countingRequest() { + String sql = "select count(*) as totalRequest from extend_requests\n" + + "where status = 'pending'"; + try ( + Connection conn = DBConnection.getInstance().getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { + ResultSet rs = ps.executeQuery(); + if(rs.next()) return rs.getInt("totalRequest"); + } catch (SQLException e) { + e.printStackTrace(); + } + return -1 ; + } + } diff --git a/src/java/com/library/service/ActivityService.java b/src/java/com/library/service/ActivityService.java index 0c02b70..0f9ba02 100644 --- a/src/java/com/library/service/ActivityService.java +++ b/src/java/com/library/service/ActivityService.java @@ -39,7 +39,6 @@ public ActivityService(ActivityDao activityDao, ActionDao actionDao, UserDao use this.bookDao = bookDao; } - public String getBookTitle(int bookID) { return this.bookDao.getBookTitleByID(bookID); @@ -54,7 +53,7 @@ public void ActivityUser(int actionID, String account) { } if (actionName.equalsIgnoreCase("update profile")) { detail = account + " has just updated their profile "; - } + } logger.info("userid {} is logging ", userId); this.activityDao.insertData(userId, actionID, detail, LocalDateTime.now()); } @@ -69,37 +68,37 @@ public void BookActivityOfUser(String account, int actionID, int bookID) { if (actionName.equalsIgnoreCase("return book")) { detail = account + " has just returned " + getBookTitle(bookID); } - this.activityDao.insertData(userID, actionID, detail, LocalDateTime.now()); + this.activityDao.insertData(userID, actionID, detail, LocalDateTime.now()); } - public UserActivityDTO getLatestActivityByAction(int actionID) { - Activity activity = activityDao.getLatestByAction(actionID); - if (activity != null) { - UserActivityDTO dto = new UserActivityDTO(); - dto.setAccount(activity.getUser().getAccount()); - Action a = new Action(); - a.setType(activity.getAction().getType()); - dto.setAction(a); - dto.setDetail(activity.getDetail()); - dto.setLog_time(TimeFormatter.timeAgo(activity.getLogTime())); - return dto; - } - return null; + public UserActivityDTO getLatestActivityByAction(int actionID) { + Activity activity = activityDao.getLatestByAction(actionID); + if (activity != null) { + UserActivityDTO dto = new UserActivityDTO(); + dto.setAccount(activity.getUser().getAccount()); + Action a = new Action(); + a.setType(activity.getAction().getType()); + dto.setAction(a); + dto.setDetail(activity.getDetail()); + dto.setLog_time(TimeFormatter.timeAgo(activity.getLogTime())); + return dto; } + return null; + } - public AdminDashBoardDTO adminDashBoard(){ + public AdminDashBoardDTO adminDashBoard() { AdminDashBoardDTO dto = new AdminDashBoardDTO(); - dto.setTotalOnlineUser(TrackingUserService.getSize()); + dto.setTotalOnlineUser(TrackingUserService.getSize()); dto.setTotalBook(this.bookDao.totalBook()); List list = this.actionDao.getAllAction(); List listActivities = new ArrayList<>(); - for(Action a : list){ + for (Action a : list) { UserActivityDTO act = getLatestActivityByAction(a.getActionID()); // take new log of a user listActivities.add(act); /// add log user into list - } + } dto.setActionList(listActivities); // set list - return dto ; + return dto; } } diff --git a/src/java/com/library/service/ExtendBookService.java b/src/java/com/library/service/ExtendBookService.java index cce9954..9675656 100644 --- a/src/java/com/library/service/ExtendBookService.java +++ b/src/java/com/library/service/ExtendBookService.java @@ -65,4 +65,7 @@ public void updateRequestStatus(int userID, String status){ this.extendDao.updateStatus(userID, status); } + public int getNumberOfRequest(){ + return this.extendDao.countingRequest(); + } } diff --git a/web/WEB-INF/views/admin/dashboard.jsp b/web/WEB-INF/views/admin/dashboard.jsp index 5b0a0ca..82477bf 100644 --- a/web/WEB-INF/views/admin/dashboard.jsp +++ b/web/WEB-INF/views/admin/dashboard.jsp @@ -412,8 +412,8 @@
-

-

Active Borrowings

+

${total}

+

Number of Request

diff --git a/web/WEB-INF/views/book/booklist.jsp b/web/WEB-INF/views/book/booklist.jsp index ae7aadd..5c240d8 100644 --- a/web/WEB-INF/views/book/booklist.jsp +++ b/web/WEB-INF/views/book/booklist.jsp @@ -321,7 +321,7 @@ Favorite - Setting + Setting Logout @@ -347,6 +347,16 @@ + +