From 178666da93a31149088ea96c8e26db0d013728f8 Mon Sep 17 00:00:00 2001 From: jay pratap singh <jaypratap.singh@tarento.com> Date: Wed, 23 Aug 2023 20:44:56 +0530 Subject: [PATCH] adding code for pending verifications of enrolments --- upsmf-entity/pom.xml | 8 ++++++ .../controller/StudentController.java | 27 +++++++++++++++++-- .../examsAndAdmissions/model/Student.java | 5 ++++ .../model/VerificationStatus.java | 2 +- .../model/dto/StudentDto.java | 2 ++ .../repository/StudentRepository.java | 4 +++ .../service/StudentService.java | 18 +++++++++++++ 7 files changed, 63 insertions(+), 3 deletions(-) diff --git a/upsmf-entity/pom.xml b/upsmf-entity/pom.xml index 4748eeb..f283d58 100644 --- a/upsmf-entity/pom.xml +++ b/upsmf-entity/pom.xml @@ -92,6 +92,14 @@ <artifactId>modelmapper</artifactId> <version>3.0.0</version> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + </dependency> <dependency> <groupId>org.upsmf</groupId> <artifactId>upsmf-es-utils</artifactId> diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/controller/StudentController.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/controller/StudentController.java index 571000f..743f295 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/controller/StudentController.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/controller/StudentController.java @@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.validation.Valid; import java.io.IOException; @@ -17,7 +19,7 @@ import java.util.Optional; @RestController @RequestMapping("/students") public class StudentController { - + private final Logger logger = LoggerFactory.getLogger(StudentController.class); @Autowired private StudentService studentService; @@ -56,7 +58,27 @@ public class StudentController { return ResponseEntity.badRequest().build(); } } + @PutMapping("/closePendingFor14Days") + public ResponseEntity<?> updateStudentStatusToClosed() { + try { + List<Student> updatedStudents = studentService.updateStudentStatusToClosed(); + return ResponseEntity.ok(updatedStudents); + } catch (Exception e) { + logger.error("Error updating student status based on days", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An error occurred while updating student status."); + } + } + @GetMapping("/pendingFor21Days") + public ResponseEntity<?> getStudentsPendingFor21Days() { + try { + List<Student> students = studentService.getStudentsPendingForMoreThan21Days(); + return ResponseEntity.ok(students); + } catch (Exception e) { + logger.error("Error fetching students pending for 21 days", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An error occurred while fetching students."); + } + } @DeleteMapping("/{id}") public ResponseEntity<Void> deleteStudent(@PathVariable Long id) { try { @@ -68,9 +90,10 @@ public class StudentController { } @PutMapping("/{studentId}/verify") - public ResponseEntity<Student> verifyStudent(@PathVariable Long studentId, @RequestParam("status") VerificationStatus status) { + public ResponseEntity<Student> verifyStudent(@PathVariable Long studentId, @RequestParam("status") VerificationStatus status, @RequestParam("remarks") String remarks) { Student student = studentService.findById(studentId); student.setVerificationStatus(status); + student.setAdminRemarks(remarks); studentService.save(student); return ResponseEntity.ok(student); } diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/Student.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/Student.java index fef013f..4a25628 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/Student.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/Student.java @@ -51,8 +51,13 @@ public class Student { private String highSchoolYearOfPassing; private String intermediateRollNo; private String intermediateYearOfPassing; + @Enumerated(EnumType.STRING) private VerificationStatus verificationStatus = VerificationStatus.PENDING; private String provisionalEnrollmentNumber; + private String adminRemarks; + private LocalDate enrollmentDate; + private LocalDate verificationDate; + @ManyToOne @JoinColumn(name = "course_id") private Course course; diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/VerificationStatus.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/VerificationStatus.java index a2ae264..c6371d3 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/VerificationStatus.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/VerificationStatus.java @@ -1,5 +1,5 @@ package com.tarento.upsmf.examsAndAdmissions.model; public enum VerificationStatus { - PENDING, VERIFIED, REJECTED + PENDING, VERIFIED, REJECTED, CLOSED } diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/dto/StudentDto.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/dto/StudentDto.java index d68eec7..3d2ac67 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/dto/StudentDto.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/model/dto/StudentDto.java @@ -39,6 +39,8 @@ public class StudentDto { private String highSchoolYearOfPassing; private String intermediateRollNo; private String intermediateYearOfPassing; + private String adminRemarks; + private MultipartFile highSchoolMarksheet; private MultipartFile highSchoolCertificate; diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentRepository.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentRepository.java index d478f90..3ebb163 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentRepository.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/repository/StudentRepository.java @@ -5,10 +5,14 @@ import com.tarento.upsmf.examsAndAdmissions.model.VerificationStatus; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.time.LocalDate; import java.util.List; @Repository public interface StudentRepository extends JpaRepository<Student, Long> { List<Student> findByVerificationStatus(VerificationStatus status); + List<Student> findByVerificationDateBeforeAndVerificationStatusNot(LocalDate date, VerificationStatus status); + List<Student> findByVerificationDateBeforeAndVerificationStatus(LocalDate date, VerificationStatus status); + } diff --git a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentService.java b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentService.java index 2ab1bc6..a1013f1 100644 --- a/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentService.java +++ b/upsmf-entity/src/main/java/com/tarento/upsmf/examsAndAdmissions/service/StudentService.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.LocalDate; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -130,6 +131,23 @@ public class StudentService { return studentRepository.save(existingStudent); } + public List<Student> updateStudentStatusToClosed() { + LocalDate cutoffDate = LocalDate.now().minusDays(14); + List<Student> studentsToClose = studentRepository.findByVerificationDateBeforeAndVerificationStatusNot(cutoffDate, VerificationStatus.CLOSED); + + logger.info("Students found to close: " + studentsToClose.size()); + + for (Student student : studentsToClose) { + student.setVerificationStatus(VerificationStatus.CLOSED); + } + + return studentRepository.saveAll(studentsToClose); + } + + public List<Student> getStudentsPendingForMoreThan21Days() { + LocalDate twentyOneDaysAgo = LocalDate.now().minusDays(21); + return studentRepository.findByVerificationDateBeforeAndVerificationStatus(twentyOneDaysAgo, VerificationStatus.PENDING); + } private void deleteFile(String filePath) { if (filePath == null || filePath.isEmpty()) { -- GitLab