Add the unregistration of a specific cursus only
This commit is contained in:
		| @ -103,7 +103,15 @@ public class RequestsController { | ||||
|     @PostMapping(value = "/unregister") | ||||
|     public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){ | ||||
|         User u = userRepository.findById((int) uninscr.get("userId")); | ||||
|         UnregisterRequest ur = new UnregisterRequest(RequestState.Pending, (String) uninscr.get("reason"), new Date(), u.getRegNo(), u.getFirstName(), u.getLastName(), u.getEmail()); | ||||
|         Curriculum c; | ||||
|  | ||||
|         if (uninscr.get("curriculumId") == null){ | ||||
|             c = null; | ||||
|         }else{ | ||||
|             c = curriculumRepository.findById((Integer) uninscr.get("curriculumId")); | ||||
|         } | ||||
|  | ||||
|         UnregisterRequest ur = new UnregisterRequest(RequestState.Pending, (String) uninscr.get("reason"), new Date(), u.getRegNo(), u.getFirstName(), u.getLastName(), u.getEmail(), c); | ||||
|         unregisterRequestRepository.save(ur); | ||||
|         return new ResponseEntity<>(HttpStatus.OK); | ||||
|     } | ||||
| @ -149,11 +157,18 @@ public class RequestsController { | ||||
|         unregisterRequest.setState(newstate); | ||||
|  | ||||
|         if (newstate == RequestState.Accepted){ | ||||
|             ArrayList<UserCurriculum> userCurricula = userCurriculumRepository.findByUserOrderByCurriculum(u); | ||||
|             for (int i = 0; i < userCurricula.size(); i++){ | ||||
|                 userCurricula.get(i).setActual(false); | ||||
|             if (unregisterRequest.getCurriculum() == null){ | ||||
|                 ArrayList<UserCurriculum> userCurricula = userCurriculumRepository.findByUserOrderByCurriculum(u); | ||||
|                 for (int i = 0; i < userCurricula.size(); i++){ | ||||
|                     userCurricula.get(i).setActual(false); | ||||
|                 } | ||||
|                 userCurriculumRepository.saveAll(userCurricula); | ||||
|             }else{ | ||||
|                 //This usercurriculum will contain the usercurriculum to set false | ||||
|                 UserCurriculum userCurriculum = userCurriculumRepository.findByUserAndCurriculumAndActual(u, unregisterRequest.getCurriculum(), true); | ||||
|                 userCurriculum.setActual(false); | ||||
|                 userCurriculumRepository.save(userCurriculum); | ||||
|             } | ||||
|             userCurriculumRepository.saveAll(userCurricula); | ||||
|         } | ||||
|  | ||||
|         unregisterRequestRepository.save(unregisterRequest); | ||||
|  | ||||
| @ -128,7 +128,7 @@ public class MockController { | ||||
|  | ||||
|         inscriptionService.save(inscriptionRequest); | ||||
|  | ||||
|         UnregisterRequest unregisterRequest = new UnregisterRequest(RequestState.Pending, "je veux partir", new Date(), joe.getRegNo(), joe.getFirstName(), joe.getLastName(), joe.getEmail()); | ||||
|         UnregisterRequest unregisterRequest = new UnregisterRequest(RequestState.Pending, "je veux partir", new Date(), joe.getRegNo(), joe.getFirstName(), joe.getLastName(), joe.getEmail(), null); | ||||
|         uninscriptionRequestRepository.save(unregisterRequest); | ||||
|  | ||||
|         ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null); | ||||
|  | ||||
| @ -14,4 +14,5 @@ public interface UserCurriculumRepository extends CrudRepository<UserCurriculum, | ||||
|     Curriculum findByUser(User student); | ||||
|  | ||||
|     ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student); | ||||
|     UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual); | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| package ovh.herisson.Clyde.Tables.Inscription; | ||||
|  | ||||
| import jakarta.persistence.*; | ||||
| import ovh.herisson.Clyde.Tables.Curriculum; | ||||
| import ovh.herisson.Clyde.Tables.RequestState; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
|  | ||||
| @ -24,7 +25,12 @@ public class UnregisterRequest { | ||||
|  | ||||
|     private String email; | ||||
|  | ||||
|     public UnregisterRequest(RequestState state, String reason, Date date, long regNo, String firstName, String lastName, String email){ | ||||
|     //Null if the user unregister for the academic year, contains a curriculum if the user wants to unregister from a specific curriculum | ||||
|     @ManyToOne | ||||
|     @JoinColumn(name = "Curriculum") | ||||
|     private Curriculum curriculum; | ||||
|  | ||||
|     public UnregisterRequest(RequestState state, String reason, Date date, long regNo, String firstName, String lastName, String email, Curriculum curriculum){ | ||||
|         this.state = state; | ||||
|         this.reason = reason; | ||||
|         this.date = date; | ||||
| @ -32,6 +38,7 @@ public class UnregisterRequest { | ||||
|         this.firstName = firstName; | ||||
|         this.lastName = lastName; | ||||
|         this.email = email; | ||||
|         this.curriculum = curriculum; | ||||
|     } | ||||
|  | ||||
|     public UnregisterRequest(){} | ||||
| @ -95,5 +102,14 @@ public class UnregisterRequest { | ||||
|     public long getRegNo() { | ||||
|         return regNo; | ||||
|     } | ||||
|  | ||||
|     public void setCurriculum(Curriculum curriculum) { | ||||
|         this.curriculum = curriculum; | ||||
|     } | ||||
|  | ||||
|     public Curriculum getCurriculum() { | ||||
|         return curriculum; | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -28,6 +28,8 @@ | ||||
|   //0 base, 1 modif, 2 curriculum, 3 register, 4 courselist, 5 minerval, 6 payment, 7 scholarship, 8 scholarshipinfos, 9 unregister, 10 sure, 11 aboutunregister | ||||
|   const windowState = ref(0); | ||||
|  | ||||
|   const isChecked = ref(false); | ||||
|  | ||||
|   const pattern = { | ||||
|     profilPictureUrl:null, | ||||
|     email:null, | ||||
| @ -71,7 +73,8 @@ | ||||
|   //Used to post a uninscription request | ||||
|   const uninscriptionData = reactive({ | ||||
|     reason : null, | ||||
|     userId : user.value.regNo | ||||
|     userId : user.value.regNo, | ||||
|     curriculumId:null | ||||
|   }) | ||||
|   const paymentAmount = ref(0); | ||||
|   let toModify= Object.assign({}, pattern); | ||||
| @ -194,14 +197,24 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|         <div v-else-if="windowState === 9" class="infosContainer"> | ||||
|             <div v-if="sure !== 2">Please enter the reason you leave the university</div> | ||||
|             <div v-if="sure !== 2">Please enter the reason you leave</div> | ||||
|             <textarea v-if="sure !== 2" v-model="uninscriptionData.reason"></textarea> | ||||
|             <div v-if="sure !== 2"> | ||||
|             I only want to unregister from a specific cursus | ||||
|             <input type="checkbox" v-model="isChecked"> | ||||
|             </div> | ||||
|             <div v-if="sure !== 2 && isChecked"> | ||||
|               Please select that cursus | ||||
|               <select v-model="uninscriptionData.curriculumId"> | ||||
|                 <option v-for="item in getActualCurriculumList()" :value="item.curriculumId">Bac {{item.year}} {{item.option}}</option> | ||||
|               </select> | ||||
|             </div> | ||||
|             <div v-if="sure !== 2"> | ||||
|               <button @click="sure++">Submit</button> | ||||
|             </div> | ||||
|             <div v-if="sure==1"> | ||||
|               Are you sure that you want to unregister ? | ||||
|               <button @click="addUninscReq(uninscriptionData.userId, uninscriptionData.reason);sure++">Yes</button> | ||||
|               <button @click="addUninscReq(uninscriptionData.userId, uninscriptionData.reason, uninscriptionData.curriculumId);sure++">Yes</button> | ||||
|               <button @click="sure=0">No</button> | ||||
|             </div> | ||||
|             <p v-if="sure==2">You request has been send !</p> | ||||
|  | ||||
| @ -20,8 +20,8 @@ export async function editEquivalenceState(id, newstate){ | ||||
|     return restPatch("/request/registerequiv/"+id+"/"+newstate) | ||||
| } | ||||
|  | ||||
| export async function addUninscReq(userId, reason){ | ||||
|     return restPost("/unregister", {"userId" : userId, "reason" : reason}) | ||||
| export async function addUninscReq(userId, reason, curriculumId){ | ||||
|     return restPost("/unregister", {"userId" : userId, "reason" : reason, "curriculumId":curriculumId}) | ||||
| } | ||||
|  | ||||
| export async function editScholarshipReq(body){ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user