Link the ExternalCurriculum to a user after the inscription.
Add the ExternalCurriculum lists in AboutStudent.vue
This commit is contained in:
		| @ -5,8 +5,10 @@ import org.springframework.http.ResponseEntity; | |||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository; | import ovh.herisson.Clyde.Repositories.Inscription.ExternalCurriculumRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.Inscription.InscriptionRepository; | 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.ExternalCurriculum; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest; | import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -17,10 +19,12 @@ public class ExternalCurriculumController { | |||||||
|  |  | ||||||
|     public final ExternalCurriculumRepository ecr; |     public final ExternalCurriculumRepository ecr; | ||||||
|     public final InscriptionRepository inscriptionRepository; |     public final InscriptionRepository inscriptionRepository; | ||||||
|  |     public final UserRepository userRepository; | ||||||
|  |  | ||||||
|     public ExternalCurriculumController(ExternalCurriculumRepository ecr, InscriptionRepository inscriptionRepository) { |     public ExternalCurriculumController(ExternalCurriculumRepository ecr, InscriptionRepository inscriptionRepository, UserRepository userRepository) { | ||||||
|         this.ecr = ecr; |         this.ecr = ecr; | ||||||
|         this.inscriptionRepository = inscriptionRepository; |         this.inscriptionRepository = inscriptionRepository; | ||||||
|  |         this.userRepository = userRepository; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     //everyone can post some externalcurriculums (the validity of the elements is assured by the inscription service) |     //everyone can post some externalcurriculums (the validity of the elements is assured by the inscription service) | ||||||
| @ -28,7 +32,7 @@ public class ExternalCurriculumController { | |||||||
|     public ResponseEntity<ExternalCurriculum> postExternalCurriculum(@RequestBody Map<String, Object> externalCurrInfos){ |     public ResponseEntity<ExternalCurriculum> postExternalCurriculum(@RequestBody Map<String, Object> externalCurrInfos){ | ||||||
|         InscriptionRequest ir = inscriptionRepository.findById((Integer) externalCurrInfos.get("inscriptionRequestId")); |         InscriptionRequest ir = inscriptionRepository.findById((Integer) externalCurrInfos.get("inscriptionRequestId")); | ||||||
|  |  | ||||||
|         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")); |         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"), null); | ||||||
|  |  | ||||||
|         return new ResponseEntity<>(ecr.save(toSave), HttpStatus.OK); |         return new ResponseEntity<>(ecr.save(toSave), HttpStatus.OK); | ||||||
|     } |     } | ||||||
| @ -40,4 +44,12 @@ public class ExternalCurriculumController { | |||||||
|         ArrayList<ExternalCurriculum> toReturn = ecr.getExternalCurriculumByInscriptionRequest(ir); |         ArrayList<ExternalCurriculum> toReturn = ecr.getExternalCurriculumByInscriptionRequest(ir); | ||||||
|         return new ResponseEntity<>(toReturn, HttpStatus.OK); |         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); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -128,7 +128,7 @@ public class MockController { | |||||||
|  |  | ||||||
|         inscriptionService.save(inscriptionRequest); |         inscriptionService.save(inscriptionRequest); | ||||||
|  |  | ||||||
|         ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null); |         ExternalCurriculum externalCurriculum = new ExternalCurriculum(inscriptionRequest, "HEH", "Bachelier en informatique", "Completed", 2015, 2018, null, null); | ||||||
|         externalCurriculumRepository.save(externalCurriculum); |         externalCurriculumRepository.save(externalCurriculum); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,11 +3,13 @@ package ovh.herisson.Clyde.Repositories.Inscription; | |||||||
| import org.springframework.data.repository.CrudRepository; | import org.springframework.data.repository.CrudRepository; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum; | import ovh.herisson.Clyde.Tables.Inscription.ExternalCurriculum; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest; | import ovh.herisson.Clyde.Tables.Inscription.InscriptionRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  |  | ||||||
| public interface ExternalCurriculumRepository extends CrudRepository<ExternalCurriculum, Long> { | public interface ExternalCurriculumRepository extends CrudRepository<ExternalCurriculum, Long> { | ||||||
|     ArrayList<ExternalCurriculum> getExternalCurriculumByInscriptionRequest(InscriptionRequest ir); |     ArrayList<ExternalCurriculum> getExternalCurriculumByInscriptionRequest(InscriptionRequest ir); | ||||||
|  |  | ||||||
|  |     ArrayList<ExternalCurriculum> getExternalCurriculumByUser(User user); | ||||||
|     ExternalCurriculum getExternalCurriculumById(long id); |     ExternalCurriculum getExternalCurriculumById(long id); | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,12 +3,16 @@ package ovh.herisson.Clyde.Services.Inscription; | |||||||
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import ovh.herisson.Clyde.Repositories.*; | 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.InscriptionRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository; | import ovh.herisson.Clyde.Repositories.Inscription.MinervalRepository; | ||||||
| import ovh.herisson.Clyde.Tables.*; | 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.InscriptionRequest; | ||||||
| import ovh.herisson.Clyde.Tables.Inscription.Minerval; | import ovh.herisson.Clyde.Tables.Inscription.Minerval; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  |  | ||||||
| @Service | @Service | ||||||
| public class InscriptionService { | public class InscriptionService { | ||||||
|  |  | ||||||
| @ -22,14 +26,15 @@ public class InscriptionService { | |||||||
|  |  | ||||||
|     private final MinervalRepository minervalRepository; |     private final MinervalRepository minervalRepository; | ||||||
|     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |     private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | ||||||
|  |     private final ExternalCurriculumRepository externalCurriculumRepository; | ||||||
|  |  | ||||||
|  |     public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo, MinervalRepository minervalRepository, ExternalCurriculumRepository externalCurriculumRepository){ | ||||||
|     public InscriptionService(InscriptionRepository inscriptionRepo, UserRepository userRepo, UserCurriculumRepository userCurriculumRepo, CurriculumRepository curriculumRepo, MinervalRepository minervalRepository){ |  | ||||||
|         this.inscriptionRepo = inscriptionRepo; |         this.inscriptionRepo = inscriptionRepo; | ||||||
|         this.userRepo = userRepo; |         this.userRepo = userRepo; | ||||||
|         this.userCurriculumRepo = userCurriculumRepo; |         this.userCurriculumRepo = userCurriculumRepo; | ||||||
|         this.curriculumRepo = curriculumRepo; |         this.curriculumRepo = curriculumRepo; | ||||||
|         this.minervalRepository = minervalRepository; |         this.minervalRepository = minervalRepository; | ||||||
|  |         this.externalCurriculumRepository = externalCurriculumRepository; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public InscriptionRequest save(InscriptionRequest inscriptionRequest){ |     public InscriptionRequest save(InscriptionRequest inscriptionRequest){ | ||||||
| @ -86,6 +91,12 @@ public class InscriptionService { | |||||||
|         Minerval minerval = new Minerval(userFromRequest.getRegNo(), 0, 852, 2023); |         Minerval minerval = new Minerval(userFromRequest.getRegNo(), 0, 852, 2023); | ||||||
|         minervalRepository.save(minerval); |         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; |         return true; | ||||||
|     } |     } | ||||||
|     public void delete(InscriptionRequest toDelete) { |     public void delete(InscriptionRequest toDelete) { | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ package ovh.herisson.Clyde.Tables.Inscription; | |||||||
|  |  | ||||||
|  |  | ||||||
| import jakarta.persistence.*; | import jakarta.persistence.*; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| //This table stores a student's curriculum from another university | //This table stores a student's curriculum from another university | ||||||
| @Entity | @Entity | ||||||
| @ -10,10 +11,15 @@ public class ExternalCurriculum { | |||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|     private int id; |     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) |     @ManyToOne(fetch = FetchType.EAGER) | ||||||
|     @JoinColumn(name="InscriptionRequest") |     @JoinColumn(name="InscriptionRequest") | ||||||
|     private InscriptionRequest inscriptionRequest; |     private InscriptionRequest inscriptionRequest; | ||||||
|  |  | ||||||
|  |     @ManyToOne(fetch = FetchType.EAGER) | ||||||
|  |     @JoinColumn(name="Users") | ||||||
|  |     private User user; | ||||||
|  |  | ||||||
|     private String school; |     private String school; | ||||||
|  |  | ||||||
|     private String formation; |     private String formation; | ||||||
| @ -27,7 +33,7 @@ public class ExternalCurriculum { | |||||||
|  |  | ||||||
|     public ExternalCurriculum(){} |     public ExternalCurriculum(){} | ||||||
|  |  | ||||||
|     public ExternalCurriculum(InscriptionRequest ir, String school, String formation, String completion, int startYear, int endYear, String justifdocUrl){ |     public ExternalCurriculum(InscriptionRequest ir, String school, String formation, String completion, int startYear, int endYear, String justifdocUrl,User user){ | ||||||
|         this.inscriptionRequest = ir; |         this.inscriptionRequest = ir; | ||||||
|         this.school = school; |         this.school = school; | ||||||
|         this.formation = formation; |         this.formation = formation; | ||||||
| @ -35,6 +41,7 @@ public class ExternalCurriculum { | |||||||
|         this.startYear = startYear; |         this.startYear = startYear; | ||||||
|         this.endYear = endYear; |         this.endYear = endYear; | ||||||
|         this.justifdocUrl = justifdocUrl; |         this.justifdocUrl = justifdocUrl; | ||||||
|  |         this.user = user; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public int getId() { |     public int getId() { | ||||||
| @ -96,4 +103,12 @@ public class ExternalCurriculum { | |||||||
|     public String getJustifdocUrl() { |     public String getJustifdocUrl() { | ||||||
|         return justifdocUrl; |         return justifdocUrl; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setUser(User user) { | ||||||
|  |         this.user = user; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public User getUser() { | ||||||
|  |         return user; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -2,10 +2,15 @@ | |||||||
|   import i18n from "@/i18n.js" |   import i18n from "@/i18n.js" | ||||||
|   import {getUser} from '../../rest/Users.js' |   import {getUser} from '../../rest/Users.js' | ||||||
|   import {getSomeonesCurriculumList} from "@/rest/curriculum.js"; |   import {getSomeonesCurriculumList} from "@/rest/curriculum.js"; | ||||||
|  |   import {ref} from "vue"; | ||||||
|  |   import ExternalCurriculumList from "@/Apps/Inscription/ExternalCurriculumList.vue"; | ||||||
|  |   import {getExternalCurriculumByUser} from "@/rest/externalCurriculum.js"; | ||||||
|  |  | ||||||
|   const props = defineProps(['target']); |   const props = defineProps(['target']) | ||||||
|   let user = await getUser(props.target); |   const user = await getUser(props.target) | ||||||
|   let UserCurriculum = await getSomeonesCurriculumList(props.target); |   const UserCurriculum = await getSomeonesCurriculumList(props.target) | ||||||
|  |   const externalcurrlist = await getExternalCurriculumByUser(user.regNo) | ||||||
|  |   const extercurrlist = ref(false) | ||||||
|  |  | ||||||
|   function getPP(){ |   function getPP(){ | ||||||
|     if(user.profilePictureUrl === null){ |     if(user.profilePictureUrl === null){ | ||||||
| @ -27,7 +32,7 @@ | |||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <template> | <template> | ||||||
|   <div class="body"> |   <div class="body" v-if="extercurrlist==false"> | ||||||
|     <div class="container"> |     <div class="container"> | ||||||
|       <div class="profilPic"> |       <div class="profilPic"> | ||||||
|         <img class="subContainter" :src=getPP()> |         <img class="subContainter" :src=getPP()> | ||||||
| @ -49,6 +54,9 @@ | |||||||
|           <div> |           <div> | ||||||
|             Date de naissance : {{user.birthDate}} |             Date de naissance : {{user.birthDate}} | ||||||
|           </div> |           </div> | ||||||
|  |           <div> | ||||||
|  |             <button @click="extercurrlist=!extercurrlist">See external curriculums</button> | ||||||
|  |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="moreInfos"> |       <div class="moreInfos"> | ||||||
| @ -79,7 +87,9 @@ | |||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
|  |   <div v-if="extercurrlist==true"> | ||||||
|  |       <ExternalCurriculumList :ext-curr-list="externalcurrlist"></ExternalCurriculumList> | ||||||
|  |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -2,10 +2,10 @@ | |||||||
|   import i18n from "@/i18n.js"; |   import i18n from "@/i18n.js"; | ||||||
|   import {ref} from "vue"; |   import {ref} from "vue"; | ||||||
|  |  | ||||||
|   const props = defineProps(["extCurrList","inscrReqId"]) |   const props = defineProps(["extCurrList"]) | ||||||
|  |  | ||||||
|   const extCurrList = ref(props.extCurrList) |   const extCurrList = ref(props.extCurrList) | ||||||
|  |   console.log(extCurrList) | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <template style="margin-top:5%;"> | <template style="margin-top:5%;"> | ||||||
| @ -19,7 +19,6 @@ | |||||||
|         <div class="download"><button>Download document</button></div> |         <div class="download"><button>Download document</button></div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
|  | |||||||
| @ -17,3 +17,7 @@ export async function getExternalCurriculumByInscrReq(inscrReqId){ | |||||||
|     return restGet("/externalcurriculum/"+inscrReqId) |     return restGet("/externalcurriculum/"+inscrReqId) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export async function getExternalCurriculumByUser(userId){ | ||||||
|  |     return restGet("/externalcurriculumbyuser/"+userId) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user