diff --git a/front/pages/org/[orgslug]/course/[courseid]/edit/index.tsx b/front/pages/org/[orgslug]/course/[courseid]/edit/index.tsx
index 9f93d0ad..ba9adc3f 100644
--- a/front/pages/org/[orgslug]/course/[courseid]/edit/index.tsx
+++ b/front/pages/org/[orgslug]/course/[courseid]/edit/index.tsx
@@ -7,7 +7,7 @@ import { Title } from "../../../../../../components/ui/styles/Title";
import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd";
import { initialData, initialData2 } from "../../../../../../components/drags/data";
import Chapter from "../../../../../../components/drags/Chapter";
-import { createChapter, deleteChapter, getCourseChaptersMetadata } from "../../../../../../services/courses/chapters";
+import { createChapter, deleteChapter, getCourseChaptersMetadata, updateChaptersMetadata } from "../../../../../../services/courses/chapters";
import { useRouter } from "next/router";
import NewChapterModal from "../../../../../../components/modals/CourseEdit/NewChapter";
import NewElementModal from "../../../../../../components/modals/CourseEdit/NewElement";
@@ -73,6 +73,7 @@ function CourseEdit() {
// Submit new element
const submitElement = async (element: any) => {
console.log("submitElement", element);
+ updateChaptersMetadata(courseid, data);
await createElement(element, element.chapterId);
getCourseChapters();
setNewElementModal(false);
@@ -84,10 +85,9 @@ function CourseEdit() {
getCourseChapters();
};
- const openNewElementModal = async (chapterId: any) => {
- console.log("openNewElementModal", chapterId);
- setNewElementModal(true);
- setNewElementModalData(chapterId);
+ const updateChapters = () => {
+ console.log(data);
+ updateChaptersMetadata(courseid,data);
};
/*
@@ -95,6 +95,13 @@ function CourseEdit() {
Modals
*/
+
+ const openNewElementModal = async (chapterId: any) => {
+ console.log("openNewElementModal", chapterId);
+ setNewElementModal(true);
+ setNewElementModalData(chapterId);
+ };
+
// Close new chapter modal
const closeNewChapterModal = () => {
setNewChapterModal(false);
@@ -218,6 +225,13 @@ function CourseEdit() {
>
+
+
{newChapterModal && }
{newElementModal && }
@@ -232,7 +246,15 @@ function CourseEdit() {
{getChapters().map((info: any, index: any) => (
<>
-
+
>
))}
{provided.placeholder}
diff --git a/front/services/courses/chapters.ts b/front/services/courses/chapters.ts
index c594b7d6..63eb395d 100644
--- a/front/services/courses/chapters.ts
+++ b/front/services/courses/chapters.ts
@@ -20,6 +20,26 @@ export async function getCourseChaptersMetadata(course_id: any) {
return data;
}
+export async function updateChaptersMetadata(course_id: any, data: any) {
+ const HeadersConfig = new Headers({ "Content-Type": "application/json" });
+
+ const requestOptions: any = {
+ method: "PUT",
+ headers: HeadersConfig,
+ redirect: "follow",
+ credentials: "include",
+ body: JSON.stringify(data),
+ };
+
+ const result: any = await fetch(`${getAPIUrl()}chapters/meta/course_${course_id}`, requestOptions)
+ .then((result) => result.json())
+ .catch((error) => console.log("error", error));
+
+ console.log("result", result);
+
+ return result;
+}
+
export async function createChapter(data: any, course_id: any) {
console.log("data", data, course_id);
diff --git a/src/services/courses/chapters.py b/src/services/courses/chapters.py
index c8619fea..11e1460f 100644
--- a/src/services/courses/chapters.py
+++ b/src/services/courses/chapters.py
@@ -28,7 +28,8 @@ class CourseChapterInDB(CourseChapter):
# Frontend
class CourseChapterMetaData(BaseModel):
chapterOrder: List[str]
- chapters: List
+ chapters: object
+ elements: object
#### Classes ####################################################
@@ -167,8 +168,6 @@ async def get_coursechapters_meta(course_id: str, current_user: PublicUser):
coursechapters = coursechapters.find(
{"course_id": course_id}).sort("name", 1)
-
-
course = courses.find_one({"course_id": course_id})
course = Course(**course) # type: ignore
@@ -213,16 +212,20 @@ async def update_coursechapters_meta(course_id: str, coursechapters_metadata: Co
coursechapters = learnhouseDB["coursechapters"]
courses = learnhouseDB["courses"]
- course = courses.find_one({"course_id": course_id})
- course = Course(**course) # type: ignore
-
# update chapters in course
courseInDB = courses.update_one({"course_id": course_id}, {
"$set": {"chapters": coursechapters_metadata.chapterOrder}})
- # TODO : update chapters in coursechapters
- return {courseInDB}
+ # update elements in coursechapters
+ # TODO : performance/optimization improvement
+ for coursechapter in coursechapters_metadata.chapters:
+ coursechapters.update_one({"coursechapter_id": coursechapter}, {
+ "$set": {"elements": coursechapters_metadata.chapters[coursechapter]["elementIds"]}})
+
+
+
+ return {"ok"}
#### Security ####################################################