diff --git a/frontend_management/pages/instructor/courses/create.vue b/frontend_management/pages/instructor/courses/create.vue
new file mode 100644
index 00000000..9a915c95
--- /dev/null
+++ b/frontend_management/pages/instructor/courses/create.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
สร้างหลักสูตรใหม่
+
กรอกข้อมูลหลักสูตรของคุณ
+
+
+
+
+
+
+
+ ข้อมูลพื้นฐาน
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ราคาและการตั้งค่า
+
+
+
+
+
+
+
+
+
+ รูปภาพปก
+
+
+
+
+
+
+
+
+
+
+
+
![Thumbnail preview]()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend_management/pages/instructor/courses/index.vue b/frontend_management/pages/instructor/courses/index.vue
index 5b73b9eb..384a9dea 100644
--- a/frontend_management/pages/instructor/courses/index.vue
+++ b/frontend_management/pages/instructor/courses/index.vue
@@ -84,8 +84,15 @@
class="bg-white rounded-xl shadow-sm overflow-hidden hover:shadow-md transition-shadow"
>
-
-
+
+
![]()
+
diff --git a/frontend_management/services/admin.service.ts b/frontend_management/services/admin.service.ts
index 1f76636f..11e96517 100644
--- a/frontend_management/services/admin.service.ts
+++ b/frontend_management/services/admin.service.ts
@@ -185,7 +185,7 @@ export const adminService = {
}
const token = getAuthToken();
- const response = await $fetch
('/api/admin/categories', {
+ const response = await $fetch('/api/categories', {
baseURL: config.public.apiBaseUrl as string,
headers: {
Authorization: `Bearer ${token}`
diff --git a/frontend_management/services/instructor.service.ts b/frontend_management/services/instructor.service.ts
index 64e54188..8138c081 100644
--- a/frontend_management/services/instructor.service.ts
+++ b/frontend_management/services/instructor.service.ts
@@ -126,6 +126,54 @@ export const instructorService = {
}
});
+ return response.data;
+ },
+
+ async createCourse(data: CreateCourseRequest): Promise {
+ const config = useRuntimeConfig();
+ const useMockData = config.public.useMockData as boolean;
+
+ if (useMockData) {
+ await new Promise(resolve => setTimeout(resolve, 500));
+ return {
+ ...MOCK_COURSES[0],
+ id: Date.now(),
+ ...data,
+ price: String(data.price), // Convert number to string to match CourseResponse type
+ status: 'DRAFT',
+ created_at: new Date().toISOString(),
+ updated_at: new Date().toISOString()
+ } as CourseResponse;
+ }
+
+ const token = getAuthToken();
+ const response = await $fetch<{ code: number; data: CourseResponse }>('/api/instructors/courses', {
+ method: 'POST',
+ baseURL: config.public.apiBaseUrl as string,
+ headers: {
+ Authorization: `Bearer ${token}`
+ },
+ body: { data }
+ });
+
return response.data;
}
};
+
+// Create course request
+export interface CreateCourseRequest {
+ category_id: number;
+ title: {
+ en: string;
+ th: string;
+ };
+ slug: string;
+ description: {
+ en: string;
+ th: string;
+ };
+ thumbnail_url?: string | null;
+ price: number;
+ is_free: boolean;
+ have_certificate: boolean;
+}