Leo/InscriptionDesEtudiant #161

Merged
LeoMoulin merged 10 commits from Leo/InscriptionDesEtudiant into master 2024-04-18 21:43:48 +02:00
6 changed files with 57 additions and 12 deletions
Showing only changes of commit 1be7b4cdbe - Show all commits

View File

@ -103,7 +103,15 @@ public class RequestsController {
@PostMapping(value = "/unregister") @PostMapping(value = "/unregister")
public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){ public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){
User u = userRepository.findById((int) uninscr.get("userId")); 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); unregisterRequestRepository.save(ur);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@ -149,11 +157,18 @@ public class RequestsController {
unregisterRequest.setState(newstate); unregisterRequest.setState(newstate);
if (newstate == RequestState.Accepted){ if (newstate == RequestState.Accepted){
ArrayList<UserCurriculum> userCurricula = userCurriculumRepository.findByUserOrderByCurriculum(u); if (unregisterRequest.getCurriculum() == null){
for (int i = 0; i < userCurricula.size(); i++){ ArrayList<UserCurriculum> userCurricula = userCurriculumRepository.findByUserOrderByCurriculum(u);
userCurricula.get(i).setActual(false); 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); unregisterRequestRepository.save(unregisterRequest);

View File

@ -128,7 +128,7 @@ public class MockController {
inscriptionService.save(inscriptionRequest); 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); uninscriptionRequestRepository.save(unregisterRequest);
ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null); ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null);

View File

@ -14,4 +14,5 @@ public interface UserCurriculumRepository extends CrudRepository<UserCurriculum,
Curriculum findByUser(User student); Curriculum findByUser(User student);
ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student); ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student);
UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual);
} }

View File

@ -1,6 +1,7 @@
package ovh.herisson.Clyde.Tables.Inscription; package ovh.herisson.Clyde.Tables.Inscription;
import jakarta.persistence.*; import jakarta.persistence.*;
import ovh.herisson.Clyde.Tables.Curriculum;
import ovh.herisson.Clyde.Tables.RequestState; import ovh.herisson.Clyde.Tables.RequestState;
import ovh.herisson.Clyde.Tables.User; import ovh.herisson.Clyde.Tables.User;
@ -24,7 +25,12 @@ public class UnregisterRequest {
private String email; 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.state = state;
this.reason = reason; this.reason = reason;
this.date = date; this.date = date;
@ -32,6 +38,7 @@ public class UnregisterRequest {
this.firstName = firstName; this.firstName = firstName;
this.lastName = lastName; this.lastName = lastName;
this.email = email; this.email = email;
this.curriculum = curriculum;
} }
public UnregisterRequest(){} public UnregisterRequest(){}
@ -95,5 +102,14 @@ public class UnregisterRequest {
public long getRegNo() { public long getRegNo() {
return regNo; return regNo;
} }
public void setCurriculum(Curriculum curriculum) {
this.curriculum = curriculum;
}
public Curriculum getCurriculum() {
return curriculum;
}
} }

View File

@ -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 //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 windowState = ref(0);
const isChecked = ref(false);
const pattern = { const pattern = {
profilPictureUrl:null, profilPictureUrl:null,
email:null, email:null,
@ -71,7 +73,8 @@
//Used to post a uninscription request //Used to post a uninscription request
const uninscriptionData = reactive({ const uninscriptionData = reactive({
reason : null, reason : null,
userId : user.value.regNo userId : user.value.regNo,
curriculumId:null
}) })
const paymentAmount = ref(0); const paymentAmount = ref(0);
let toModify= Object.assign({}, pattern); let toModify= Object.assign({}, pattern);
@ -194,14 +197,24 @@
</div> </div>
</div> </div>
<div v-else-if="windowState === 9" class="infosContainer"> <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> <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"> <div v-if="sure !== 2">
<button @click="sure++">Submit</button> <button @click="sure++">Submit</button>
</div> </div>
<div v-if="sure==1"> <div v-if="sure==1">
Are you sure that you want to unregister ? 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> <button @click="sure=0">No</button>
</div> </div>
<p v-if="sure==2">You request has been send !</p> <p v-if="sure==2">You request has been send !</p>

View File

@ -20,8 +20,8 @@ export async function editEquivalenceState(id, newstate){
return restPatch("/request/registerequiv/"+id+"/"+newstate) return restPatch("/request/registerequiv/"+id+"/"+newstate)
} }
export async function addUninscReq(userId, reason){ export async function addUninscReq(userId, reason, curriculumId){
return restPost("/unregister", {"userId" : userId, "reason" : reason}) return restPost("/unregister", {"userId" : userId, "reason" : reason, "curriculumId":curriculumId})
} }
export async function editScholarshipReq(body){ export async function editScholarshipReq(body){