From 1964b55568f26b5ddc4d8bdf2070ceb60d8a9f13 Mon Sep 17 00:00:00 2001 From: Radheshhathwar <radheshhathwar.bh@gmail.com> Date: Thu, 2 Nov 2023 11:54:43 +0530 Subject: [PATCH] studentResults/resultUploadStatusForInstitute attendance/getByExamCycle --- .../repository/AttendanceRepository.java | 2 ++ .../repository/ExamCycleRepository.java | 3 +++ .../repository/ExamRepository.java | 1 + .../repository/StudentResultRepository.java | 7 +++++ .../service/AttendanceService.java | 4 +-- .../service/DataImporterService.java | 2 +- .../service/StudentResultService.java | 26 +++++++++++-------- 7 files changed, 31 insertions(+), 14 deletions(-) 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 09a8da8..113e6d8 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 cb85bcf..d41263d 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 f914cb8..62b1003 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 f12ee6c..f1823a9 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 393d3bc..fbd4ac2 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 9bc668f..67d760a 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 4d25b91..b94a0d2 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()) { -- GitLab