Implements the possibility to ask for a scholarship for a student
This commit is contained in:
parent
e6e147af26
commit
21a5dbdb22
@ -7,26 +7,42 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import ovh.herisson.Clyde.Repositories.ExemptionsRequestRepository;
|
||||
import ovh.herisson.Clyde.Repositories.ScholarshipRequestRepository;
|
||||
import ovh.herisson.Clyde.Tables.ExemptionsRequest;
|
||||
import ovh.herisson.Clyde.Tables.RequestState;
|
||||
import ovh.herisson.Clyde.Tables.ScholarshipRequest;
|
||||
|
||||
@RestController
|
||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
|
||||
public class RequestsController {
|
||||
|
||||
public final ExemptionsRequestRepository err;
|
||||
public final ScholarshipRequestRepository srr;
|
||||
|
||||
public RequestsController(ExemptionsRequestRepository err) {
|
||||
public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr) {
|
||||
this.err = err;
|
||||
this.srr = srr;
|
||||
}
|
||||
|
||||
@PostMapping(value="/exemptionreq")
|
||||
public ResponseEntity<String> register(@RequestBody ExemptionsRequest exemptionsRequest){
|
||||
|
||||
//This line ensures that the request is sent in pending state not matter what
|
||||
exemptionsRequest.setState(RequestState.Pending);
|
||||
|
||||
err.save(exemptionsRequest);
|
||||
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping(value="/scholarshipreq")
|
||||
public ResponseEntity<String> register(@RequestBody ScholarshipRequest scholarshipRequest){
|
||||
|
||||
//This line ensures that the request is sent in pending state not matter what
|
||||
scholarshipRequest.setState(RequestState.Pending);
|
||||
|
||||
srr.save(scholarshipRequest);
|
||||
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
package ovh.herisson.Clyde.Repositories;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import ovh.herisson.Clyde.Tables.ScholarshipRequest;
|
||||
|
||||
public interface ScholarshipRequestRepository extends CrudRepository<ScholarshipRequest, Long> {
|
||||
|
||||
}
|
@ -2,35 +2,39 @@ package ovh.herisson.Clyde.Tables;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
public class ScholarshipRequest {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private int id;
|
||||
private long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "Users")
|
||||
private User user;
|
||||
private long userId;
|
||||
private RequestState state;
|
||||
private String requestForm;
|
||||
private Date date;
|
||||
private int amount;
|
||||
|
||||
private String taxDocUrl;
|
||||
private String residencyDocUrl;
|
||||
|
||||
public ScholarshipRequest(User user, RequestState state, String requestForm, int amount){
|
||||
this.user = user;
|
||||
public ScholarshipRequest(long userId, RequestState state, int amount, Date date, String taxDocUrl, String residencyDocUrl){
|
||||
this.userId = userId;
|
||||
this.state = state;
|
||||
this.requestForm = requestForm;
|
||||
this.amount = amount;
|
||||
this.date = date;
|
||||
this.taxDocUrl = taxDocUrl;
|
||||
this.residencyDocUrl = residencyDocUrl;
|
||||
}
|
||||
|
||||
public ScholarshipRequest(){}
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUser(User user) {
|
||||
this.user = user;
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public RequestState getState() {
|
||||
@ -41,14 +45,6 @@ public class ScholarshipRequest {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getRequestForm() {
|
||||
return requestForm;
|
||||
}
|
||||
|
||||
public void setRequestForm(String requestForm) {
|
||||
this.requestForm = requestForm;
|
||||
}
|
||||
|
||||
public int getAmount() {
|
||||
return amount;
|
||||
}
|
||||
@ -56,4 +52,32 @@ public class ScholarshipRequest {
|
||||
public void setAmount(int amount) {
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(Date date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getResidencyDocUrl() {
|
||||
return residencyDocUrl;
|
||||
}
|
||||
|
||||
public void setResidencyDocUrl(String residencyDocUrl) {
|
||||
this.residencyDocUrl = residencyDocUrl;
|
||||
}
|
||||
|
||||
public String getTaxDocUrl() {
|
||||
return taxDocUrl;
|
||||
}
|
||||
|
||||
public void setTaxDocUrl(String taxDocUrl) {
|
||||
this.taxDocUrl = taxDocUrl;
|
||||
}
|
||||
}
|
||||
|
@ -20,11 +20,6 @@ async function updateCourseList(){
|
||||
courseslist.value = await getcurriculum(selectedCurriculum.value.curriculumId)
|
||||
}
|
||||
|
||||
async function uploadfileandgetpath(file, type){
|
||||
const a = await uploadFile(file, type);
|
||||
exemptReq.justifDocument = a.url
|
||||
}
|
||||
|
||||
async function postExemptionRequest(file, type){
|
||||
const a = await uploadFile(file, type);
|
||||
exemptReq.justifDocument = a.url
|
||||
|
@ -4,10 +4,11 @@
|
||||
import {getSelfCurriculum, getAllCurriculums, getSomeonesCurriculumList} from '../rest/curriculum.js'
|
||||
import {getCourses} from "../rest/courses.js"
|
||||
import i18n from "@/i18n.js"
|
||||
import { uploadProfilePicture } from '@/rest/uploads.js'
|
||||
import {uploadFile, uploadProfilePicture} from '@/rest/uploads.js'
|
||||
import CourseList from "@/Apps/CourseList.vue";
|
||||
import {editMinerval, getCurrentMinerval} from "@/rest/minerval.js";
|
||||
import {postPayment} from "@/rest/payment.js";
|
||||
import {createScholarshipRequest} from "@/rest/requests.js";
|
||||
|
||||
const user = ref(await getSelf());
|
||||
const UserCurriculum = ref("");
|
||||
@ -27,6 +28,8 @@
|
||||
const courseslist = ref(false);
|
||||
const minerval = ref(false);
|
||||
const paymentPage = ref(false);
|
||||
const scholarship = ref(false);
|
||||
const scholarshipinfos = ref(false);
|
||||
const pattern = {
|
||||
profilPictureUrl:null,
|
||||
email:null,
|
||||
@ -50,6 +53,17 @@
|
||||
expDate:null,
|
||||
amount: null
|
||||
}
|
||||
|
||||
//Used to modelize a scholarship request
|
||||
const scholarshipData=reactive({
|
||||
userId: user.value.regNo,
|
||||
state:null,
|
||||
date:null,
|
||||
amount:0,
|
||||
taxDocUrl : "",
|
||||
residencyDocUrl : ""
|
||||
})
|
||||
|
||||
const paymentAmount = ref(0);
|
||||
let toModify= Object.assign({}, pattern);
|
||||
let personnalInfos = Object.assign({}, patternInfos);
|
||||
@ -121,6 +135,18 @@
|
||||
}
|
||||
return actualCurriculumList
|
||||
}
|
||||
|
||||
async function postScholarshipRequest(file1, type1, file2, type2){
|
||||
const a = await uploadFile(file1, type1)
|
||||
scholarshipData.taxDocUrl = a.url;
|
||||
|
||||
const b = await uploadFile(file2, type2)
|
||||
scholarshipData.residencyDocUrl = b.url;
|
||||
|
||||
scholarshipData.date = Date.now();
|
||||
|
||||
await createScholarshipRequest(scholarshipData)
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -130,7 +156,7 @@
|
||||
<img class="subContainter" :src=getPP()>
|
||||
</div>
|
||||
<div class="globalInfos">
|
||||
<div v-if="modif==false && curric==false && reg==false && minerval==false && paymentPage == false" class="infosContainer">
|
||||
<div v-if="modif==false && curric==false && reg==false && minerval==false && paymentPage == false && scholarship==false" class="infosContainer">
|
||||
<div>
|
||||
{{user.firstName}} {{user.lastName}}
|
||||
</div>
|
||||
@ -171,6 +197,30 @@
|
||||
<div v-else>
|
||||
Payment : School fees have already been paid this year
|
||||
</div>
|
||||
<div>
|
||||
<button @click="scholarship=!scholarship; minerval=!minerval">Ask for a scholarship</button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="scholarship && !scholarshipinfos" class="infosContainer">
|
||||
<p>Please upload the required documents</p>
|
||||
<div>
|
||||
Tax justification document :
|
||||
<input type="file" @change="scholarshipData.taxDocUrl = $event.target.files">
|
||||
</div>
|
||||
<div>
|
||||
Residency justification document :
|
||||
<input type="file" style="margin-top:2%" @change="scholarshipData.residencyDocUrl = $event.target.files">
|
||||
</div>
|
||||
<button style="margin-top: 5%" @click="scholarshipinfos = !scholarshipinfos;postScholarshipRequest(scholarshipData.taxDocUrl, 'JustificationDocument',scholarshipData.residencyDocUrl, 'JustificationDocument');">Submit scholarship request</button>
|
||||
</div>
|
||||
<div v-else-if="scholarship && scholarshipinfos" class="infosContainer">
|
||||
<div>
|
||||
Your request has been sent to the inscription service you will get notified when
|
||||
the request is reviewed.
|
||||
</div>
|
||||
<button @click="scholarshipinfos=!scholarshipinfos; scholarship=!scholarship">
|
||||
Go back to profile
|
||||
</button>
|
||||
</div>
|
||||
<div v-else-if="paymentPage" class="infosContainer">
|
||||
Proceed to payment of {{paymentAmount}}€
|
||||
@ -256,7 +306,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="modif==false && curric==false && reg==false && minerval==false"class="moreInfos">
|
||||
<div v-if="modif==false && curric==false && reg==false && minerval==false && scholarship == false"class="moreInfos">
|
||||
<div class = "oldcursus">
|
||||
<div class="listTitle">
|
||||
Anciens Cursus
|
||||
|
@ -3,3 +3,7 @@ import {restPost} from "@/rest/restConsumer.js";
|
||||
export async function createExemptionsRequest(exempReq){
|
||||
return restPost("/exemptionreq", exempReq)
|
||||
}
|
||||
|
||||
export async function createScholarshipRequest(scholReq){
|
||||
return restPost("/scholarshipreq", scholReq)
|
||||
}
|
Loading…
Reference in New Issue
Block a user