diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index e177e6b..dd86848 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -12,31 +12,16 @@ import ManageTask from "./pages/admin/ManageTask.jsx"; import AttendanceCode from "./pages/admin/AttendanceCode"; import Attendance from "./pages/generation/Attendance"; import AdminStudentAttendance from "./pages/admin/AdminStudentAttendance"; -<<<<<<< HEAD import AdminStudentAssignment from "./pages/admin/AdminStudentAssignment.jsx"; -======= import RequireAuth from "./components/RequireAuth"; import RequireAdmin from "./components/RequireAdmin"; ->>>>>>> 08242a5045ea08b68c40b107cc871f8b3c3446eb function App() { return ( } /> } /> -<<<<<<< HEAD - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> -======= } /> ->>>>>>> 08242a5045ea08b68c40b107cc871f8b3c3446eb ); diff --git a/frontend/src/api/assignment.js b/frontend/src/api/assignment.js index 323730a..2af21aa 100644 --- a/frontend/src/api/assignment.js +++ b/frontend/src/api/assignment.js @@ -13,4 +13,19 @@ export const fetchAssignmentsByUser = async (userId) => { console.error("과제 데이터 불러오기 실패:", err); throw err; } -}; \ No newline at end of file +}; + + +export const submitAssignmentStatus = async (userId, assignmentId, status) => { + return api.post(`/api/admin/users/${userId}/assignments/${assignmentId}/submission`, { + assignmentId, + userId, + status, + }); +}; + +export const updateAssignmentStatus = async (userId, assignmentId, status) => { + return api.put(`/api/admin/users/${userId}/assignments/${assignmentId}/submission`, { + status, + }); +}; diff --git a/frontend/src/pages/admin/AdminStudentAssignment.jsx b/frontend/src/pages/admin/AdminStudentAssignment.jsx index 2114cb4..35d234e 100644 --- a/frontend/src/pages/admin/AdminStudentAssignment.jsx +++ b/frontend/src/pages/admin/AdminStudentAssignment.jsx @@ -5,6 +5,7 @@ import WeeklyOpenBlock from "../../components/WeeklyOpenBlock"; import AssignmentInfoBlock from "../../components/AssignmentInfoBlock"; import api from "../../api/api"; import styles from "./AdminStudentAssignment.module.css"; +import { submitAssignmentStatus, updateAssignmentStatus } from "../../api/assignments"; const AdminStudentAssignment = () => { const { studentId, week } = useParams(); @@ -14,7 +15,7 @@ const AdminStudentAssignment = () => { const [selectedWeekLabel, setSelectedWeekLabel] = useState(null); useEffect(() => { - api.get(`/admin/users/${studentId}`).then((res) => { + api.get(`/admin/users/${userId}`).then((res) => { setStudentInfo(res.data.data); }); @@ -62,13 +63,33 @@ const AdminStudentAssignment = () => { task.modified = true; setWeeks(updated); }; - +/* const handleSave = async (taskId, status) => { await api.put("/admin/assignment/status", { assignmentId: taskId, status, }); }; +*/ +const handleSave = async (taskId, status) => { + const userId = parseInt(studentId); // 문자열일 수 있으니 숫자로 변환 + + try { + // PUT 요청 시도 (기존 과제 수정) + await updateAssignmentStatus(userId, taskId, status); + alert("과제 상태가 수정되었습니다."); + } catch (err) { + console.warn("PUT 실패, POST 시도"); + try { + // 없으면 POST 요청 (새 과제 등록) + await submitAssignmentStatus(userId, taskId, status); + alert("과제 상태가 등록되었습니다."); + } catch (err) { + alert("상태 저장 실패"); + console.error(err); + } + } +}; return (