Unverified Commit 9b3b0461 authored by Ankit Verma's avatar Ankit Verma Committed by GitHub
Browse files

Merge pull request #182 from Radheshhathwar/development

Showing with 28 additions and 9 deletions
+28 -9
......@@ -86,6 +86,7 @@ public class HallTicketController {
@PostMapping("/dataCorrection/request")
public ResponseEntity<ResponseDto> requestDataCorrection(
@RequestParam("studentId") Long studentId,
@RequestParam("examCycleId") Long examCycleId,
@RequestParam(value = "updatedFirstName", required = false) Optional<String> updatedFirstNameOpt,
@RequestParam(value = "updatedLastName", required = false) Optional<String> updatedLastNameOpt,
@RequestParam(value = "updatedDOB", required = false) Optional<String> dobOpt, // Taking as string for optional handling
......@@ -96,7 +97,7 @@ public class HallTicketController {
String updatedLastName = updatedLastNameOpt.orElse(null);
LocalDate updatedDOB = dobOpt.isPresent() ? LocalDate.parse(dobOpt.get()) : null;
ResponseDto responseDto = hallTicketService.requestHallTicketDataCorrection(studentId, updatedFirstName, updatedLastName, updatedDOB, proof);
ResponseDto responseDto = hallTicketService.requestHallTicketDataCorrection(studentId,examCycleId, updatedFirstName, updatedLastName, updatedDOB, proof);
return ResponseEntity.status(responseDto.getResponseCode().value()).body(responseDto);
}
......
package com.tarento.upsmf.examsAndAdmissions.model.dto;
import com.tarento.upsmf.examsAndAdmissions.model.Exam;
import com.tarento.upsmf.examsAndAdmissions.model.ExamCycle;
import com.tarento.upsmf.examsAndAdmissions.model.Student;
import lombok.*;
......@@ -20,6 +21,9 @@ public class DataCorrectionRequest {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "student_id")
private Student student;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "exam_cycle_id")
private ExamCycle examCycle;
private String requestedCorrection;
private String status;
private String rejectionReason;
......
......@@ -58,4 +58,7 @@ public interface StudentExamRegistrationRepository extends JpaRepository<Student
@Query("SELECT s FROM Student s WHERE s.verificationStatus = com.tarento.upsmf.examsAndAdmissions.enums.VerificationStatus.VERIFIED AND s.institute.id = :instituteId AND NOT EXISTS (SELECT ser FROM StudentExamRegistration ser WHERE ser.student.id = s.id AND ser.examCycle.id = :examCycleId)")
List<Student> findVerifiedStudentsNotRegisteredForExamCycleByInstitute(Long examCycleId, Long instituteId);
StudentExamRegistration getByStudentId(Long id);
StudentExamRegistration getByStudentIdAndExamCycleId(Long studentId, Long examCycleId);
}
......@@ -39,11 +39,12 @@ public interface StudentResultRepository extends JpaRepository<StudentResult, Lo
@Transactional
@Query("UPDATE StudentResult sr SET sr.externalMarks = null, sr.passingExternalMarks = null, sr.externalMarksObtained = null, sr.finalMarkFlag = false, sr.published = false WHERE sr.examCycle_name = :examCycleName AND sr.instituteId = :instituteId")
int setExternalMarksToNull(@Param("examCycleName") String examCycleName, @Param("instituteId") Long instituteId);
@Query("SELECT sr FROM StudentResult sr WHERE sr.firstName = :firstName AND sr.lastName = :lastName AND sr.enrollmentNumber = :enrollmentNumber")
StudentResult findByFirstNameAndLastNameAndEnrollmentNumber(
@Query("SELECT sr FROM StudentResult sr WHERE sr.firstName = :firstName AND sr.lastName = :lastName AND sr.enrollmentNumber = :enrollmentNumber AND sr.exam_name = :examName")
StudentResult findByFirstNameAndLastNameAndEnrollmentNumberAndExamName(
@Param("firstName") String firstName,
@Param("lastName") String lastName,
@Param("enrollmentNumber") String enrollmentNumber
@Param("enrollmentNumber") String enrollmentNumber,
@Param("examName") String examName
);
Optional<StudentResult> findByExamId(Long id);
......
......@@ -425,7 +425,7 @@ public class DataImporterService {
}
}
if (validationErrors.isEmpty()) {
StudentResult existingEntity = repository.findByFirstNameAndLastNameAndEnrollmentNumber(dto.getFirstName(), dto.getLastName(), dto.getEnrollmentNumber());
StudentResult existingEntity = repository.findByFirstNameAndLastNameAndEnrollmentNumberAndExamName(dto.getFirstName(), dto.getLastName(), dto.getEnrollmentNumber(), dto.getExam_name());
List<StudentResult> marks = calculateResult(existingEntity.getInternalMarks(), existingEntity.getPassingInternalMarks(), existingEntity.getInternalMarksObtained(), existingEntity.getPracticalMarks(),
existingEntity.getPassingPracticalMarks(), existingEntity.getPracticalMarksObtained(), dto.getExternalMarks(), dto.getPassingExternalMarks(), dto.getExternalMarksObtained());
......@@ -483,7 +483,7 @@ public class DataImporterService {
}
}
if (validationErrors.isEmpty()) {
StudentResult existingEntity = repository.findByFirstNameAndLastNameAndEnrollmentNumber(dto.getFirstName(), dto.getLastName(), dto.getEnrollmentNumber());
StudentResult existingEntity = repository.findByFirstNameAndLastNameAndEnrollmentNumberAndExamName(dto.getFirstName(), dto.getLastName(), dto.getEnrollmentNumber(),dto.getExam_name());
List<StudentResult> marks = calculateResult(existingEntity.getInternalMarks(), existingEntity.getPassingInternalMarks(), existingEntity.getInternalMarksObtained(), existingEntity.getPracticalMarks(),
existingEntity.getPassingPracticalMarks(), existingEntity.getPracticalMarksObtained(), dto.getExternalMarks(), dto.getPassingExternalMarks(), dto.getExternalMarksObtained());
......
......@@ -51,6 +51,8 @@ public class HallTicketService {
DataCorrectionRequestRepository dataCorrectionRequestRepository;
@Autowired
private StudentRepository studentRepository;
@Autowired
private ExamCycleRepository examCycleRepository;
@Autowired
private StudentExamRegistrationRepository studentExamRegistrationRepository;
......@@ -253,6 +255,7 @@ public class HallTicketService {
}
public ResponseDto requestHallTicketDataCorrection(Long studentId,
Long examCycleId,
String updatedFirstName,
String updatedLastName,
LocalDate updatedDOB,
......@@ -271,6 +274,12 @@ public class HallTicketService {
setErrorResponse(response, "PROOF_MISSING", "Proof attachment is required", HttpStatus.BAD_REQUEST);
return response;
}
Optional<ExamCycle> optionalExamCycle = examCycleRepository.findById(examCycleId);
if (!optionalExamCycle.isPresent()) {
setErrorResponse(response, "INVALID_EXAMCYCLEID", "Invalid ExamCycle ID", HttpStatus.BAD_REQUEST);
return response;
}
DataCorrectionRequest request = new DataCorrectionRequest();
request.setStudent(optionalStudent.get());
......@@ -283,6 +292,7 @@ public class HallTicketService {
if (updatedDOB != null) {
request.setUpdatedDOB(updatedDOB);
}
request.setExamCycle(optionalExamCycle.get());
request.setStatus("NEW");
String path = studentService.storeFile(proof);
......@@ -330,7 +340,7 @@ public class HallTicketService {
formattedRequest.put("lastName", student.getSurname()); // changed from 'surName'
formattedRequest.put("enrollmentNumber", student.getEnrollmentNumber());
StudentExamRegistration registration = studentExamRegistrationRepository.findByStudent(student);
StudentExamRegistration registration = studentExamRegistrationRepository.getByStudentIdAndExamCycleId(student.getId(),request.getExamCycle().getId());
if (registration != null) {
Map<String, Object> examCycleData = new HashMap<>();
ExamCycle examCycle = registration.getExamCycle();
......
......@@ -659,7 +659,7 @@ public class StudentResultService {
// Handle unsupported file type
return ResponseDto.setErrorResponse(response, "UNSUPPORTED_FILE_TYPE", "Unsupported file type", HttpStatus.BAD_REQUEST);
}
String[] selectedColumns = { "First Name", "Last Name", "Enrolment Number","External Marks", "Passing External Marks", "External Marks Obtained" };
String[] selectedColumns = { "First Name", "Last Name", "Enrolment Number", "Exam", "External Marks", "Passing External Marks", "External Marks Obtained" };
JSONArray filteredJsonArray = dataImporterService.filterColumns(jsonArray, selectedColumns);
List<StudentResult> dtoList = dataImporterService.convertJsonToDtoList(filteredJsonArray, StudentResult.class);
ValidationResultDto validationResult = dataImporterService.convertResultDtoListToEntitiesExternalMarks(dtoList, studentResultRepository);
......@@ -698,7 +698,7 @@ public class StudentResultService {
// Handle unsupported file type
return ResponseDto.setErrorResponse(response, "UNSUPPORTED_FILE_TYPE", "Unsupported file type", HttpStatus.BAD_REQUEST);
}
String[] selectedColumns = { "First Name", "Last Name", "Enrolment Number","External Marks", "Passing External Marks", "External Marks Obtained" };
String[] selectedColumns = { "First Name", "Last Name", "Enrolment Number", "Exam", "External Marks", "Passing External Marks", "External Marks Obtained" };
JSONArray filteredJsonArray = dataImporterService.filterColumns(jsonArray, selectedColumns);
List<StudentResult> dtoList = dataImporterService.convertJsonToDtoList(filteredJsonArray, StudentResult.class);
ValidationResultDto validationResult = dataImporterService.convertResultDtoListToEntitiesRevisedMarks(dtoList, studentResultRepository);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment