Add the uninscription request submission
This commit is contained in:
		| @ -6,12 +6,14 @@ import org.springframework.web.bind.annotation.*; | |||||||
| import ovh.herisson.Clyde.Repositories.CourseRepository; | import ovh.herisson.Clyde.Repositories.CourseRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.Inscription.ExemptionsRequestRepository; | import ovh.herisson.Clyde.Repositories.Inscription.ExemptionsRequestRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository; | import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository; | ||||||
|  | import ovh.herisson.Clyde.Repositories.Inscription.UninscriptionRequestRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | import ovh.herisson.Clyde.Repositories.UserRepository; | ||||||
| import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | ||||||
| import ovh.herisson.Clyde.Services.AuthenticatorService; | import ovh.herisson.Clyde.Services.AuthenticatorService; | ||||||
| import ovh.herisson.Clyde.Tables.*; | import ovh.herisson.Clyde.Tables.*; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.ExemptionsRequest; | import ovh.herisson.Clyde.Tables.Inscription.ExemptionsRequest; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest; | import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.Inscription.UninscriptionRequest; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| @ -25,14 +27,15 @@ public class RequestsController { | |||||||
|     public final ScholarshipRequestRepository srr; |     public final ScholarshipRequestRepository srr; | ||||||
|     public final UserRepository userRepository; |     public final UserRepository userRepository; | ||||||
|     public final AuthenticatorService authServ; |     public final AuthenticatorService authServ; | ||||||
|  |     public final UninscriptionRequestRepository uninscriptionRequestRepository; | ||||||
|     public final CourseRepository courseRepository; |     public final CourseRepository courseRepository; | ||||||
|  |  | ||||||
|     public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr, UserRepository userRepository, AuthenticatorService authServ, CourseRepository courseRepository) { |     public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr, UserRepository userRepository, AuthenticatorService authServ, UninscriptionRequestRepository uninscriptionRequestRepository, CourseRepository courseRepository) { | ||||||
|         this.err = err; |         this.err = err; | ||||||
|         this.srr = srr; |         this.srr = srr; | ||||||
|         this.userRepository = userRepository; |         this.userRepository = userRepository; | ||||||
|         this.authServ = authServ; |         this.authServ = authServ; | ||||||
|  |         this.uninscriptionRequestRepository = uninscriptionRequestRepository; | ||||||
|         this.courseRepository = courseRepository; |         this.courseRepository = courseRepository; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -83,4 +86,12 @@ public class RequestsController { | |||||||
|  |  | ||||||
|         return new ResponseEntity<>(toReturn, HttpStatus.OK); |         return new ResponseEntity<>(toReturn, HttpStatus.OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @PostMapping(value = "/uninscriptionreq") | ||||||
|  |     public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){ | ||||||
|  |         User u = userRepository.findById((int) uninscr.get("userId")); | ||||||
|  |         UninscriptionRequest ur = new UninscriptionRequest(RequestState.Pending, (String) uninscr.get("reason"), new Date(), u); | ||||||
|  |         uninscriptionRequestRepository.save(ur); | ||||||
|  |         return new ResponseEntity<>(HttpStatus.OK); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,7 @@ | |||||||
|  | package ovh.herisson.Clyde.Repositories.Inscription; | ||||||
|  |  | ||||||
|  | import org.springframework.data.repository.CrudRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Inscription.UninscriptionRequest; | ||||||
|  |  | ||||||
|  | public interface UninscriptionRequestRepository extends CrudRepository<UninscriptionRequest, Long> { | ||||||
|  | } | ||||||
| @ -1,20 +1,29 @@ | |||||||
| package ovh.herisson.Clyde.Tables.Inscription; | package ovh.herisson.Clyde.Tables.Inscription; | ||||||
|  |  | ||||||
| import jakarta.persistence.Entity; | import jakarta.persistence.*; | ||||||
| import jakarta.persistence.GeneratedValue; |  | ||||||
| import jakarta.persistence.GenerationType; |  | ||||||
| import jakarta.persistence.Id; |  | ||||||
| import ovh.herisson.Clyde.Tables.RequestState; | import ovh.herisson.Clyde.Tables.RequestState; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
| @Entity | @Entity | ||||||
| public class UninscriptionRequest { | public class UninscriptionRequest { | ||||||
|     @Id |     @Id | ||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|     private int id; |     private long id; | ||||||
|     private RequestState state; |     private RequestState state; | ||||||
|  |     private String reason; | ||||||
|  |     private Date date; | ||||||
|  |  | ||||||
|     public UninscriptionRequest(RequestState state){ |     @JoinColumn(name = "Users") | ||||||
|  |     @ManyToOne(fetch = FetchType.EAGER) | ||||||
|  |     private User user; | ||||||
|  |  | ||||||
|  |     public UninscriptionRequest(RequestState state,String reason, Date date, User user){ | ||||||
|         this.state = state; |         this.state = state; | ||||||
|  |         this.reason = reason; | ||||||
|  |         this.date = date; | ||||||
|  |         this.user = user; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public UninscriptionRequest(){} |     public UninscriptionRequest(){} | ||||||
| @ -26,4 +35,33 @@ public class UninscriptionRequest { | |||||||
|     public void setState(RequestState state) { |     public void setState(RequestState state) { | ||||||
|         this.state = state; |         this.state = state; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public String getReason() { | ||||||
|  |         return reason; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setReason(String reason) { | ||||||
|  |         this.reason = reason; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public long getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public User getUser() { | ||||||
|  |         return user; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setUser(User user) { | ||||||
|  |         this.user = user; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setDate(Date date) { | ||||||
|  |         this.date = date; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Date getDate() { | ||||||
|  |         return date; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
|   import CourseList from "@/Apps/Inscription/CourseList.vue"; |   import CourseList from "@/Apps/Inscription/CourseList.vue"; | ||||||
|   import {editMinerval, getCurrentMinerval} from "@/rest/minerval.js"; |   import {editMinerval, getCurrentMinerval} from "@/rest/minerval.js"; | ||||||
|   import {postPayment} from "@/rest/payment.js"; |   import {postPayment} from "@/rest/payment.js"; | ||||||
|   import {createScholarshipRequest} from "@/rest/requests.js"; |   import {addUninscReq, createScholarshipRequest} from "@/rest/requests.js"; | ||||||
|  |  | ||||||
|   const user = ref(await getSelf()); |   const user = ref(await getSelf()); | ||||||
|   const UserCurriculum = ref("");  |   const UserCurriculum = ref("");  | ||||||
| @ -30,6 +30,9 @@ | |||||||
|   const paymentPage = ref(false); |   const paymentPage = ref(false); | ||||||
|   const scholarship = ref(false); |   const scholarship = ref(false); | ||||||
|   const scholarshipinfos = ref(false); |   const scholarshipinfos = ref(false); | ||||||
|  |   const uninscr = ref(false); | ||||||
|  |   const sure = ref(0); | ||||||
|  |  | ||||||
|   const pattern = { |   const pattern = { | ||||||
|     profilPictureUrl:null, |     profilPictureUrl:null, | ||||||
|     email:null, |     email:null, | ||||||
| @ -64,6 +67,11 @@ | |||||||
|     residencyDocUrl : "" |     residencyDocUrl : "" | ||||||
|   }) |   }) | ||||||
|  |  | ||||||
|  |   //Used to post a uninscription request | ||||||
|  |   const uninscriptionData = reactive({ | ||||||
|  |     reason : null, | ||||||
|  |     userId : user.value.regNo | ||||||
|  |   }) | ||||||
|   const paymentAmount = ref(0); |   const paymentAmount = ref(0); | ||||||
|   let toModify= Object.assign({}, pattern); |   let toModify= Object.assign({}, pattern); | ||||||
|   let personnalInfos =  Object.assign({}, patternInfos); |   let personnalInfos =  Object.assign({}, patternInfos); | ||||||
| @ -156,7 +164,7 @@ | |||||||
|       <img class="subContainter" :src=getPP()> |       <img class="subContainter" :src=getPP()> | ||||||
|     </div> |     </div> | ||||||
|       <div class="globalInfos"> |       <div class="globalInfos"> | ||||||
|         <div v-if="modif==false && curric==false && reg==false && minerval==false && paymentPage == false && scholarship==false" class="infosContainer"> |         <div v-if="modif==false && curric==false && reg==false && minerval==false && paymentPage == false && scholarship==false && uninscr == false" class="infosContainer"> | ||||||
|           <div> |           <div> | ||||||
|             {{user.firstName}} {{user.lastName}}    |             {{user.firstName}} {{user.lastName}}    | ||||||
|           </div> |           </div> | ||||||
| @ -174,7 +182,7 @@ | |||||||
|           </div> |           </div> | ||||||
|           <div v-if="(user.role==='Student')"> |           <div v-if="(user.role==='Student')"> | ||||||
|             <button @click="reg=!reg">{{i18n("profile.reRegister")}}</button> |             <button @click="reg=!reg">{{i18n("profile.reRegister")}}</button> | ||||||
|             <button @click="unRegister()" style="float:right;background-color:rgb(150,0,0);">{{i18n("profile.unRegister")}}</button> |             <button @click="uninscr = !uninscr" style="float:right;background-color:rgb(150,0,0);">{{i18n("profile.unRegister")}}</button> | ||||||
|           </div> |           </div> | ||||||
|           <div v-if="(user.role==='Student')"> |           <div v-if="(user.role==='Student')"> | ||||||
|             <button @click="curric=!curric">{{i18n("profile.change.curriculum")}}</button> |             <button @click="curric=!curric">{{i18n("profile.change.curriculum")}}</button> | ||||||
| @ -184,6 +192,19 @@ | |||||||
|             <button @click="minerval = !minerval" style="margin-left: 2%">Manage minerval</button> |             <button @click="minerval = !minerval" style="margin-left: 2%">Manage minerval</button> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|  |         <div v-else-if="uninscr" class="infosContainer"> | ||||||
|  |             <div v-if="sure != 2">Please enter the reason you leave the university</div> | ||||||
|  |             <textarea v-if="sure != 2" v-model="uninscriptionData.reason"></textarea> | ||||||
|  |             <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="sure=0">No</button> | ||||||
|  |             </div> | ||||||
|  |             <p v-if="sure==2">You request has been send !</p> | ||||||
|  |         </div> | ||||||
|         <div v-else-if="minerval" class="infosContainer"> |         <div v-else-if="minerval" class="infosContainer"> | ||||||
|           <div v-if="minerv.value.toPay != 0"> |           <div v-if="minerv.value.toPay != 0"> | ||||||
|             Payment : {{minerv.value.toPay}}€ left to pay |             Payment : {{minerv.value.toPay}}€ left to pay | ||||||
| @ -306,7 +327,7 @@ | |||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div v-if="user.role == 'Student' && modif==false && curric==false && reg==false && minerval==false && scholarship == false" class="moreInfos"> |       <div v-if="user.role == 'Student' && modif==false && curric==false && reg==false && minerval==false && scholarship == false && uninscr == false" class="moreInfos"> | ||||||
|         <div class = "oldcursus"> |         <div class = "oldcursus"> | ||||||
|             <div class="listTitle"> |             <div class="listTitle"> | ||||||
|               Anciens Cursus |               Anciens Cursus | ||||||
| @ -405,7 +426,7 @@ | |||||||
|     display:flex; |     display:flex; | ||||||
|     align-items:center; |     align-items:center; | ||||||
|     justify-content:center; |     justify-content:center; | ||||||
|     margin-top:5%; |     margin-top:7%; | ||||||
|   } |   } | ||||||
|  .containerElement{ |  .containerElement{ | ||||||
|    justify-content:center; |    justify-content:center; | ||||||
|  | |||||||
| @ -19,3 +19,7 @@ export async function getAllExemptionsRequest(){ | |||||||
| export async function editEquivalenceState(id, newstate){ | export async function editEquivalenceState(id, newstate){ | ||||||
|     return restPatch("/request/registerequiv/"+id+"/"+newstate) |     return restPatch("/request/registerequiv/"+id+"/"+newstate) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export async function addUninscReq(userId, reason){ | ||||||
|  |     return restPost("/uninscriptionreq", {"userId" : userId, "reason" : reason}) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user