From 2ffc2f2daac13d7aa71663da64546692175f1c81 Mon Sep 17 00:00:00 2001 From: Imggaggu Date: Sun, 25 May 2025 05:20:26 +0900 Subject: [PATCH] =?UTF-8?q?[Fix]=20Attendance=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/AdminDailyAttendanceCard.jsx | 28 ++++++++++++++++--- .../pages/admin/AdminStudentAttendance.jsx | 6 ++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/AdminDailyAttendanceCard.jsx b/frontend/src/components/AdminDailyAttendanceCard.jsx index 73b0b07..a50b646 100644 --- a/frontend/src/components/AdminDailyAttendanceCard.jsx +++ b/frontend/src/components/AdminDailyAttendanceCard.jsx @@ -24,8 +24,24 @@ const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => { */ try { const rawData = await getStudentAttendance(studentId); - const dayData = rawData.data.find((d) => d.date === date); - const rawSlots = dayData?.slots || []; + /* + "attendanceId": 1, + "userId": 1, + "username": "홍길동", + "date": "2023-10-20", + "order": 1, + "status": true + */ + const dayData = rawData.find((d) => d.date === date); + const rawSlots = dayData + ? [ + { + id: dayData.attendanceId, // API 요청용 ID + order: dayData.order, // 회차 표시용 + status: dayData.status ? "SUCCESS" : "FAILURE", + }, + ] + : []; setSlots(rawSlots); setModified(Array(rawSlots.length).fill(false)); @@ -49,8 +65,12 @@ const AdminDailyAttendanceCard = ({ date, studentId, onClose }) => { const handleSave = async (idx) => { try { - const slot = slots[idx]; - await updateAttendanceStatus(studentId, slot.id, slot.status); + + const slot = slots[idx]; + const attendanceId = slot.id; + const status = slot.status === "SUCCESS"; + + await updateAttendanceStatus(studentId, attendanceId, status); const newModified = [...modified]; newModified[idx] = false; diff --git a/frontend/src/pages/admin/AdminStudentAttendance.jsx b/frontend/src/pages/admin/AdminStudentAttendance.jsx index 0030e5f..daffa99 100644 --- a/frontend/src/pages/admin/AdminStudentAttendance.jsx +++ b/frontend/src/pages/admin/AdminStudentAttendance.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import AdminStudentHeader from "../../components/AdminStudentHeader"; -import DailyAttendanceCard from "../../components/AdminDailyAttendanceCard"; +import AdminDailyAttendanceCard from "../../components/AdminDailyAttendanceCard"; import api from "../../api/api"; import styles from "./AdminStudentAttendance.module.css"; import AdminWeeklyAttendanceList from "../../components/AdminWeeklyAttendanceList"; @@ -75,7 +75,7 @@ const AdminStudentAttendance = () => { const weekSlotMap = new Map(); const dateMap = new Map(); // 추가: 날짜 저장 - rawData.forEach(({ date, order,status }) => { + rawData.forEach(({ date, order, status }) => { const week = getWeekFromDate(date); const statuses = status.map((s) => (s ? "SUCCESS" : "FAILURE")); const existing = weekSlotMap.get(week) || []; @@ -137,7 +137,7 @@ const AdminStudentAttendance = () => { {/* 선택된 날짜의 상세 수정 카드 */} {selectedDate && ( - setSelectedDate(null)}