diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/AttendanceRepository.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/AttendanceRepository.java index 09a8da8a311be358f299e3bac3034aaff15b6158..113e6d8d3a18c788c99b4fce0e351b043ff45f1e 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/AttendanceRepository.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/AttendanceRepository.java @@ -11,4 +11,6 @@ public interface AttendanceRepository extends JpaRepository<AttendanceRecord, Lo boolean existsByStudentEnrollmentNumber(String studentEnrollmentNumber); AttendanceRecord findByStudentEnrollmentNumber(String studentEnrollmentNumber); List<AttendanceRecord> findByExamCycleId(Long examCycleId); + + List<AttendanceRecord> findByExamCycleData(String examCycleName); } \ No newline at end of file diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamCycleRepository.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamCycleRepository.java index cb85bcf5da02ac0ca150c78054dc483c7992bf4d..d41263de9ce8ff9ad027fe7e3ab95e5d3560e92f 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamCycleRepository.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamCycleRepository.java @@ -15,6 +15,9 @@ public interface ExamCycleRepository extends JpaRepository<ExamCycle, Long> { // Fetch all non-obsolete records List<ExamCycle> findByObsolete(Integer value); + @Query("SELECT ec.examCycleName FROM ExamCycle ec WHERE ec.id = :examCycleId") + String getExamCycleNameById(@Param("examCycleId") Long examCycleId); + // Fetch a non-obsolete record by ID Optional<ExamCycle> findByIdAndObsolete(Long id, Integer value); ExamCycle findByExamCycleName(String name); diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamRepository.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamRepository.java index f914cb86c6747effd16b853f622a7e0f1a386a6a..62b100310fa073d6cd5db5737a1b7446b7e6d28c 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamRepository.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/ExamRepository.java @@ -26,4 +26,5 @@ public interface ExamRepository extends JpaRepository<Exam, Long> { @Query("SELECT e FROM Exam e JOIN StudentExamRegistration ser ON e.id = ser.exam.id WHERE ser.student.id = :studentId AND e.examCycleId = :examCycleId") List<Exam> findRegisteredExamsForStudentInCycle(Long studentId, Long examCycleId); + String getExamNameById(Long exam); } diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentResultRepository.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentResultRepository.java index f12ee6cad2175a76809ab0b7abf50d88b830a96e..f1823a95bb2b0a286173af2c4abc4c7075b96c11 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentResultRepository.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentResultRepository.java @@ -2,6 +2,7 @@ package com.tarento.upsmf.examsAndAdmissions.repository; import com.tarento.upsmf.examsAndAdmissions.model.Exam; import com.tarento.upsmf.examsAndAdmissions.model.ExamCycle; +import com.tarento.upsmf.examsAndAdmissions.model.StudentExamRegistration; import com.tarento.upsmf.examsAndAdmissions.model.StudentResult; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; @@ -56,5 +57,11 @@ public interface StudentResultRepository extends JpaRepository<StudentResult, Lo List<StudentResult> findByExamExamNameAndInstituteId(String examName, Long instituteId); List<StudentResult> findByStudent_EnrollmentNumberAndExamCycle_IdAndPublished(String enrollmentNumber, Long examCycleId, boolean b); + + @Query("SELECT sr FROM StudentResult sr WHERE sr.examCycle_name = :examCycleName AND sr.exam_name = :examName AND sr.student.institute.id = :institute") + List<StudentResult> findByExamCycleNameAndExamNameAndInstitute(String examCycleName, String examName, Long institute); + + @Query("SELECT sr FROM StudentResult sr WHERE sr.examCycle_name = :examCycleName") + List<StudentResult> findByExamCycleName(String examCycleName); } diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/AttendanceService.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/AttendanceService.java index 393d3bc23a4580114a7ebf81bd1b68c0399201d5..fbd4ac25898b161ab365b35f785c46f3b61465b0 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/AttendanceService.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/AttendanceService.java @@ -270,8 +270,8 @@ public class AttendanceService { } public ResponseDto getByExamCycleId(Long ExamCycleId) { ResponseDto response = new ResponseDto(Constants.API_ATTENDANCE_BY_EXAM_CYCLE_ID); - List<AttendanceRecord> records = attendanceRepository.findByExamCycleId(ExamCycleId); - + String examCycleName = examCycleRepository.getExamCycleNameById(ExamCycleId); + List<AttendanceRecord> records = attendanceRepository.findByExamCycleData(examCycleName); if (records.isEmpty()) { ResponseDto.setErrorResponse(response, "NO_RECORDS_FOUND", "No attendance records found", HttpStatus.NOT_FOUND); } else { diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/DataImporterService.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/DataImporterService.java index 9bc668f53da283ab466ba40e181e2097fd40735c..67d760afb089e5f5dde03b0eade56c4edcaaa968 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/DataImporterService.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/DataImporterService.java @@ -402,7 +402,7 @@ public class DataImporterService { for (StudentResult dto : dtoList) { boolean isDuplicate = checkIfDataExists(dto); - + //fetch data from student_exam_registration and set the flag there, if the record is not found break and return data invalid if (isDuplicate) { if (!DataValidation.isFirstNameValid(dto.getFirstName())) { validationErrors.add("- First Name is invalid: " + dto.getFirstName() + " First name has to contain alphabetic values only"); diff --git a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentResultService.java b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentResultService.java index 4d25b9111df9217ea1d82f49ef6a687d516d81ec..b94a0d23f60033df014d564ecdb10624c06503e7 100644 --- a/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentResultService.java +++ b/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentResultService.java @@ -9,7 +9,9 @@ import com.tarento.upsmf.examsAndAdmissions.repository.*; import com.tarento.upsmf.examsAndAdmissions.util.Constants; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.codehaus.jettison.json.JSONArray; @@ -19,8 +21,6 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.math.BigDecimal; -import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -33,6 +33,8 @@ public class StudentResultService { @Autowired private StudentRepository studentRepository; + @Autowired + private InstituteRepository instituteRepository; @Autowired private CourseRepository courseRepository; @@ -703,8 +705,8 @@ public class StudentResultService { } public ResponseDto getExamResultsByExamCycle(Long examCycle) { ResponseDto response = new ResponseDto(Constants.API_EXAM_CYCLE_MANAGE_RESULTS); - - List<StudentExamRegistration> results = studentExamRegistrationRepository.findByExamCycleId(examCycle); + String examCycleName = examCycleRepository.getExamCycleNameById(examCycle); + List<StudentResult> results = studentResultRepository.findByExamCycleName(examCycleName); if (results == null || results.isEmpty()) { ResponseDto.setErrorResponse(response, "RECORD_NOT_FOUND", "No record found for the given exam cycle.", HttpStatus.NOT_FOUND); @@ -719,17 +721,17 @@ public class StudentResultService { return response; } - private static Map<Long, ProcessedResultDto> getProcessedResults(List<StudentExamRegistration> results) { + private Map<Long, ProcessedResultDto> getProcessedResults(List<StudentResult> results) { Map<Long, ProcessedResultDto> processedResults = new HashMap<>(); - for (StudentExamRegistration result : results) { - Institute institute = result.getStudent().getInstitute(); - Long instituteId = institute.getId(); + for (StudentResult result : results) { + Long instituteId = result.getInstituteId(); + Institute institute = instituteRepository.findById(instituteId).orElseThrow(); ProcessedResultDto instituteResult = processedResults.computeIfAbsent(instituteId, id -> { ProcessedResultDto dto = new ProcessedResultDto(); dto.setInstituteId(instituteId); dto.setInstituteName(institute.getInstituteName()); - dto.setCourse(result.getStudent().getCourse().getCourseName()); + dto.setCourse(result.getCourse_name()); return dto; }); instituteResult.setHasFinalMarks(result.isInternalMarkFlag()); @@ -742,7 +744,9 @@ public class StudentResultService { public ResponseDto getMarksByInstituteAndExamCycle(Long examCycle, Long exam, Long institute) { ResponseDto response = new ResponseDto(Constants.API_SINGLE_EXAM_MARK); - List<StudentResult> studentResults = studentResultRepository.findByExamCycleAndExamAndInstitute(examCycle, exam, institute); + String examCycleName = examCycleRepository.getExamCycleNameById(examCycle); + String examName = examRepository.getExamNameById(exam); + List<StudentResult> studentResults = studentResultRepository.findByExamCycleNameAndExamNameAndInstitute(examCycleName, examCycleName, institute); // If no results found, return a not found response. if(studentResults.isEmpty()) {