Skip to content

Commit 0d5a440

Browse files
authored
Merge pull request #180 from pirogramming/main
deploy admin:assingment,attendance api 연결 수정 test
2 parents 2044eeb + dd62ef1 commit 0d5a440

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed

frontend/src/api/adminattendance.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import api from "./api";
22

33
// api/attendanceApi.js
4-
4+
/*
55
export const getStudentBasicInfo = async (studentId) => {
66
try {
77
const res = await api.get(`/admin/managestudent/${studentId}`);
@@ -24,3 +24,59 @@ export const getStudentAttendance = async (studentId) => {
2424
throw error;
2525
}
2626
};
27+
*/
28+
29+
30+
// 학생 기본 정보 조회
31+
export const getStudentBasicInfo = async (studentId) => {
32+
try {
33+
const res = await api.get(`/admin/users/${studentId}`);
34+
return res.data;
35+
} catch (error) {
36+
console.error("학생 기본 정보 불러오기 실패:", error);
37+
throw error;
38+
}
39+
};
40+
41+
// 학생 출석 전체 데이터 조회 (특정 날짜와 차수 포함)
42+
export const getStudentAttendance = async (studentId) => {
43+
try {
44+
const res = await api.get(`/api/attendance/${studentId}`);
45+
return res.data;
46+
} catch (error) {
47+
console.error("학생 출석 정보 불러오기 실패:", error);
48+
throw error;
49+
}
50+
};
51+
52+
// 특정 출석 기록 조회
53+
export const getAttendanceDetail = async (userId, attendanceId) => {
54+
try {
55+
const res = await api.get(`/api/admin/users/${userId}/attendance/${attendanceId}`);
56+
return res.data;
57+
} catch (error) {
58+
console.error("출석 상세 조회 실패:", error);
59+
throw error;
60+
}
61+
};
62+
63+
// 출석 상태 변경
64+
export const updateAttendanceStatus = async (userId, attendanceId, status) => {
65+
try {
66+
const res = await api.put(`/api/admin/users/${userId}/attendance/${attendanceId}/status`, { status });
67+
return res.data;
68+
} catch (error) {
69+
console.error("출석 상태 변경 실패:", error);
70+
throw error;
71+
}
72+
};
73+
74+
// 출석 기록 삭제
75+
export const deleteAttendanceRecord = async (userId, attendanceId) => {
76+
try {
77+
await api.delete(`/api/admin/users/${userId}/attendance/${attendanceId}`);
78+
} catch (error) {
79+
console.error("출석 기록 삭제 실패:", error);
80+
throw error;
81+
}
82+
};

frontend/src/components/AdminDailyAttendanceCard.jsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useEffect, useState } from "react";
22
import "./componentsCss/AdminDailyAttendanceCard.css";
33
import api from "../api/api";
4+
import { getStudentAttendance,updateAttendanceStatus } from "../api/adminattendance";
45

56
const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => {
67
const [slots, setSlots] = useState([]);
@@ -22,12 +23,10 @@ const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => {
2223
}
2324
*/
2425
try {
25-
const res = await api.get("/attendance/user/date", {
26-
params: { userId: studentId, date },
27-
withCredentials: true,
28-
});
26+
const rawData = await getStudentAttendance(studentId);
27+
const dayData = rawData.data.find((d) => d.date === date);
28+
const rawSlots = dayData?.slots || [];
2929

30-
const rawSlots = res.data.data?.[0]?.slots || [];
3130
setSlots(rawSlots);
3231
setModified(Array(rawSlots.length).fill(false));
3332
} catch (err) {
@@ -38,9 +37,9 @@ const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => {
3837
fetchSlots();
3938
}, [date, studentId]);
4039

41-
const handleToggle = (idx) => {
40+
const handleChange = (idx, newValue) => {
4241
const newSlots = [...slots];
43-
newSlots[idx].status = !newSlots[idx].status;
42+
newSlots[idx].status = newValue === "SUCCESS";
4443
setSlots(newSlots);
4544

4645
const newModified = [...modified];
@@ -50,10 +49,8 @@ const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => {
5049

5150
const handleSave = async (idx) => {
5251
try {
53-
const slotId = slots[idx].id;
54-
await api.put(`/attendance/slot/${slotId}`, {
55-
status: slots[idx].status,
56-
}, { withCredentials: true });
52+
const slot = slots[idx];
53+
await updateAttendanceStatus(studentId, slot.id, slot.status);
5754

5855
const newModified = [...modified];
5956
newModified[idx] = false;

frontend/src/pages/admin/AdminStudentAssignment.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
updateAssignmentStatus,
1111
fetchStudentInfo,
1212
fetchStudentAssignments,
13-
} from "../../api/assignmentAdmin";
13+
} from "../../api/adminassignemnt";
1414

1515
const AdminStudentAssignment = () => {
1616
const { studentId, week } = useParams();

frontend/src/pages/admin/AdminStudentAssignment.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
padding: 20px;
55
font-family: "Inter", sans-serif;
66
color: white;
7-
background-color: #1e1e1e;
7+
background-color: var(--background-black);
88
}
99

1010
/* 과제 개요 카드 (상단 형광 카드) */

0 commit comments

Comments
 (0)