Class DashboardService

java.lang.Object
com.nicholasalfonso.lato.service.DashboardService

@Service public class DashboardService extends Object
Service that aggregates dashboard data and semester statistics for a user.
  • Constructor Details

    • DashboardService

      public DashboardService(AssignmentRepository assignmentRepository, CourseRepository courseRepository, AssignmentMapper assignmentMapper)
      Creates the dashboard service with required repositories and mappers.
      Parameters:
      assignmentRepository - repository for assignment queries
      courseRepository - repository for course queries
      assignmentMapper - mapper for assignment response DTOs
  • Method Details

    • getDashboardData

      public DashboardService.DashboardData getDashboardData(User user)
      Builds the full dashboard payload for the given user.
      Parameters:
      user - the owning user
      Returns:
      dashboard data including upcoming assignments, progress, grouping, and statistics
    • getIncompleteAssignments

      public List<Assignment> getIncompleteAssignments(User user)
      Returns incomplete, non-archived assignments sorted by due date.
      Parameters:
      user - the owning user
      Returns:
      incomplete assignment entities
    • calculateSemesterProgress

      public double calculateSemesterProgress(User user)
      Calculates overall semester completion percentage for the user.
      Parameters:
      user - the owning user
      Returns:
      percentage of completed non-archived assignments
    • groupAssignmentsByDate

      public Map<LocalDate,List<AssignmentResponse>> groupAssignmentsByDate(List<AssignmentResponse> assignments)
      Groups assignment responses by due date while preserving insertion order.
      Parameters:
      assignments - assignment responses to group
      Returns:
      map of due dates to assignment lists
    • getStatistics

      public DashboardService.DashboardStatistics getStatistics(User user)
      Calculates dashboard statistics such as completion percentage and semester timing.
      Parameters:
      user - the owning user
      Returns:
      dashboard statistics record