Add course to a curriculum when created
This commit is contained in:
parent
ca10084400
commit
05ed28626a
@ -6,10 +6,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository;
|
import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository;
|
||||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
||||||
import ovh.herisson.Clyde.Services.*;
|
import ovh.herisson.Clyde.Services.*;
|
||||||
import ovh.herisson.Clyde.Tables.Course;
|
import ovh.herisson.Clyde.Tables.*;
|
||||||
import ovh.herisson.Clyde.Tables.Role;
|
|
||||||
import ovh.herisson.Clyde.Tables.User;
|
|
||||||
import ovh.herisson.Clyde.Tables.UserCurriculum;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -28,15 +25,18 @@ public class CourseController {
|
|||||||
|
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
|
||||||
|
private final CurriculumService curriculumService;
|
||||||
|
|
||||||
private final UserCurriculumService userCurriculumService;
|
private final UserCurriculumService userCurriculumService;
|
||||||
|
|
||||||
private final CurriculumCourseRepository curriculumCourseRepository;
|
private final CurriculumCourseRepository curriculumCourseRepository;
|
||||||
private final CurriculumCourseService curriculumCourseService;
|
private final CurriculumCourseService curriculumCourseService;
|
||||||
public CourseController(CourseService courseServ, TeacherCourseService teacherCourseServ, AuthenticatorService authServ, UserService userService, UserCurriculumService userCurriculumService, CurriculumCourseRepository curriculumCourseRepository, CurriculumCourseService curriculumCourseService) {
|
public CourseController(CourseService courseServ, TeacherCourseService teacherCourseServ, AuthenticatorService authServ, UserService userService, CurriculumService curriculumService, UserCurriculumService userCurriculumService, CurriculumCourseRepository curriculumCourseRepository, CurriculumCourseService curriculumCourseService) {
|
||||||
this.courseServ = courseServ;
|
this.courseServ = courseServ;
|
||||||
this.teacherCourseServ = teacherCourseServ;
|
this.teacherCourseServ = teacherCourseServ;
|
||||||
this.authServ = authServ;
|
this.authServ = authServ;
|
||||||
this.userService = userService;
|
this.userService = userService;
|
||||||
|
this.curriculumService = curriculumService;
|
||||||
this.userCurriculumService = userCurriculumService;
|
this.userCurriculumService = userCurriculumService;
|
||||||
this.curriculumCourseRepository = curriculumCourseRepository;
|
this.curriculumCourseRepository = curriculumCourseRepository;
|
||||||
this.curriculumCourseService = curriculumCourseService;
|
this.curriculumCourseService = curriculumCourseService;
|
||||||
@ -82,16 +82,18 @@ public class CourseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/course")
|
@PostMapping("/course/curriculum/{id}")
|
||||||
public ResponseEntity<Map<String ,Object>> postCourse(@RequestHeader("Authorization") String token,
|
public ResponseEntity<Map<String ,Object>> postCourse(@RequestHeader("Authorization") String token,
|
||||||
@RequestBody Course course)
|
@RequestBody Course course,@PathVariable long id)
|
||||||
{
|
{
|
||||||
if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token))
|
if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token))
|
||||||
return new UnauthorizedResponse<>(null);
|
return new UnauthorizedResponse<>(null);
|
||||||
Course createdCourse = courseServ.save(course);
|
Course createdCourse = courseServ.save(course);
|
||||||
if (createdCourse == null)
|
Curriculum curriculum = curriculumService.findById(id);
|
||||||
|
if (createdCourse == null || curriculum == null)
|
||||||
return new ResponseEntity<>(null,HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(null,HttpStatus.BAD_REQUEST);
|
||||||
|
CurriculumCourse curriculumCourse = new CurriculumCourse(curriculum,course);
|
||||||
|
curriculumCourseService.save(curriculumCourse);
|
||||||
return new ResponseEntity<>(ProtectionService.courseWithoutPassword(createdCourse), HttpStatus.CREATED);
|
return new ResponseEntity<>(ProtectionService.courseWithoutPassword(createdCourse), HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package ovh.herisson.Clyde.Repositories;
|
package ovh.herisson.Clyde.Repositories;
|
||||||
|
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import ovh.herisson.Clyde.Tables.Course;
|
import ovh.herisson.Clyde.Tables.Course;
|
||||||
@ -14,4 +16,10 @@ public interface CurriculumCourseRepository extends CrudRepository<CurriculumCou
|
|||||||
|
|
||||||
@Query("select distinct cc.curriculum from CurriculumCourse cc")
|
@Query("select distinct cc.curriculum from CurriculumCourse cc")
|
||||||
Iterable<Curriculum> findDistinctCurriculums();
|
Iterable<Curriculum> findDistinctCurriculums();
|
||||||
|
|
||||||
|
@Modifying
|
||||||
|
@Transactional
|
||||||
|
@Query("delete from CurriculumCourse cc where cc.course =?1")
|
||||||
|
void delete(Course course);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,26 +3,22 @@
|
|||||||
import {reactive , ref} from 'vue'
|
import {reactive , ref} from 'vue'
|
||||||
import { getCourses,deleteCourse,alterCourse,createCourse } from "@/rest/courses.js"
|
import { getCourses,deleteCourse,alterCourse,createCourse } from "@/rest/courses.js"
|
||||||
import {getUser, getSelf, getTeachers } from "@/rest/Users.js"
|
import {getUser, getSelf, getTeachers } from "@/rest/Users.js"
|
||||||
|
import {getAllCurriculums} from "@/rest/curriculum.js";
|
||||||
|
|
||||||
|
|
||||||
const self = await getSelf();
|
const self = await getSelf();
|
||||||
|
|
||||||
const curriculum = ref(await getCourses(self.role));
|
const curriculum = ref(await getCourses(self.role));
|
||||||
const profList = await getTeachers();
|
const profList = await getTeachers();
|
||||||
|
const allCurriculums = ref(await getAllCurriculums());
|
||||||
|
|
||||||
const createMod = ref(false)
|
const createMod = ref(false)
|
||||||
const deleteMod = ref(false)
|
const deleteMod = ref(false)
|
||||||
|
|
||||||
const editElementID = ref("")
|
const editElementID = ref("")
|
||||||
|
|
||||||
function editItem(id){
|
|
||||||
editElementID.value = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Juste pour montrer le Create Mode
|
|
||||||
|
|
||||||
const pattern = {
|
const pattern = {
|
||||||
|
"id":null,
|
||||||
"title":null,
|
"title":null,
|
||||||
"credits":null,
|
"credits":null,
|
||||||
"owner":null,
|
"owner":null,
|
||||||
@ -41,7 +37,8 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (!isnull){
|
if (!isnull){
|
||||||
await createCourse(toAdd.title,toAdd.credits,toAdd.owner);
|
await createCourse(toAdd.id,toAdd.title,toAdd.credits,toAdd.owner);
|
||||||
|
|
||||||
toAdd= Object.assign({},pattern);
|
toAdd= Object.assign({},pattern);
|
||||||
|
|
||||||
curriculum.value = await getCourses(self.role);
|
curriculum.value = await getCourses(self.role);
|
||||||
@ -102,7 +99,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="createMod">
|
<div v-if="createMod">
|
||||||
<form class="listElement" style="width:40%;margin-right:auto;margin-left:auto;">
|
<form class="listElement" style="width:40%;margin-right:auto;margin-left:auto;">
|
||||||
|
<div style="margin-bottom: 20px">
|
||||||
|
{{i18n("Curriculum")}}
|
||||||
|
<select v-model="toAdd.id">
|
||||||
|
<option v-for="element in allCurriculums" :value="element.curriculumId">{{element.option}}-{{element.year}}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div style="margin-bottom:20px;">
|
<div style="margin-bottom:20px;">
|
||||||
{{i18n("name")}} :
|
{{i18n("name")}} :
|
||||||
<input v-model="toAdd.title">
|
<input v-model="toAdd.title">
|
||||||
|
@ -136,7 +136,7 @@ async function askChanges(i){
|
|||||||
<div style="margin-bottom:20px;">
|
<div style="margin-bottom:20px;">
|
||||||
{{i18n("schedule")}} :
|
{{i18n("schedule")}} :
|
||||||
<select @change="setCourses()"v-model="curriculum">
|
<select @change="setCourses()"v-model="curriculum">
|
||||||
<option v-for="item in allSchedules" :value='item.curriculum'>{{item.curriculum.option}}</option>
|
<option v-for="item in allSchedules" :value='item.curriculum'>{{item.curriculum.option}}-{{item.curriculum.year}}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:20px;">
|
<div style="margin-bottom:20px;">
|
||||||
|
@ -7,8 +7,8 @@ import { restGet, restPost, restDelete, restPatch } from './restConsumer.js'
|
|||||||
/**
|
/**
|
||||||
* Create a new course
|
* Create a new course
|
||||||
*/
|
*/
|
||||||
export async function createCourse(name, credits, owner){
|
export async function createCourse(id,name, credits, owner){
|
||||||
return restPost("/course", {title: name, credits: credits, owner} )
|
return restPost("/course/curriculum/" + id, {title: name, credits: credits, owner} )
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,7 +19,7 @@ export async function deleteCourse(id){
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get informations on a particular course
|
* Get information on a particular course
|
||||||
*
|
*
|
||||||
* @param id identification of the course
|
* @param id identification of the course
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user