diff --git a/src/app/(refine)/refine/dashboard/_components/userTable.tsx b/src/app/(refine)/refine/dashboard/_components/userTable.tsx index b034881..334a867 100644 --- a/src/app/(refine)/refine/dashboard/_components/userTable.tsx +++ b/src/app/(refine)/refine/dashboard/_components/userTable.tsx @@ -5,11 +5,8 @@ export const UserTable = ({ children }: { children: React.ReactNode }) => ( UID ชื่อ - อีเมล - สถานะ - คณะ - ขนาดเสื้อ - เข้างานล่าสุด + เบอร์โทรศัพท์ + เข้างานล่าสุด diff --git a/src/app/(refine)/refine/dashboard/_components/userTableRow.tsx b/src/app/(refine)/refine/dashboard/_components/userTableRow.tsx index 09439c7..be82014 100644 --- a/src/app/(refine)/refine/dashboard/_components/userTableRow.tsx +++ b/src/app/(refine)/refine/dashboard/_components/userTableRow.tsx @@ -2,12 +2,12 @@ import dayjs from 'dayjs'; import { User } from '../../libs/interface'; export const UserTableRow = ({ user, onClick }: { user: User, onClick: () => void }) => { - const statusStyles = { - chula_student: 'bg-blue-600', - alumni: 'bg-pink-600', - general_student: 'bg-gray-600', - }; - const style = statusStyles[user.status as keyof typeof statusStyles]; + // const statusStyles = { + // chula_student: 'bg-blue-600', + // alumni: 'bg-pink-600', + // general_student: 'bg-gray-600', + // }; + // const style = statusStyles[user.status as keyof typeof statusStyles]; return ( @@ -17,29 +17,10 @@ export const UserTableRow = ({ user, onClick }: { user: User, onClick: () => voi {user.name} - - {user.email} + + {user.phone} - - - { - { - chula_student: 'นิสิตปัจจุบัน', - alumni: 'ศิษย์เก่า', - general_student: 'บุคคลทั่วไป', - }[user.status] - } - - - - {user.faculty} - - - {user.sizeJersey} - - + {dayjs(user.lastEntered).isValid() ? dayjs(user.lastEntered).format('DD/MM HH:mm') : 'ยังไม่เข้างาน'} diff --git a/src/app/(refine)/refine/users/[id]/_components/userDetails.tsx b/src/app/(refine)/refine/users/[id]/_components/userDetails.tsx index 5e7c53d..056c7c3 100644 --- a/src/app/(refine)/refine/users/[id]/_components/userDetails.tsx +++ b/src/app/(refine)/refine/users/[id]/_components/userDetails.tsx @@ -1,8 +1,6 @@ -/* eslint-disable @next/next/no-img-element */ 'use client'; import { useOne } from '@refinedev/core'; import { User, FieldEntry } from '../../../libs/interface'; -import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; const formatThaiDate = (dateString: string) => { @@ -17,40 +15,22 @@ const formatThaiDate = (dateString: string) => { export default function UserDetails({ id }: { id: string }) { const router = useRouter(); - const [isImageOpen, setIsImageOpen] = useState(false); - const [image, setImage] = useState(null); - const [imageError, setImageError] = useState(''); const { data, isError, isLoading } = useOne({ resource: 'users', id: id, }); - const { data: imageData, isError: isImageError } = useOne({ - resource: 'users/image', - id: id, - }); - const user = data?.data; - useEffect(() => { - if (isImageError) { - setImageError('คุณไม่มีสิทธิ์เข้าถึงภาพนี้'); - setImage(null); - } else if (imageData?.data?.url) { - setImage(imageData.data.url); - setImageError(''); - } - }, [imageData, isImageError]); - const createField = (label: string, field: keyof User): FieldEntry => ({ label, field, }); const renderSection = (title: string, fields: FieldEntry[]) => ( -
-

{title}

-
+
+

{title}

+
{fields.map(({ label, field }) => { const value = user?.[field]; let displayValue = value || 'N/A'; @@ -59,16 +39,16 @@ export default function UserDetails({ id }: { id: string }) { displayValue = formatThaiDate(value as string); } else if (field === 'graduatedYear') { displayValue = (parseInt(value as string) + 543).toString(); - } else if (field === 'status') { - displayValue = value as string; } else if (field === 'isAcrophobic') { displayValue = value ? 'ใช่' : 'ไม่'; } return ( -
- {label} - {displayValue} +
+
{label}
+
+ {displayValue} +
); })} @@ -79,23 +59,23 @@ export default function UserDetails({ id }: { id: string }) { if (isLoading) return
กำลังโหลด...
; if (isError) return ( -
+
เกิดข้อผิดพลาดในการโหลดข้อมูลผู้ใช้
); if (!user) return
ไม่พบผู้ใช้
; return ( -
+
{/* Header */} -
+
- {/* Image Preview */} -
-
setIsImageOpen(true)} - className="relative aspect-[4/3] w-full overflow-hidden rounded-2xl bg-gray-100 shadow-lg" - > - {imageError ? ( -
- - - - {imageError} -
- ) : ( - image && ( - Citizen Card Preview - ) - )} -
-
- {/* Profile Information */} -
-
-

{user.name}

-
- - {user.role} - - {user.uid} +
+
+
+

{user.name}

+
+ + {user.role} + + + {user.uid} + +
-
+
{renderSection('ข้อมูลส่วนตัว', [ createField('อีเมล', 'email'), createField('เบอร์โทรศัพท์', 'phone'), @@ -165,69 +113,21 @@ export default function UserDetails({ id }: { id: string }) { createField('วันที่ลงทะเบียน', 'registeredAt'), ])} - {renderSection('ข้อมูลการศึกษา', [ + {/* {renderSection('ข้อมูลการศึกษา', [ createField('มหาวิทยาลัย', 'university'), createField('คณะ', 'faculty'), createField('ระดับการศึกษา', 'education'), createField('ปีที่จบการศึกษา', 'graduatedYear'), - ])} + ])} */} - {renderSection('ข้อมูลเพิ่มเติม', [ - createField('ขนาดเสื้อ', 'sizeJersey'), + {renderSection('ข้อมูลสุขภาพ', [ createField('ข้อจำกัดด้านอาหาร', 'foodLimitation'), - createField('กลัวความสูงไหม', 'isAcrophobic'), - ...(user.chronicDisease - ? [createField('โรคประจำตัว', 'chronicDisease')] - : []), - ...(user.drugAllergy - ? [createField('อาการแพ้ยา', 'drugAllergy')] - : []), + createField('กลัวความสูง', 'isAcrophobic'), + createField('โรคประจำตัว', 'chronicDisease'), + createField('อาการแพ้ยา', 'drugAllergy'), ])}
- - {/* Image Modal */} - {isImageOpen && ( -
setIsImageOpen(false)} - > -
- -
- {image ? ( - Citizen Card - ) : ( -
- {imageError} -
- )} -
-
-
- )}
); } \ No newline at end of file