Skip to content

Commit c1f3e23

Browse files
committed
- Add mentorship stats
1 parent 4c9c34e commit c1f3e23

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

apps/jobboard-backend/src/main/java/org/bounswe/jobboardbackend/dashboard/dto/DashboardStatsResponse.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public class DashboardStatsResponse {
1414
private long totalJobSeekers;
1515

1616
private long totalForumPosts; // mock for now
17-
private long currentMentorships; // mock for now
1817

1918
// job post related stats
2019
private long totalJobPosts;
@@ -27,4 +26,15 @@ public class DashboardStatsResponse {
2726
private long totalPendingApplications;
2827
private long totalAcceptedApplications;
2928
private long totalRejectedApplications;
29+
30+
// mentorship related stats
31+
private long totalMentors;
32+
private long totalMentorshipRequests;
33+
private long acceptedMentorships; // ACCEPTED status
34+
private long pendingMentorshipRequests; // PENDING status
35+
private long completedMentorships; // COMPLETED status
36+
private long declinedMentorshipRequests; // DECLINED status
37+
private long closedMentorshipRequests; // CLOSED status
38+
private long totalMentorReviews;
39+
private long totalResumeReviews;
3040
}

apps/jobboard-backend/src/main/java/org/bounswe/jobboardbackend/dashboard/service/CommunityDashboardService.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
import org.bounswe.jobboardbackend.jobapplication.model.JobApplicationStatus;
99
import org.bounswe.jobboardbackend.jobapplication.repository.JobApplicationRepository;
1010
import org.bounswe.jobboardbackend.jobpost.repository.JobPostRepository;
11+
import org.bounswe.jobboardbackend.mentorship.model.RequestStatus;
12+
import org.bounswe.jobboardbackend.mentorship.repository.MentorProfileRepository;
13+
import org.bounswe.jobboardbackend.mentorship.repository.MentorReviewRepository;
14+
import org.bounswe.jobboardbackend.mentorship.repository.MentorshipRequestRepository;
15+
import org.bounswe.jobboardbackend.mentorship.repository.ResumeReviewRepository;
1116
import org.springframework.scheduling.annotation.Scheduled;
1217
import org.springframework.stereotype.Service;
1318

@@ -20,6 +25,10 @@ public class CommunityDashboardService {
2025
private final UserRepository userRepository;
2126
private final JobPostRepository jobPostRepository;
2227
private final JobApplicationRepository jobApplicationRepository;
28+
private final MentorProfileRepository mentorProfileRepository;
29+
private final MentorshipRequestRepository mentorshipRequestRepository;
30+
private final MentorReviewRepository mentorReviewRepository;
31+
private final ResumeReviewRepository resumeReviewRepository;
2332

2433
private DashboardStatsResponse cachedStats = new DashboardStatsResponse();
2534

@@ -47,9 +56,19 @@ public void refreshStats() {
4756
long acceptedApps = jobApplicationRepository.countByStatus(JobApplicationStatus.APPROVED);
4857
long rejectedApps = jobApplicationRepository.countByStatus(JobApplicationStatus.REJECTED);
4958

59+
// 4. Mentorship Stats
60+
long totalMentors = mentorProfileRepository.count();
61+
long totalMentorshipRequests = mentorshipRequestRepository.count();
62+
long acceptedMentorships = mentorshipRequestRepository.countByStatus(RequestStatus.ACCEPTED);
63+
long pendingRequests = mentorshipRequestRepository.countByStatus(RequestStatus.PENDING);
64+
long completedMentorships = mentorshipRequestRepository.countByStatus(RequestStatus.COMPLETED);
65+
long declinedRequests = mentorshipRequestRepository.countByStatus(RequestStatus.DECLINED);
66+
long closedRequests = mentorshipRequestRepository.countByStatus(RequestStatus.CLOSED);
67+
long totalMentorReviews = mentorReviewRepository.count();
68+
long totalResumeReviews = resumeReviewRepository.count();
69+
5070
// mock for now
5171
long forumPosts = 0;
52-
long mentorships = 0;
5372

5473

5574
// update the cached stats
@@ -59,14 +78,22 @@ public void refreshStats() {
5978
.totalJobSeekers(totalJobSeekers)
6079
.totalJobPosts(totalJobPosts)
6180
.totalForumPosts(forumPosts)
62-
.currentMentorships(mentorships)
6381
.remoteJobsCount(remoteJobs)
6482
.inclusiveJobsCount(inclusiveJobs)
6583
.newJobsThisWeekCount(newJobs)
6684
.totalApplications(totalApps)
6785
.totalPendingApplications(pendingApps)
6886
.totalAcceptedApplications(acceptedApps)
6987
.totalRejectedApplications(rejectedApps)
88+
.totalMentors(totalMentors)
89+
.totalMentorshipRequests(totalMentorshipRequests)
90+
.acceptedMentorships(acceptedMentorships)
91+
.pendingMentorshipRequests(pendingRequests)
92+
.completedMentorships(completedMentorships)
93+
.declinedMentorshipRequests(declinedRequests)
94+
.closedMentorshipRequests(closedRequests)
95+
.totalMentorReviews(totalMentorReviews)
96+
.totalResumeReviews(totalResumeReviews)
7097
.build();
7198
}
7299

apps/jobboard-backend/src/main/java/org/bounswe/jobboardbackend/mentorship/repository/MentorshipRequestRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import org.bounswe.jobboardbackend.mentorship.dto.MentorshipDetailsDTO;
55
import org.bounswe.jobboardbackend.mentorship.model.MentorshipRequest;
6+
import org.bounswe.jobboardbackend.mentorship.model.RequestStatus;
67
import org.springframework.data.jpa.repository.JpaRepository;
78
import org.springframework.data.jpa.repository.Query;
89
import org.springframework.data.repository.query.Param;
@@ -27,4 +28,7 @@ public interface MentorshipRequestRepository extends JpaRepository<MentorshipReq
2728
"WHERE mr.requester.id = :menteeId AND mr.status = 'ACCEPTED' " +
2829
"ORDER BY mr.createdAt DESC")
2930
List<MentorshipDetailsDTO> findAllMentorshipDetailsByMenteeId(@Param("menteeId") Long menteeId);
31+
32+
// Dashboard stats methods
33+
long countByStatus(RequestStatus status);
3034
}

0 commit comments

Comments
 (0)