Merge remote-tracking branch 'origin/master' into forum
This commit is contained in:
		@ -64,12 +64,15 @@ public class ApplicationsController {
 | 
			
		||||
        if (!authServ.isNotIn(new Role[]{Role.Teacher,Role.Secretary,Role.Admin},token))
 | 
			
		||||
            authorizedApps.add(Applications.ManageCourses);
 | 
			
		||||
 | 
			
		||||
        if (!authServ.isNotIn(new Role[]{Role.InscriptionService,Role.Admin},token)){
 | 
			
		||||
            authorizedApps.add(Applications.Inscription);
 | 
			
		||||
        if (!authServ.isNotIn(new Role[]{Role.InscriptionService,Role.Admin, Role.Teacher},token)){
 | 
			
		||||
            authorizedApps.add(Applications.Requests);
 | 
			
		||||
            authorizedApps.add(Applications.StudentsList);}
 | 
			
		||||
 | 
			
		||||
        if (!authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)){ 
 | 
			
		||||
          authorizedApps.add(Applications.UsersList);}
 | 
			
		||||
 | 
			
		||||
        if (!authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin, Role.InscriptionService},token)){
 | 
			
		||||
            authorizedApps.add(Applications.Payments);}
 | 
			
		||||
        return authorizedApps;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -135,4 +135,5 @@ public class CourseController {
 | 
			
		||||
        courseServ.delete(courseServ.findById(id));
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,13 @@ package ovh.herisson.Clyde.EndPoints;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.InscriptionRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Services.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Curriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@ -21,12 +23,18 @@ public class CurriculumController {
 | 
			
		||||
 | 
			
		||||
    private final UserCurriculumService userCurriculumServ;
 | 
			
		||||
    private final CurriculumCourseService curriculumCourseServ;
 | 
			
		||||
    private final InscriptionRepository ir;
 | 
			
		||||
    private final UserService userServ;
 | 
			
		||||
 | 
			
		||||
    public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, UserCurriculumService userCurriculumServ, CurriculumCourseService curriculumCourseServ){
 | 
			
		||||
    private final ExternalCurriculumRepository ecr;
 | 
			
		||||
    public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, UserCurriculumService userCurriculumServ, CurriculumCourseService curriculumCourseServ, InscriptionRepository ir, UserService userServ, ExternalCurriculumRepository ecr){
 | 
			
		||||
        this.curriculumServ = curriculumServ;
 | 
			
		||||
        this.authServ = authServ;
 | 
			
		||||
        this.userCurriculumServ = userCurriculumServ;
 | 
			
		||||
        this.curriculumCourseServ = curriculumCourseServ;
 | 
			
		||||
        this.ir = ir;
 | 
			
		||||
        this.userServ = userServ;
 | 
			
		||||
        this.ecr = ecr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/curriculum/{id}")
 | 
			
		||||
@ -52,6 +60,22 @@ public class CurriculumController {
 | 
			
		||||
        return new ResponseEntity<>(curriculumCourseServ.getDepthCurriculum(curriculum),HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //Return the list of all curicullums of an user
 | 
			
		||||
    @GetMapping("/onescurriculum/{userId}")
 | 
			
		||||
    public ResponseEntity<Map<String ,Object>> findOnesCurriculum(@RequestHeader("Authorization") String token, @PathVariable String userId){
 | 
			
		||||
        if (authServ.getUserFromToken(token) == null)
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        User u = userServ.getUserById(Long.parseLong(userId));
 | 
			
		||||
        HashMap<String,Object> toReturn = userCurriculumServ.findAllCurriculumByStudent(u);
 | 
			
		||||
 | 
			
		||||
        if (toReturn == null)
 | 
			
		||||
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(toReturn,HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/curriculums")
 | 
			
		||||
    public ResponseEntity<Iterable<Map<String, Object>>> findAllIndDepth(){
 | 
			
		||||
        return new ResponseEntity<>(curriculumCourseServ.getAllDepthCurriculum(),HttpStatus.OK);
 | 
			
		||||
@ -94,4 +118,5 @@ public class CurriculumController {
 | 
			
		||||
        curriculumServ.delete(toDelete);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,62 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.InscriptionRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class ExternalCurriculumController {
 | 
			
		||||
 | 
			
		||||
    public final ExternalCurriculumRepository ecr;
 | 
			
		||||
    public final InscriptionRepository inscriptionRepository;
 | 
			
		||||
    public final UserRepository userRepository;
 | 
			
		||||
 | 
			
		||||
    public ExternalCurriculumController(ExternalCurriculumRepository ecr, InscriptionRepository inscriptionRepository, UserRepository userRepository) {
 | 
			
		||||
        this.ecr = ecr;
 | 
			
		||||
        this.inscriptionRepository = inscriptionRepository;
 | 
			
		||||
        this.userRepository = userRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //everyone can post some externalcurriculums (the validity of the elements is assured by the inscription service)
 | 
			
		||||
    @PostMapping("/externalcurriculum")
 | 
			
		||||
    public ResponseEntity<ExternalCurriculum> postExternalCurriculum(@RequestBody Map<String, Object> externalCurrInfos){
 | 
			
		||||
        //An external curriculum can either be linked to an User or to an InscriptionRequest
 | 
			
		||||
        InscriptionRequest ir = null;
 | 
			
		||||
        User user = null;
 | 
			
		||||
        if (externalCurrInfos.get("inscriptionRequestId") != null){
 | 
			
		||||
            ir = inscriptionRepository.findById((Integer) externalCurrInfos.get("inscriptionRequestId"));
 | 
			
		||||
        }else{
 | 
			
		||||
            user = userRepository.findById((Integer) externalCurrInfos.get("userRegNo"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ExternalCurriculum toSave = new ExternalCurriculum(ir, (String) externalCurrInfos.get("school"),(String) externalCurrInfos.get("formation"),(String) externalCurrInfos.get("completion"), (Integer)externalCurrInfos.get("startYear"), (Integer)externalCurrInfos.get("endYear"), (String)externalCurrInfos.get("justifDocUrl"), user);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(ecr.save(toSave), HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/externalcurriculum/{inscReqId}")
 | 
			
		||||
    public ResponseEntity<ArrayList<ExternalCurriculum>> getExternalCurrListByInscrReq(@PathVariable long inscReqId){
 | 
			
		||||
        InscriptionRequest ir = inscriptionRepository.findById(inscReqId);
 | 
			
		||||
 | 
			
		||||
        ArrayList<ExternalCurriculum> toReturn = ecr.getExternalCurriculumByInscriptionRequest(ir);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/externalcurriculumbyuser/{userId}")
 | 
			
		||||
    public ResponseEntity<ArrayList<ExternalCurriculum>> getExternalCurrByUser(@PathVariable long userId){
 | 
			
		||||
        User user = userRepository.findById(userId);
 | 
			
		||||
 | 
			
		||||
        ArrayList<ExternalCurriculum> toReturn = ecr.getExternalCurriculumByUser(user);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,13 +1,13 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints;
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
 | 
			
		||||
import ovh.herisson.Clyde.Services.InscriptionService;
 | 
			
		||||
import ovh.herisson.Clyde.Services.Inscription.InscriptionService;
 | 
			
		||||
import ovh.herisson.Clyde.Services.ProtectionService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
@ -79,4 +79,22 @@ public class InscriptionController {
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //Allow teacher or admin to accept or refuse the equivalence
 | 
			
		||||
    @PatchMapping("/request/registerequiv/{id}/{newstate}")
 | 
			
		||||
    public ResponseEntity<Object> editRegisterEquiv(@RequestHeader("Authorization") String token, @PathVariable long id, @PathVariable RequestState newstate){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Teacher}, token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        InscriptionRequest toEdit = inscriptionServ.getById(id);
 | 
			
		||||
        toEdit.setEquivalenceState(newstate);
 | 
			
		||||
 | 
			
		||||
        inscriptionServ.save(toEdit);
 | 
			
		||||
 | 
			
		||||
        if (toEdit.getState() == RequestState.Accepted && (toEdit.getEquivalenceState() == RequestState.Accepted || toEdit.getEquivalenceState() == RequestState.Unrequired))
 | 
			
		||||
        {
 | 
			
		||||
            inscriptionServ.createUser(toEdit);
 | 
			
		||||
        }
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,55 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.Minerval;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class MinervalController {
 | 
			
		||||
    private final AuthenticatorService authServ;
 | 
			
		||||
    private final MinervalRepository mr;
 | 
			
		||||
 | 
			
		||||
    public MinervalController(AuthenticatorService authServ, MinervalRepository mr) {
 | 
			
		||||
        this.authServ = authServ;
 | 
			
		||||
        this.mr = mr;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //A new minerval entry is posted when the inscription service accept a registration request
 | 
			
		||||
    @PostMapping("/minerval/{studentRegNo}")
 | 
			
		||||
    public ResponseEntity<Object> postMinerval(@RequestHeader("Authorization") String token, @PathVariable long studentRegNo){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        Calendar c = new GregorianCalendar();
 | 
			
		||||
 | 
			
		||||
        mr.save(new Minerval(studentRegNo, 0, 835, c.get(Calendar.YEAR)));
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/minerval/{studentRegNo}")
 | 
			
		||||
    public ResponseEntity<Minerval> getCurrentMinervalbyRegNo(@PathVariable long studentRegNo){
 | 
			
		||||
        ArrayList<Minerval> mlist = mr.getMinervalsByStudentRegNoOrderByYearDesc(studentRegNo);
 | 
			
		||||
 | 
			
		||||
        //The list is ordered by year in descending order then the index 0 contains the actual minerval (for this year)
 | 
			
		||||
        Minerval m = mlist.get(0);
 | 
			
		||||
        return new ResponseEntity<>(m, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PatchMapping("/minerval")
 | 
			
		||||
    public ResponseEntity<Object> updateMinerval(@RequestBody Minerval updatedMinerval){
 | 
			
		||||
        Minerval minerval = mr.findById(updatedMinerval.getId());
 | 
			
		||||
 | 
			
		||||
        minerval.setPaidAmount(updatedMinerval.getPaidAmount());
 | 
			
		||||
        minerval.setToPay(updatedMinerval.getToPay());
 | 
			
		||||
        mr.save(minerval);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,45 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints.Inscription;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.PaymentRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.Payment;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class PaymentController {
 | 
			
		||||
 | 
			
		||||
    private final PaymentRepository paymentRepository;
 | 
			
		||||
 | 
			
		||||
    public PaymentController(PaymentRepository paymentRepository){
 | 
			
		||||
        this.paymentRepository = paymentRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Post a payment record
 | 
			
		||||
    @PostMapping("/payment")
 | 
			
		||||
    public ResponseEntity<Object> postPayment(@RequestBody Payment payment){
 | 
			
		||||
        paymentRepository.save(payment);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //Get all payment records of a student
 | 
			
		||||
    @GetMapping("/payment/{studentRegNo}")
 | 
			
		||||
    public ResponseEntity<ArrayList<Payment>> getPaymentsByUser(@PathVariable long studentRegNo){
 | 
			
		||||
        ArrayList<Payment> toReturn = paymentRepository.getPaymentsByStudentRegNo(studentRegNo);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/payment")
 | 
			
		||||
    public ResponseEntity<ArrayList<Payment>> getAllPayments(){
 | 
			
		||||
        ArrayList<Payment> toReturn = new ArrayList<Payment>();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        paymentRepository.findAll().forEach(toReturn::add);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,254 @@
 | 
			
		||||
package ovh.herisson.Clyde.EndPoints.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CourseRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ChangeCurriculumRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExemptionsRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.UnregisterRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
 | 
			
		||||
import ovh.herisson.Clyde.Services.UserService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ExemptionsRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.UnregisterRequest;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class RequestsController {
 | 
			
		||||
 | 
			
		||||
    public final ExemptionsRequestRepository err;
 | 
			
		||||
    public final ScholarshipRequestRepository srr;
 | 
			
		||||
    public final UserRepository userRepository;
 | 
			
		||||
    public final AuthenticatorService authServ;
 | 
			
		||||
    public final UnregisterRequestRepository unregisterRequestRepository;
 | 
			
		||||
    public final CourseRepository courseRepository;
 | 
			
		||||
    public final UserService userService;
 | 
			
		||||
    public final UserCurriculumRepository userCurriculumRepository;
 | 
			
		||||
    public final CurriculumRepository curriculumRepository;
 | 
			
		||||
 | 
			
		||||
    public final ChangeCurriculumRequestRepository changeCurriculumRequestRepository;
 | 
			
		||||
 | 
			
		||||
    public RequestsController(ExemptionsRequestRepository err, ScholarshipRequestRepository srr, UserRepository userRepository, AuthenticatorService authServ, UnregisterRequestRepository unregisterRequestRepository, CourseRepository courseRepository, UserService userService, UserCurriculumRepository userCurriculumRepository, CurriculumRepository curriculumRepository, ChangeCurriculumRequestRepository changeCurriculumRequestRepository) {
 | 
			
		||||
        this.err = err;
 | 
			
		||||
        this.srr = srr;
 | 
			
		||||
        this.userRepository = userRepository;
 | 
			
		||||
        this.authServ = authServ;
 | 
			
		||||
        this.unregisterRequestRepository = unregisterRequestRepository;
 | 
			
		||||
        this.courseRepository = courseRepository;
 | 
			
		||||
        this.userService = userService;
 | 
			
		||||
        this.userCurriculumRepository = userCurriculumRepository;
 | 
			
		||||
        this.curriculumRepository = curriculumRepository;
 | 
			
		||||
        this.changeCurriculumRequestRepository = changeCurriculumRequestRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value="/exemptionreq")
 | 
			
		||||
    public ResponseEntity<String> createExemptionReq(@RequestBody Map<String, Object> exemptionsRequestInfo){
 | 
			
		||||
        User user = userRepository.findById((Integer) exemptionsRequestInfo.get("userRegNo"));
 | 
			
		||||
        Course course = courseRepository.findById((Integer) exemptionsRequestInfo.get("courseId"));
 | 
			
		||||
 | 
			
		||||
        ExemptionsRequest exemptionsRequest = new ExemptionsRequest(user, course, (String) exemptionsRequestInfo.get("justifDocument"), RequestState.Pending, new Date());
 | 
			
		||||
 | 
			
		||||
        err.save(exemptionsRequest);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.CREATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value="/scholarshipreq")
 | 
			
		||||
    public ResponseEntity<String> createScholarshipReq(@RequestBody Map<String, Object> scholarshipRequestInfo){
 | 
			
		||||
        User user = userRepository.findById((Integer)scholarshipRequestInfo.get("userId"));
 | 
			
		||||
        ScholarshipRequest toCreate = new ScholarshipRequest(user, RequestState.Pending, 0, new Date(), (String) scholarshipRequestInfo.get("taxDocUrl"), (String) scholarshipRequestInfo.get("residencyDocUrl"));
 | 
			
		||||
 | 
			
		||||
        srr.save(toCreate);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.CREATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Get all the exemptions Request
 | 
			
		||||
    @GetMapping(value = "/exemptionsreq")
 | 
			
		||||
    public ResponseEntity<ArrayList<ExemptionsRequest>> getAllExemptionsRequests(@RequestHeader("Authorization") String token){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        ArrayList<ExemptionsRequest> toReturn = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        err.findAll().forEach(toReturn::add);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Get all the scholarships requests
 | 
			
		||||
    @GetMapping(value = "/scholarshipreq")
 | 
			
		||||
    public ResponseEntity<ArrayList<ScholarshipRequest>> getAllScholarshipRequests(@RequestHeader("Authorization") String token){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        ArrayList<ScholarshipRequest> toReturn = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        srr.findAll().forEach(toReturn::add);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value = "/unregister")
 | 
			
		||||
    public ResponseEntity<String> postUnregReq(@RequestBody Map<String,Object> uninscr){
 | 
			
		||||
        User u = userRepository.findById((int) uninscr.get("userId"));
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PatchMapping(value = "/scholarshipreq/")
 | 
			
		||||
    public ResponseEntity<String> editScholReq(@RequestBody Map<String,Object> infos){
 | 
			
		||||
        ScholarshipRequest scholarshipRequest = srr.findById((Integer) infos.get("id"));
 | 
			
		||||
 | 
			
		||||
        if (infos.get("state").equals("Accepted")){
 | 
			
		||||
            scholarshipRequest.setState(RequestState.Accepted);
 | 
			
		||||
            scholarshipRequest.setAmount((int) infos.get("amount"));
 | 
			
		||||
        }else{
 | 
			
		||||
            scholarshipRequest.setState(RequestState.Refused);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        srr.save(scholarshipRequest);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping(value = "/scholarshipreq/{id}")
 | 
			
		||||
    public ResponseEntity<ScholarshipRequest> getScholReqbyId(@PathVariable long id){
 | 
			
		||||
        ScholarshipRequest toReturn = srr.findById(id);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping(value = "/unregister")
 | 
			
		||||
    public ResponseEntity<ArrayList<UnregisterRequest>> getAllUnregReq(){
 | 
			
		||||
        ArrayList<UnregisterRequest> toReturn = new ArrayList<>();
 | 
			
		||||
        unregisterRequestRepository.findAll().forEach(toReturn::add);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping(value = "/unregister/{id}")
 | 
			
		||||
    public ResponseEntity<UnregisterRequest> getUnregbyId(@PathVariable long id){
 | 
			
		||||
        UnregisterRequest unregisterRequest = unregisterRequestRepository.findById(id);
 | 
			
		||||
        return new ResponseEntity<>(unregisterRequest, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PatchMapping(value = "/unregister/{id}/{newstate}")
 | 
			
		||||
    public ResponseEntity<String> pathUnregReq(@PathVariable long id, @PathVariable RequestState newstate){
 | 
			
		||||
        UnregisterRequest unregisterRequest = unregisterRequestRepository.findById(id);
 | 
			
		||||
        User u = userRepository.findById(unregisterRequest.getRegNo());
 | 
			
		||||
        unregisterRequest.setState(newstate);
 | 
			
		||||
 | 
			
		||||
        if (newstate == RequestState.Accepted){
 | 
			
		||||
            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);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        unregisterRequestRepository.save(unregisterRequest);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/changecurriculumreq")
 | 
			
		||||
    public ResponseEntity<String> addChangeCurrReq(@RequestBody Map<String,Object> reqInfos){
 | 
			
		||||
        User user = userRepository.findById((Integer) reqInfos.get("userId"));
 | 
			
		||||
 | 
			
		||||
        Curriculum actualCurriculum;
 | 
			
		||||
 | 
			
		||||
        //If null then it means we are in a supplementary cursus case
 | 
			
		||||
        if (reqInfos.get("actualcursus") == null){
 | 
			
		||||
            actualCurriculum = null;
 | 
			
		||||
        }else{
 | 
			
		||||
            actualCurriculum = curriculumRepository.findById((Integer) reqInfos.get("actualcursus"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Curriculum destinationCurriculum = curriculumRepository.findById((Integer) reqInfos.get("newcursus"));
 | 
			
		||||
 | 
			
		||||
        ChangeCurriculumRequest changeCurriculumRequest = new ChangeCurriculumRequest(user, actualCurriculum, destinationCurriculum, new Date(), RequestState.Pending);
 | 
			
		||||
 | 
			
		||||
        changeCurriculumRequestRepository.save(changeCurriculumRequest);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/changecurriculumreq")
 | 
			
		||||
    public  ResponseEntity<ArrayList <ChangeCurriculumRequest>> getAllChangeCurrReq(@RequestHeader("Authorization") String token){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        ArrayList<ChangeCurriculumRequest> toReturn = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        changeCurriculumRequestRepository.findAll().forEach(toReturn::add);
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/changecurriculumreq/{id}")
 | 
			
		||||
    public ResponseEntity<ChangeCurriculumRequest> getCCrbyId(@RequestHeader("Authorization") String token, @PathVariable long id){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        ChangeCurriculumRequest toReturn = changeCurriculumRequestRepository.findById(id);
 | 
			
		||||
        return new ResponseEntity<>(toReturn, HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PatchMapping("/changecurriculumreq/{id}/{newState}")
 | 
			
		||||
    public ResponseEntity<String> editCCReq(@RequestHeader("Authorization") String token, @PathVariable long id, @PathVariable RequestState newState){
 | 
			
		||||
        if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary,Role.InscriptionService},token))
 | 
			
		||||
            return new UnauthorizedResponse<>(null);
 | 
			
		||||
 | 
			
		||||
        ChangeCurriculumRequest toEdit = changeCurriculumRequestRepository.findById(id);
 | 
			
		||||
 | 
			
		||||
        toEdit.setState(newState);
 | 
			
		||||
 | 
			
		||||
        if (newState == RequestState.Accepted){
 | 
			
		||||
            //If actual curriculum is not null then we need to set that the user doesn't follow it anymore
 | 
			
		||||
            User u = toEdit.getUser();
 | 
			
		||||
            if (toEdit.getActualCurriculum() != null){
 | 
			
		||||
                ArrayList<UserCurriculum> listcurr = userCurriculumRepository.findByUserOrderByCurriculum(u);
 | 
			
		||||
 | 
			
		||||
                for (int i = 0; i < listcurr.size(); i++){
 | 
			
		||||
                    if (listcurr.get(i).getCurriculum() == toEdit.getActualCurriculum()){
 | 
			
		||||
                        listcurr.get(i).setActual(false);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                userCurriculumRepository.saveAll(listcurr);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Calendar c = Calendar.getInstance();
 | 
			
		||||
            UserCurriculum userCurriculum = new UserCurriculum(u, toEdit.getDestinationCurriculum(), c.get(Calendar.YEAR), true);
 | 
			
		||||
            userCurriculumRepository.save(userCurriculum);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        changeCurriculumRequestRepository.save(toEdit);
 | 
			
		||||
        return new ResponseEntity<>(HttpStatus.OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -5,10 +5,14 @@ import org.springframework.http.HttpHeaders;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
 | 
			
		||||
import ovh.herisson.Clyde.Services.AuthenticatorService;
 | 
			
		||||
import ovh.herisson.Clyde.Services.ProtectionService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Curriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@ -16,7 +20,7 @@ import java.util.Map;
 | 
			
		||||
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
 | 
			
		||||
public class LoginController {
 | 
			
		||||
    private final AuthenticatorService authServ;
 | 
			
		||||
 | 
			
		||||
    private final CurriculumRepository curriculumRepository;
 | 
			
		||||
    static public class RequestLogin{
 | 
			
		||||
        private final String identifier;
 | 
			
		||||
        private final String password;
 | 
			
		||||
@ -29,8 +33,9 @@ public class LoginController {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public LoginController(AuthenticatorService authServ){
 | 
			
		||||
    public LoginController(AuthenticatorService authServ, CurriculumRepository curriculumRepository){
 | 
			
		||||
        this.authServ = authServ;
 | 
			
		||||
        this.curriculumRepository = curriculumRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value = "/login")
 | 
			
		||||
@ -48,9 +53,18 @@ public class LoginController {
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/register")
 | 
			
		||||
    public ResponseEntity<Map<String,Object>> register(@RequestBody InscriptionRequest inscriptionRequest){
 | 
			
		||||
        //We ensure here that if the targeted cursus year is more than first grade then we need the teacher equivalence approval
 | 
			
		||||
        Curriculum curr = curriculumRepository.findById(inscriptionRequest.getCurriculumId());
 | 
			
		||||
 | 
			
		||||
        if (curr.getYear() > 1){
 | 
			
		||||
            inscriptionRequest.setEquivalenceState(RequestState.Pending);
 | 
			
		||||
        }else{
 | 
			
		||||
            inscriptionRequest.setEquivalenceState(RequestState.Unrequired);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        InscriptionRequest returnedInscriptionRequest = authServ.register(inscriptionRequest);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        return new ResponseEntity<>(ProtectionService.requestWithoutPassword(returnedInscriptionRequest), HttpStatus.CREATED);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,10 +2,16 @@ package ovh.herisson.Clyde.EndPoints;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.TokenRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ScholarshipRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.UnregisterRequestRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Services.*;
 | 
			
		||||
import ovh.herisson.Clyde.Services.Inscription.InscriptionService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.*;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
@ -15,26 +21,38 @@ import java.util.Date;
 | 
			
		||||
 | 
			
		||||
public class MockController {
 | 
			
		||||
    private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | 
			
		||||
 | 
			
		||||
    public final UserService userService;
 | 
			
		||||
    public final UserRepository userRepo;
 | 
			
		||||
    public final TokenRepository tokenRepo;
 | 
			
		||||
    public final TokenService tokenService;
 | 
			
		||||
    public final CurriculumCourseService CurriculumCourseService;
 | 
			
		||||
    public final CurriculumService curriculumService;
 | 
			
		||||
    public final CourseService courseService;
 | 
			
		||||
 | 
			
		||||
    public final ExternalCurriculumRepository externalCurriculumRepository;
 | 
			
		||||
    public final InscriptionService inscriptionService;
 | 
			
		||||
    ArrayList<User> mockUsers;
 | 
			
		||||
 | 
			
		||||
    public final UserCurriculumRepository ucr;
 | 
			
		||||
 | 
			
		||||
    public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){
 | 
			
		||||
    public final MinervalRepository minervalRepository;
 | 
			
		||||
 | 
			
		||||
    public final ScholarshipRequestRepository scholarshipRequestRepository;
 | 
			
		||||
 | 
			
		||||
    public final UnregisterRequestRepository uninscriptionRequestRepository;
 | 
			
		||||
    public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, ExternalCurriculumRepository externalCurriculumRepository, InscriptionService inscriptionService, UserCurriculumRepository ucr, MinervalRepository minervalRepository, ScholarshipRequestRepository scholarshipRequestRepository, UnregisterRequestRepository unregisterRequestRepository){
 | 
			
		||||
        this.userService = userService;
 | 
			
		||||
        this.tokenRepo = tokenRepo;
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
        this.tokenService = tokenService;
 | 
			
		||||
        this.CurriculumCourseService = CurriculumCourseService;
 | 
			
		||||
        this.curriculumService = curriculumService;
 | 
			
		||||
        this.courseService = courseService;
 | 
			
		||||
        this.externalCurriculumRepository = externalCurriculumRepository;
 | 
			
		||||
        this.inscriptionService = inscriptionService;
 | 
			
		||||
        this.ucr = ucr;
 | 
			
		||||
        this.minervalRepository = minervalRepository;
 | 
			
		||||
        this.scholarshipRequestRepository = scholarshipRequestRepository;
 | 
			
		||||
        this.uninscriptionRequestRepository = unregisterRequestRepository;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Saves an example of each user type by :
 | 
			
		||||
@ -47,28 +65,45 @@ public class MockController {
 | 
			
		||||
    public void postMock(){
 | 
			
		||||
 | 
			
		||||
        // user part
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin"));
 | 
			
		||||
        User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student"));
 | 
			
		||||
        User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary"));
 | 
			
		||||
        User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
 | 
			
		||||
        User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
 | 
			
		||||
        User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService"));
 | 
			
		||||
        mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke,lena,jojo));
 | 
			
		||||
        User popo = new User("Smith", "Paul", "paulsmith@gmail.com", "306 rue du poulet", "belgique", new Date(0), null, Role.Student, passwordEncoder.encode("jesuispaulleroi"));
 | 
			
		||||
        mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke,lena,jojo, popo));
 | 
			
		||||
 | 
			
		||||
        userRepo.saveAll(mockUsers);
 | 
			
		||||
        userService.saveAll(mockUsers);
 | 
			
		||||
 | 
			
		||||
        ExternalCurriculum externalCurriculum = new ExternalCurriculum(null, "HEH", "Bachelier en ingénieur", "completed", 2015, 2017, null, joe);
 | 
			
		||||
        externalCurriculumRepository.save(externalCurriculum);
 | 
			
		||||
 | 
			
		||||
        Minerval minerval = new Minerval(joe.getRegNo(), 0, 852, 2023);
 | 
			
		||||
        minervalRepository.save(minerval);
 | 
			
		||||
        // Course / Curriculum part
 | 
			
		||||
 | 
			
		||||
        Curriculum infoBab1 = new Curriculum(1,"info");
 | 
			
		||||
        Curriculum chemistryBab1 = new Curriculum(1,"chemistry");
 | 
			
		||||
        Curriculum psychologyBab1 = new Curriculum(1,"psychology");
 | 
			
		||||
 | 
			
		||||
        Curriculum infoBab2 = new Curriculum(2,"info");
 | 
			
		||||
        Curriculum masterinfo1 = new Curriculum(4, "info");
 | 
			
		||||
        Curriculum masterinfo2 = new Curriculum(5, "info");
 | 
			
		||||
        Curriculum chemistryBab2 = new Curriculum(2, "chemistry");
 | 
			
		||||
        curriculumService.save(infoBab1);
 | 
			
		||||
        curriculumService.save(chemistryBab1);
 | 
			
		||||
        curriculumService.save(psychologyBab1);
 | 
			
		||||
        curriculumService.save(infoBab2);
 | 
			
		||||
        curriculumService.save(masterinfo1);
 | 
			
		||||
        curriculumService.save(masterinfo2);
 | 
			
		||||
        curriculumService.save(chemistryBab2);
 | 
			
		||||
 | 
			
		||||
        ucr.save(new UserCurriculum(joe, infoBab1, 2022, false));
 | 
			
		||||
        ucr.save(new UserCurriculum(joe, chemistryBab1, 2023, true));
 | 
			
		||||
        ucr.save(new UserCurriculum(joe, infoBab1, 2023, true));
 | 
			
		||||
        ucr.save(new UserCurriculum(joe, psychologyBab1, 2020, false));
 | 
			
		||||
        ucr.save(new UserCurriculum(popo, infoBab1, 2022, false));
 | 
			
		||||
        ucr.save(new UserCurriculum(popo, infoBab2, 2023, true));
 | 
			
		||||
 | 
			
		||||
        Course progra1 = new Course(5,"Programmation et algorithmique 1",joke);
 | 
			
		||||
        Course chemistry1 = new Course(12, "Thermochimie",joke);
 | 
			
		||||
@ -80,10 +115,12 @@ public class MockController {
 | 
			
		||||
        courseService.save(psycho1);
 | 
			
		||||
        courseService.save(commun);
 | 
			
		||||
 | 
			
		||||
        ScholarshipRequest ssr1 = new ScholarshipRequest(joe, RequestState.Pending, 0, new Date(), "test", "test");
 | 
			
		||||
        scholarshipRequestRepository.save(ssr1);
 | 
			
		||||
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(infoBab1,progra1));
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(infoBab1,commun));
 | 
			
		||||
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(infoBab1, psycho1));
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,psycho1));
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,commun));
 | 
			
		||||
 | 
			
		||||
@ -92,10 +129,15 @@ public class MockController {
 | 
			
		||||
        CurriculumCourseService.save(new CurriculumCourse(chemistryBab1,chemistry1));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        InscriptionRequest inscriptionRequest = new InscriptionRequest("helen","prenom","non","helen@gmail.com","america",new Date(),(long) 1,RequestState.Pending,"yes.png","password");
 | 
			
		||||
        InscriptionRequest inscriptionRequest = new InscriptionRequest("helen","prenom","non","helen@gmail.com","america",new Date(),(long) 4,RequestState.Pending,"yes.png","password", null, new Date(), RequestState.Pending);
 | 
			
		||||
 | 
			
		||||
        inscriptionService.save(inscriptionRequest);
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        UnregisterRequest unregisterRequest = new UnregisterRequest(RequestState.Pending, "je veux partir", new Date(), joe.getRegNo(), joe.getFirstName(), joe.getLastName(), joe.getEmail(), null);
 | 
			
		||||
        uninscriptionRequestRepository.save(unregisterRequest);
 | 
			
		||||
 | 
			
		||||
        externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null);
 | 
			
		||||
        externalCurriculumRepository.save(externalCurriculum);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,37 +0,0 @@
 | 
			
		||||
package ovh.herisson.Clyde;
 | 
			
		||||
 | 
			
		||||
import javax.sql.DataSource;
 | 
			
		||||
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
import org.springframework.context.annotation.Profile;
 | 
			
		||||
import org.springframework.jdbc.datasource.DriverManagerDataSource;
 | 
			
		||||
import org.springframework.scheduling.annotation.EnableScheduling;
 | 
			
		||||
 | 
			
		||||
@Configuration
 | 
			
		||||
@EnableScheduling
 | 
			
		||||
public class JdbcConfig {
 | 
			
		||||
 | 
			
		||||
	@Bean
 | 
			
		||||
	@Profile("!prod")
 | 
			
		||||
	public DataSource psqlSource(){
 | 
			
		||||
		DriverManagerDataSource source = new DriverManagerDataSource();
 | 
			
		||||
		source.setDriverClassName("org.postgresql.Driver");
 | 
			
		||||
		source.setUrl("jdbc:postgresql://localhost:5442/clyde");
 | 
			
		||||
		source.setUsername("devel");
 | 
			
		||||
		source.setPassword("devel");
 | 
			
		||||
 | 
			
		||||
		return source;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Bean
 | 
			
		||||
	@Profile("prod")
 | 
			
		||||
	public DataSource psqlSourceProd(){
 | 
			
		||||
		DriverManagerDataSource source = new DriverManagerDataSource();
 | 
			
		||||
		source.setDriverClassName("org.postgresql.Driver");
 | 
			
		||||
		source.setUrl("jdbc:postgresql:clyde?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432");
 | 
			
		||||
		source.setUsername("clyde");
 | 
			
		||||
 | 
			
		||||
		return source;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,9 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.ChangeCurriculumRequest;
 | 
			
		||||
 | 
			
		||||
public interface ChangeCurriculumRequestRepository extends CrudRepository<ChangeCurriculumRequest, Long> {
 | 
			
		||||
    ChangeCurriculumRequest findById(long id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ExemptionsRequest;
 | 
			
		||||
 | 
			
		||||
public interface ExemptionsRequestRepository extends CrudRepository<ExemptionsRequest, Long> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,15 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface ExternalCurriculumRepository extends CrudRepository<ExternalCurriculum, Long> {
 | 
			
		||||
    ArrayList<ExternalCurriculum> getExternalCurriculumByInscriptionRequest(InscriptionRequest ir);
 | 
			
		||||
 | 
			
		||||
    ArrayList<ExternalCurriculum> getExternalCurriculumByUser(User user);
 | 
			
		||||
    ExternalCurriculum getExternalCurriculumById(long id);
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories;
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public interface InscriptionRepository extends CrudRepository<InscriptionRequest,Long> {
 | 
			
		||||
@ -0,0 +1,12 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.Minerval;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface MinervalRepository extends CrudRepository<Minerval, Long> {
 | 
			
		||||
    public ArrayList<Minerval> getMinervalsByStudentRegNoOrderByYearDesc(Long studentRegNo);
 | 
			
		||||
 | 
			
		||||
    public Minerval findById(long id);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,10 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.Payment;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface PaymentRepository extends CrudRepository<Payment, Long> {
 | 
			
		||||
    public ArrayList<Payment> getPaymentsByStudentRegNo(long regNo);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ScholarshipRequest;
 | 
			
		||||
 | 
			
		||||
public interface ScholarshipRequestRepository extends CrudRepository<ScholarshipRequest, Long> {
 | 
			
		||||
    public ScholarshipRequest findById(long id);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.data.repository.CrudRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.UnregisterRequest;
 | 
			
		||||
 | 
			
		||||
public interface UnregisterRequestRepository extends CrudRepository<UnregisterRequest, Long> {
 | 
			
		||||
    public UnregisterRequest findById(long l);
 | 
			
		||||
}
 | 
			
		||||
@ -6,8 +6,14 @@ import ovh.herisson.Clyde.Tables.Curriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.UserCurriculum;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
public interface UserCurriculumRepository extends CrudRepository<UserCurriculum, Long> {
 | 
			
		||||
 | 
			
		||||
    @Query("select uc.curriculum from UserCurriculum uc where uc.user = ?1")
 | 
			
		||||
    Curriculum findByUser(User student);
 | 
			
		||||
 | 
			
		||||
    ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student);
 | 
			
		||||
    UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,10 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Services.Inscription.InscriptionService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,6 @@ public class CurriculumService {
 | 
			
		||||
    public Curriculum findById(long id){
 | 
			
		||||
        return curriculumRepo.findById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void delete(Curriculum curriculum) {
 | 
			
		||||
        curriculumRepo.delete(curriculum);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,109 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services.Inscription;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.*;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.InscriptionRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Services.UserService;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.Minerval;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
public class InscriptionService {
 | 
			
		||||
 | 
			
		||||
    private final InscriptionRepository inscriptionRepo;
 | 
			
		||||
 | 
			
		||||
    private final UserRepository userRepo;
 | 
			
		||||
 | 
			
		||||
    private final UserCurriculumRepository userCurriculumRepo;
 | 
			
		||||
 | 
			
		||||
    private final CurriculumRepository curriculumRepo;
 | 
			
		||||
 | 
			
		||||
    private final MinervalRepository minervalRepository;
 | 
			
		||||
    private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | 
			
		||||
    private final ExternalCurriculumRepository externalCurriculumRepository;
 | 
			
		||||
    private final UserService userService;
 | 
			
		||||
    public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo, MinervalRepository minervalRepository, ExternalCurriculumRepository externalCurriculumRepository, UserService userService){
 | 
			
		||||
        this.inscriptionRepo = inscriptionRepo;
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
        this.userCurriculumRepo = userCurriculumRepo;
 | 
			
		||||
        this.curriculumRepo = curriculumRepo;
 | 
			
		||||
        this.minervalRepository = minervalRepository;
 | 
			
		||||
        this.externalCurriculumRepository = externalCurriculumRepository;
 | 
			
		||||
        this.userService = userService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest save(InscriptionRequest inscriptionRequest){
 | 
			
		||||
        inscriptionRequest.setPassword(passwordEncoder.encode(inscriptionRequest.getPassword()));
 | 
			
		||||
        return inscriptionRepo.save(inscriptionRequest);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest getById(long id){
 | 
			
		||||
        return inscriptionRepo.findById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Iterable<InscriptionRequest> getAll(){
 | 
			
		||||
        return inscriptionRepo.findAll();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean modifyState(long id, RequestState requestState) {
 | 
			
		||||
        InscriptionRequest inscrRequest = getById(id);
 | 
			
		||||
 | 
			
		||||
        if (inscrRequest == null)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        inscrRequest.setState(requestState);
 | 
			
		||||
        save(inscrRequest);
 | 
			
		||||
 | 
			
		||||
        //saves the user from the request if accepted from teacher and inscription services
 | 
			
		||||
        if (requestState == RequestState.Accepted && (inscrRequest.getEquivalenceState() == RequestState.Accepted || inscrRequest.getEquivalenceState() == RequestState.Unrequired))
 | 
			
		||||
        {
 | 
			
		||||
            return createUser(inscrRequest);
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean createUser(InscriptionRequest inscrRequest){
 | 
			
		||||
        //We must send an email here
 | 
			
		||||
 | 
			
		||||
        if (curriculumRepo.findById(inscrRequest.getCurriculumId()) == null)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        User userFromRequest = new User(
 | 
			
		||||
                inscrRequest.getLastName(),
 | 
			
		||||
                inscrRequest.getFirstName(),
 | 
			
		||||
                inscrRequest.getEmail(),
 | 
			
		||||
                inscrRequest.getAddress(),
 | 
			
		||||
                inscrRequest.getCountry(),
 | 
			
		||||
                inscrRequest.getBirthDate(),
 | 
			
		||||
                inscrRequest.getProfilePicture(),
 | 
			
		||||
                inscrRequest.getPassword()
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        userService.save(userFromRequest);
 | 
			
		||||
        Calendar c = Calendar.getInstance();
 | 
			
		||||
        userCurriculumRepo.save(new UserCurriculum(userFromRequest, curriculumRepo.findById(inscrRequest.getCurriculumId()),c.get(Calendar.YEAR), true));
 | 
			
		||||
 | 
			
		||||
        //Create a minerval for the new student
 | 
			
		||||
        Minerval minerval = new Minerval(userFromRequest.getRegNo(), 0, 852, 2023);
 | 
			
		||||
        minervalRepository.save(minerval);
 | 
			
		||||
 | 
			
		||||
        //Assign the externals curriculums from the inscription request to newly created student
 | 
			
		||||
        ArrayList<ExternalCurriculum> extCurrList = externalCurriculumRepository.getExternalCurriculumByInscriptionRequest(inscrRequest);
 | 
			
		||||
        for (int i = 0; i < extCurrList.size(); i++){
 | 
			
		||||
            extCurrList.get(i).setUser(userFromRequest);
 | 
			
		||||
            externalCurriculumRepository.save(extCurrList.get(i));
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
    public void delete(InscriptionRequest toDelete) {
 | 
			
		||||
        inscriptionRepo.delete(toDelete);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,94 +0,0 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.InscriptionRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.UserCurriculum;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
public class InscriptionService {
 | 
			
		||||
 | 
			
		||||
    private final InscriptionRepository inscriptionRepo;
 | 
			
		||||
 | 
			
		||||
    private final UserRepository userRepo;
 | 
			
		||||
 | 
			
		||||
    private final UserCurriculumRepository userCurriculumRepo;
 | 
			
		||||
 | 
			
		||||
    private final CurriculumRepository curriculumRepo;
 | 
			
		||||
 | 
			
		||||
    private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo){
 | 
			
		||||
        this.inscriptionRepo = inscriptionRepo;
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
        this.userCurriculumRepo = userCurriculumRepo;
 | 
			
		||||
        this.curriculumRepo = curriculumRepo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest save(InscriptionRequest inscriptionRequest){
 | 
			
		||||
        inscriptionRequest.setPassword(passwordEncoder.encode(inscriptionRequest.getPassword()));
 | 
			
		||||
        return inscriptionRepo.save(inscriptionRequest);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest getById(long id){
 | 
			
		||||
        return inscriptionRepo.findById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Iterable<InscriptionRequest> getAll(){
 | 
			
		||||
        return inscriptionRepo.findAll();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean modifyState(long id, RequestState requestState) {
 | 
			
		||||
        InscriptionRequest inscrRequest = getById(id);
 | 
			
		||||
 | 
			
		||||
        if (inscrRequest == null)
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        // if th state is the same we don't send an email
 | 
			
		||||
        if (requestState == inscrRequest.getState())
 | 
			
		||||
            return false;
 | 
			
		||||
 | 
			
		||||
        /** todo send an email to tell the poster of the inscrRequest (inscrRequest.getEmail())
 | 
			
		||||
         *  to notify them that the state of their request changed
 | 
			
		||||
         *  FooEmailFormat toSend = (String.format("Your request state changed from %s to %s"),
 | 
			
		||||
         *                                              inscrRequest.getState(), requestState)
 | 
			
		||||
         * FooEmailSender.send(toSend, inscrRequest.getEmail())
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //saves the user from the request if accepted
 | 
			
		||||
        if (requestState == RequestState.Accepted)
 | 
			
		||||
        {
 | 
			
		||||
            if (curriculumRepo.findById(inscrRequest.getCurriculumId()) == null)
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
            User userFromRequest = new User(
 | 
			
		||||
                    inscrRequest.getLastName(),
 | 
			
		||||
                    inscrRequest.getFirstName(),
 | 
			
		||||
                    inscrRequest.getEmail(),
 | 
			
		||||
                    inscrRequest.getAddress(),
 | 
			
		||||
                    inscrRequest.getCountry(),
 | 
			
		||||
                    inscrRequest.getBirthDate(),
 | 
			
		||||
                    inscrRequest.getProfilePicture(),
 | 
			
		||||
                    inscrRequest.getPassword()
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            userRepo.save(userFromRequest);
 | 
			
		||||
            userCurriculumRepo.save(new UserCurriculum(userFromRequest, curriculumRepo.findById(inscrRequest.getCurriculumId())));
 | 
			
		||||
        }
 | 
			
		||||
        inscrRequest.setState(requestState);
 | 
			
		||||
        save(inscrRequest);
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void delete(InscriptionRequest toDelete) {
 | 
			
		||||
        inscriptionRepo.delete(toDelete);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Course;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
@ -87,7 +87,9 @@ public class ProtectionService {
 | 
			
		||||
        toReturn.put("curriculum", inscriptionRequest.getCurriculumId());
 | 
			
		||||
        toReturn.put("state", inscriptionRequest.getState());
 | 
			
		||||
        toReturn.put("profilePictureUrl", inscriptionRequest.getProfilePicture());
 | 
			
		||||
 | 
			
		||||
        toReturn.put("identityCard", inscriptionRequest.getIdentityCard());
 | 
			
		||||
        toReturn.put("submissionDate", inscriptionRequest.getSubmissionDate());
 | 
			
		||||
        toReturn.put("equivalenceState", inscriptionRequest.getEquivalenceState());
 | 
			
		||||
        return toReturn;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,20 +1,53 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserCurriculumRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Curriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.*;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
public class UserCurriculumService {
 | 
			
		||||
 | 
			
		||||
    private final UserCurriculumRepository userCurriculumRepository;
 | 
			
		||||
    private final CurriculumRepository curriculumRepo;
 | 
			
		||||
 | 
			
		||||
    public UserCurriculumService(UserCurriculumRepository userCurriculumRepository) {
 | 
			
		||||
    private final ExternalCurriculumRepository externalCurriculumRepo;
 | 
			
		||||
    public UserCurriculumService(UserCurriculumRepository userCurriculumRepository, CurriculumRepository curriculumRepo, ExternalCurriculumRepository externalCurriculumRepo) {
 | 
			
		||||
        this.userCurriculumRepository = userCurriculumRepository;
 | 
			
		||||
        this.curriculumRepo = curriculumRepo;
 | 
			
		||||
        this.externalCurriculumRepo = externalCurriculumRepo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Curriculum findByUser(User student){
 | 
			
		||||
        return userCurriculumRepository.findByUser(student);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public HashMap<String,Object> findAllCurriculumByStudent(User student) {
 | 
			
		||||
        ArrayList<UserCurriculum> list = userCurriculumRepository.findByUserOrderByCurriculum(student);
 | 
			
		||||
 | 
			
		||||
        ArrayList<HashMap<String, Object>> curriculumlist = new ArrayList<HashMap<String, Object>>();
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < list.size(); i++) {
 | 
			
		||||
            HashMap<String, Object> element = new HashMap<>();
 | 
			
		||||
            Curriculum c = list.get(i).getCurriculum();
 | 
			
		||||
 | 
			
		||||
            element.put("curriculumId", c.getCurriculumId());
 | 
			
		||||
            element.put("year", c.getYear());
 | 
			
		||||
            element.put("option", c.getOption());
 | 
			
		||||
            element.put("dateyear", list.get(i).getYear());
 | 
			
		||||
            element.put("actual", list.get(i).isActual());
 | 
			
		||||
 | 
			
		||||
            curriculumlist.add(element);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        HashMap<String, Object> toReturn = new HashMap<String, Object>();
 | 
			
		||||
        toReturn.put("curriculumList", curriculumlist);
 | 
			
		||||
        return toReturn;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RegNoGenerator;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
@ -106,10 +107,17 @@ public class UserService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public User save(User  user){
 | 
			
		||||
        RegNoGenerator.resetCount();
 | 
			
		||||
        user.setPassword(passwordEncoder.encode(user.getPassword()));
 | 
			
		||||
        return userRepo.save(user);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void saveAll(ArrayList<User> list){
 | 
			
		||||
        //S'assure que le compteur est bien a 0
 | 
			
		||||
        RegNoGenerator.resetCount();
 | 
			
		||||
        userRepo.saveAll(list);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Iterable<User> getAll(){
 | 
			
		||||
        return userRepo.findAll();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -18,6 +18,7 @@ public enum Applications {
 | 
			
		||||
    UsersList,
 | 
			
		||||
 | 
			
		||||
    // InscriptionService authorization
 | 
			
		||||
    Inscription,
 | 
			
		||||
    StudentsList
 | 
			
		||||
    Requests,
 | 
			
		||||
    StudentsList,
 | 
			
		||||
    Payments
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,83 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class ChangeCurriculumRequest {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private int id;
 | 
			
		||||
 | 
			
		||||
    @ManyToOne
 | 
			
		||||
    @JoinColumn(name="Users")
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    @ManyToOne
 | 
			
		||||
    @JoinColumn(name = "ActualCurriculum")
 | 
			
		||||
    private Curriculum actualCurriculum;
 | 
			
		||||
 | 
			
		||||
    @ManyToOne
 | 
			
		||||
    @JoinColumn(name = "DestCurriculum")
 | 
			
		||||
    private Curriculum destinationCurriculum;
 | 
			
		||||
 | 
			
		||||
    private Date date;
 | 
			
		||||
 | 
			
		||||
    private RequestState state;
 | 
			
		||||
 | 
			
		||||
    public ChangeCurriculumRequest(){}
 | 
			
		||||
 | 
			
		||||
    public ChangeCurriculumRequest(User user, Curriculum actualCurriculum, Curriculum destinationCurriculum, Date date, RequestState state){
 | 
			
		||||
        this.user = user;
 | 
			
		||||
        this.actualCurriculum = actualCurriculum;
 | 
			
		||||
        this.destinationCurriculum = destinationCurriculum;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
        this.state = state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public User getUser() {
 | 
			
		||||
        return user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setUser(User user) {
 | 
			
		||||
        this.user = user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public Curriculum getActualCurriculum() {
 | 
			
		||||
        return actualCurriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setActualCurriculum(Curriculum actualCurriculum) {
 | 
			
		||||
        this.actualCurriculum = actualCurriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Curriculum getDestinationCurriculum() {
 | 
			
		||||
        return destinationCurriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDestinationCurriculum(Curriculum destinationCurriculum) {
 | 
			
		||||
        this.destinationCurriculum = destinationCurriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDate(Date date) {
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getDate() {
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RequestState getState() {
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setState(RequestState state) {
 | 
			
		||||
        this.state = state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +1,7 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
 | 
			
		||||
public enum FileType {
 | 
			
		||||
 | 
			
		||||
    ProfilePicture,
 | 
			
		||||
 | 
			
		||||
    EducationCertificate
 | 
			
		||||
    EducationCertificate,
 | 
			
		||||
    JustificationDocument
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,83 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import org.hibernate.annotations.OnDelete;
 | 
			
		||||
import org.hibernate.annotations.OnDeleteAction;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Course;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class ExemptionsRequest {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private int id;
 | 
			
		||||
 | 
			
		||||
    @JoinColumn(name = "Users")
 | 
			
		||||
    @ManyToOne(fetch = FetchType.EAGER)
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    @JoinColumn(name = "Course")
 | 
			
		||||
    @ManyToOne(fetch = FetchType.EAGER)
 | 
			
		||||
    private Course course;
 | 
			
		||||
    private String justifDocument;
 | 
			
		||||
 | 
			
		||||
    private RequestState state;
 | 
			
		||||
 | 
			
		||||
    private Date date;
 | 
			
		||||
 | 
			
		||||
    public ExemptionsRequest(User user, Course course, String justifDocument, RequestState state, Date date){
 | 
			
		||||
        this.user = user;
 | 
			
		||||
        this.course = course;
 | 
			
		||||
        this.justifDocument = justifDocument;
 | 
			
		||||
        this.state = state;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public ExemptionsRequest(){}
 | 
			
		||||
 | 
			
		||||
    public User getUser() {
 | 
			
		||||
        return user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setUser(User user) {
 | 
			
		||||
        this.user = user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Course getCourse() {
 | 
			
		||||
        return course;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCourse(Course course) {
 | 
			
		||||
        this.course = course;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getJustifDocument() {
 | 
			
		||||
        return justifDocument;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setJustifDocument(String justifDocument) {
 | 
			
		||||
        this.justifDocument = justifDocument;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public RequestState getState() {
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setState(RequestState state) {
 | 
			
		||||
        this.state = state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getDate() {
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDate(Date date) {
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,114 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
//This table stores a student's curriculum from another university
 | 
			
		||||
@Entity
 | 
			
		||||
public class ExternalCurriculum {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private int id;
 | 
			
		||||
 | 
			
		||||
    //An external curriculum is first linked to an inscription request and when it is accepted and the user is created we link it to the user
 | 
			
		||||
    @ManyToOne(fetch = FetchType.EAGER)
 | 
			
		||||
    @JoinColumn(name="InscriptionRequest")
 | 
			
		||||
    private InscriptionRequest inscriptionRequest;
 | 
			
		||||
 | 
			
		||||
    @ManyToOne(fetch = FetchType.EAGER)
 | 
			
		||||
    @JoinColumn(name="Users")
 | 
			
		||||
    private User user;
 | 
			
		||||
 | 
			
		||||
    private String school;
 | 
			
		||||
 | 
			
		||||
    private String formation;
 | 
			
		||||
 | 
			
		||||
    //This string denotes the completion of the external formation or the last year completed by the student in this formation
 | 
			
		||||
    private String completion;
 | 
			
		||||
 | 
			
		||||
    private int startYear;
 | 
			
		||||
    private int endYear;
 | 
			
		||||
    private String justifdocUrl;
 | 
			
		||||
 | 
			
		||||
    public ExternalCurriculum(){}
 | 
			
		||||
 | 
			
		||||
    public ExternalCurriculum(InscriptionRequest ir, String school, String formation, String completion, int startYear, int endYear, String justifdocUrl,User user){
 | 
			
		||||
        this.inscriptionRequest = ir;
 | 
			
		||||
        this.school = school;
 | 
			
		||||
        this.formation = formation;
 | 
			
		||||
        this.completion = completion;
 | 
			
		||||
        this.startYear = startYear;
 | 
			
		||||
        this.endYear = endYear;
 | 
			
		||||
        this.justifdocUrl = justifdocUrl;
 | 
			
		||||
        this.user = user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest getInscriptionRequest() {
 | 
			
		||||
        return inscriptionRequest;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setInscriptionRequest(InscriptionRequest inscriptionRequest) {
 | 
			
		||||
        this.inscriptionRequest = inscriptionRequest;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getSchool() {
 | 
			
		||||
        return school;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSchool(String school) {
 | 
			
		||||
        this.school = school;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getFormation() {
 | 
			
		||||
        return formation;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFormation(String formation) {
 | 
			
		||||
        this.formation = formation;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCompletion(){
 | 
			
		||||
        return completion;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCompletion(String completion) {
 | 
			
		||||
        this.completion = completion;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getStartYear() {
 | 
			
		||||
        return startYear;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setStartYear(int startYear) {
 | 
			
		||||
        this.startYear = startYear;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getEndYear() {
 | 
			
		||||
        return endYear;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setEndYear(int endYear) {
 | 
			
		||||
        this.endYear = endYear;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setJustifdocUrl(String justifdocUrl) {
 | 
			
		||||
        this.justifdocUrl = justifdocUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getJustifdocUrl() {
 | 
			
		||||
        return justifdocUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setUser(User user) {
 | 
			
		||||
        this.user = user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public User getUser() {
 | 
			
		||||
        return user;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,14 +17,16 @@ public class InscriptionRequest {
 | 
			
		||||
    private String email;
 | 
			
		||||
    private String country;
 | 
			
		||||
    private Date birthDate;
 | 
			
		||||
 | 
			
		||||
    private Long curriculumId;
 | 
			
		||||
    private RequestState state;
 | 
			
		||||
    private String profilePicture;
 | 
			
		||||
 | 
			
		||||
    private String password;
 | 
			
		||||
    private String identityCard;
 | 
			
		||||
    private Date submissionDate;
 | 
			
		||||
    private RequestState equivalenceState;
 | 
			
		||||
    public InscriptionRequest(){}
 | 
			
		||||
    public InscriptionRequest(String lastName, String firstName, String address, String email, String country, Date birthDate,Long curriculumId, RequestState state, String profilePicture, String password){
 | 
			
		||||
 | 
			
		||||
    public InscriptionRequest(String lastName, String firstName, String address, String email, String country, Date birthDate,Long curriculumId, RequestState state, String profilePicture, String password, String identityCard, Date submissionDate, RequestState equivalenceState){
 | 
			
		||||
        this.lastName = lastName;
 | 
			
		||||
        this.firstName = firstName;
 | 
			
		||||
        this.address = address;
 | 
			
		||||
@ -33,6 +37,9 @@ public class InscriptionRequest {
 | 
			
		||||
        this.state = state;
 | 
			
		||||
        this.profilePicture = profilePicture;
 | 
			
		||||
        this.password = password;
 | 
			
		||||
        this.identityCard = identityCard;
 | 
			
		||||
        this.submissionDate = submissionDate;
 | 
			
		||||
        this.equivalenceState = equivalenceState;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getId() {
 | 
			
		||||
@ -118,4 +125,28 @@ public class InscriptionRequest {
 | 
			
		||||
    public void setPassword(String password) {
 | 
			
		||||
        this.password = password;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getIdentityCard() {
 | 
			
		||||
        return identityCard;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setIdentityCard(String identityCard) {
 | 
			
		||||
        this.identityCard = identityCard;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getSubmissionDate() {
 | 
			
		||||
        return submissionDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSubmissionDate(Date submissionDate) {
 | 
			
		||||
        this.submissionDate = submissionDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RequestState getEquivalenceState() {
 | 
			
		||||
        return equivalenceState;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setEquivalenceState(RequestState equivalenceState) {
 | 
			
		||||
        this.equivalenceState = equivalenceState;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,64 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.Entity;
 | 
			
		||||
import jakarta.persistence.GeneratedValue;
 | 
			
		||||
import jakarta.persistence.GenerationType;
 | 
			
		||||
import jakarta.persistence.Id;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class Minerval {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private long id;
 | 
			
		||||
 | 
			
		||||
    private long studentRegNo;
 | 
			
		||||
    private int paidAmount;
 | 
			
		||||
    private int toPay;
 | 
			
		||||
 | 
			
		||||
    //If the academic year is 2023-2024 then 2023 will be stored here (we take the lowest year)
 | 
			
		||||
    private int year;
 | 
			
		||||
    public Minerval(){}
 | 
			
		||||
 | 
			
		||||
    public Minerval(long studentRegNo, int paidAmount, int toPay, int year){
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
        this.paidAmount = paidAmount;
 | 
			
		||||
        this.toPay = toPay;
 | 
			
		||||
        this.year = year;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getStudentRegNo() {
 | 
			
		||||
        return studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setStudentRegNo(long studentRegNo) {
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getPaidAmount() {
 | 
			
		||||
        return paidAmount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setPaidAmount(int paidAmount) {
 | 
			
		||||
        this.paidAmount = paidAmount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getToPay() {
 | 
			
		||||
        return toPay;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setToPay(int toPay) {
 | 
			
		||||
        this.toPay = toPay;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getYear() {
 | 
			
		||||
        return year;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setYear(int year) {
 | 
			
		||||
        this.year = year;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,83 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.Entity;
 | 
			
		||||
import jakarta.persistence.GeneratedValue;
 | 
			
		||||
import jakarta.persistence.GenerationType;
 | 
			
		||||
import jakarta.persistence.Id;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class Payment {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private long id;
 | 
			
		||||
    private long studentRegNo;
 | 
			
		||||
    private String card;
 | 
			
		||||
    private String client;
 | 
			
		||||
    private Date expDate;
 | 
			
		||||
    private int amount;
 | 
			
		||||
    private Date date;
 | 
			
		||||
    public Payment(){}
 | 
			
		||||
 | 
			
		||||
    public Payment(long studentRegNo, String card, String client, Date expDate, int amount, Date date){
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
        this.card = card;
 | 
			
		||||
        this.client = client;
 | 
			
		||||
        this.expDate = expDate;
 | 
			
		||||
        this.amount = amount;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getStudentRegNo() {
 | 
			
		||||
        return studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setStudentRegNo(long studentRegNo) {
 | 
			
		||||
        this.studentRegNo = studentRegNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCard() {
 | 
			
		||||
        return card;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCard(String card) {
 | 
			
		||||
        this.card = card;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getClient() {
 | 
			
		||||
        return client;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setClient(String client) {
 | 
			
		||||
        this.client = client;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getExpDate() {
 | 
			
		||||
        return expDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setExpDate(Date expDate) {
 | 
			
		||||
        this.expDate = expDate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getAmount() {
 | 
			
		||||
        return amount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAmount(int amount) {
 | 
			
		||||
        this.amount = amount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getDate() {
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDate(Date date) {
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +1,11 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import org.hibernate.annotations.OnDelete;
 | 
			
		||||
import org.hibernate.annotations.OnDeleteAction;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Curriculum;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class ReInscriptionRequest {
 | 
			
		||||
@ -0,0 +1,89 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables.Inscription;
 | 
			
		||||
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import org.hibernate.annotations.OnDelete;
 | 
			
		||||
import org.hibernate.annotations.OnDeleteAction;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.RequestState;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class ScholarshipRequest {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private long id;
 | 
			
		||||
    @JoinColumn(name="Users")
 | 
			
		||||
    @ManyToOne(fetch = FetchType.EAGER)
 | 
			
		||||
    @OnDelete(action = OnDeleteAction.CASCADE)
 | 
			
		||||
    private User user;
 | 
			
		||||
    private RequestState state;
 | 
			
		||||
    private Date date;
 | 
			
		||||
    private int amount;
 | 
			
		||||
    private String taxDocUrl;
 | 
			
		||||
    private String residencyDocUrl;
 | 
			
		||||
 | 
			
		||||
    public ScholarshipRequest(User user, RequestState state, int amount, Date date, String taxDocUrl, String residencyDocUrl){
 | 
			
		||||
        this.user = user;
 | 
			
		||||
        this.state = state;
 | 
			
		||||
        this.amount = amount;
 | 
			
		||||
        this.date = date;
 | 
			
		||||
        this.taxDocUrl = taxDocUrl;
 | 
			
		||||
        this.residencyDocUrl = residencyDocUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ScholarshipRequest(){}
 | 
			
		||||
 | 
			
		||||
    public User getUser() {
 | 
			
		||||
        return user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setUser(User user) {
 | 
			
		||||
        this.user = user;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RequestState getState() {
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setState(RequestState state) {
 | 
			
		||||
        this.state = state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getAmount() {
 | 
			
		||||
        return amount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,115 @@
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
public class UnregisterRequest {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    private long id;
 | 
			
		||||
    private RequestState state;
 | 
			
		||||
    private String reason;
 | 
			
		||||
    private Date date;
 | 
			
		||||
 | 
			
		||||
    //We store these informations again so if the user is deleted we still have the informations for history
 | 
			
		||||
    private long regNo;
 | 
			
		||||
 | 
			
		||||
    private String firstName;
 | 
			
		||||
 | 
			
		||||
    private String lastName;
 | 
			
		||||
 | 
			
		||||
    private 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;
 | 
			
		||||
        this.regNo = regNo;
 | 
			
		||||
        this.firstName = firstName;
 | 
			
		||||
        this.lastName = lastName;
 | 
			
		||||
        this.email = email;
 | 
			
		||||
        this.curriculum = curriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public UnregisterRequest(){}
 | 
			
		||||
 | 
			
		||||
    public RequestState getState() {
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setState(RequestState state) {
 | 
			
		||||
        this.state = state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getReason() {
 | 
			
		||||
        return reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setReason(String reason) {
 | 
			
		||||
        this.reason = reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getId() {
 | 
			
		||||
        return id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDate(Date date) {
 | 
			
		||||
        this.date = date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Date getDate() {
 | 
			
		||||
        return date;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getEmail() {
 | 
			
		||||
        return email;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getLastName() {
 | 
			
		||||
        return lastName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getFirstName() {
 | 
			
		||||
        return firstName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setEmail(String email) {
 | 
			
		||||
        this.email = email;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setLastName(String lastName) {
 | 
			
		||||
        this.lastName = lastName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFirstName(String firstName) {
 | 
			
		||||
        this.firstName = firstName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setRegNo(long regNo) {
 | 
			
		||||
        this.regNo = regNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public long getRegNo() {
 | 
			
		||||
        return regNo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCurriculum(Curriculum curriculum) {
 | 
			
		||||
        this.curriculum = curriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Curriculum getCurriculum() {
 | 
			
		||||
        return curriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,46 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
 | 
			
		||||
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
 | 
			
		||||
import org.hibernate.engine.spi.SharedSessionContractImplementor;
 | 
			
		||||
import org.hibernate.id.IdentifierGenerator;
 | 
			
		||||
 | 
			
		||||
import java.sql.*;
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.GregorianCalendar;
 | 
			
		||||
 | 
			
		||||
public class RegNoGenerator implements IdentifierGenerator {
 | 
			
		||||
    private static int count = 0;
 | 
			
		||||
    @Override
 | 
			
		||||
    public Object generate(SharedSessionContractImplementor session, Object object) {
 | 
			
		||||
        try{
 | 
			
		||||
            JdbcConnectionAccess jdbccon = session.getJdbcConnectionAccess();
 | 
			
		||||
            Connection conn = jdbccon.obtainConnection();
 | 
			
		||||
 | 
			
		||||
            Statement statement = conn.createStatement();
 | 
			
		||||
 | 
			
		||||
            Calendar c = new GregorianCalendar();
 | 
			
		||||
            int y = c.get(Calendar.YEAR);
 | 
			
		||||
            String query = "select count(reg_no) + "+count+" from Users where reg_no/10000 = " + y%1000;
 | 
			
		||||
 | 
			
		||||
            ResultSet set = statement.executeQuery(query);
 | 
			
		||||
            long resp = 0;
 | 
			
		||||
            if(set.next()){
 | 
			
		||||
                resp = set.getLong(1)+((y%1000)*10000);
 | 
			
		||||
                count += 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            conn.close();
 | 
			
		||||
            statement.close();
 | 
			
		||||
 | 
			
		||||
            return resp;
 | 
			
		||||
 | 
			
		||||
        } catch (SQLException e) {
 | 
			
		||||
            throw new RuntimeException(e);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void resetCount(){
 | 
			
		||||
        count = 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -3,5 +3,6 @@ package ovh.herisson.Clyde.Tables;
 | 
			
		||||
public enum RequestState {
 | 
			
		||||
    Accepted,
 | 
			
		||||
    Refused,
 | 
			
		||||
    Pending
 | 
			
		||||
    Pending,
 | 
			
		||||
    Unrequired
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,10 @@
 | 
			
		||||
package ovh.herisson.Clyde.Tables;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonIgnore;
 | 
			
		||||
import jakarta.persistence.*;
 | 
			
		||||
import org.hibernate.annotations.OnDelete;
 | 
			
		||||
import org.hibernate.annotations.OnDeleteAction;
 | 
			
		||||
import org.hibernate.annotations.GenericGenerator;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Msg.Discussion;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Msg.Message;
 | 
			
		||||
 | 
			
		||||
@ -8,13 +12,12 @@ import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonIgnore;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Entity
 | 
			
		||||
@Table(name = "Users")
 | 
			
		||||
public class User {
 | 
			
		||||
    @Id
 | 
			
		||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
			
		||||
    @GenericGenerator(name = "userGen", type = ovh.herisson.Clyde.Tables.RegNoGenerator.class)
 | 
			
		||||
    @GeneratedValue(generator = "userGen")
 | 
			
		||||
    private Long regNo;
 | 
			
		||||
    private String lastName;
 | 
			
		||||
    private String firstName;
 | 
			
		||||
 | 
			
		||||
@ -21,9 +21,16 @@ public class UserCurriculum {
 | 
			
		||||
    @OnDelete(action = OnDeleteAction.CASCADE)
 | 
			
		||||
    private Curriculum curriculum;
 | 
			
		||||
 | 
			
		||||
    public UserCurriculum(User user, Curriculum curriculum){
 | 
			
		||||
    private int year;
 | 
			
		||||
 | 
			
		||||
    //True if the user has that curriculum at the moment false if not
 | 
			
		||||
    private boolean actual;
 | 
			
		||||
 | 
			
		||||
    public UserCurriculum(User user, Curriculum curriculum, int year, boolean actual){
 | 
			
		||||
        this.user = user;
 | 
			
		||||
        this.curriculum = curriculum;
 | 
			
		||||
        this.year = year;
 | 
			
		||||
        this.actual = actual;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public UserCurriculum() {}
 | 
			
		||||
@ -47,4 +54,20 @@ public class UserCurriculum {
 | 
			
		||||
    public void setCurriculum(Curriculum curriculum) {
 | 
			
		||||
        this.curriculum = curriculum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getYear() {
 | 
			
		||||
        return year;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setYear(int year) {
 | 
			
		||||
        this.year = year;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setActual(boolean actual) {
 | 
			
		||||
        this.actual = actual;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isActual() {
 | 
			
		||||
        return actual;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,12 @@
 | 
			
		||||
spring.jpa.hibernate.ddl-auto=create-drop
 | 
			
		||||
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
 | 
			
		||||
spring.sql.init.mode=always
 | 
			
		||||
spring.sql.init.mode=always
 | 
			
		||||
 | 
			
		||||
# spring.datasource.url=jdbc:postgresql://localhost:5442/clyde
 | 
			
		||||
spring.datasource.url=jdbc:postgresql://db:5432/clyde
 | 
			
		||||
spring.datasource.username=devel
 | 
			
		||||
spring.datasource.password=devel
 | 
			
		||||
 | 
			
		||||
# spring.config.activate.on-profile=prod
 | 
			
		||||
# spring.datasource.url=jdbc:postgresql:clyde?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432
 | 
			
		||||
# spring.datasource.username=clyde
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user