fix(dashboard): turns tab uses real appointment fields + empty state

The turns list/card read start_time, slot.time and doctor.specialty,
none of which exist on Appointment.toArray() (slot_start, doctor.name,
status). Use slot_start for the Jalali date/time, replace the specialty
column with a Persian status label, and show an empty state when there
are no appointments.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hamed
2026-06-15 19:39:12 +03:30
co-authored by Claude Opus 4.8
parent 224c51069c
commit 8a87d9cf92
2 changed files with 42 additions and 14 deletions
@@ -9,17 +9,35 @@ import CustomLoading from "@/app/component/loading/Custom";
import Pagination from "@/app/component/Pagination";
import { convertTimestampToJalali, convertTimestampToTime } from "@/helper";
const STATUS_LABELS = {
pending: "در انتظار پرداخت",
confirmed: "تأیید شده",
completed: "انجام شده",
cancelled_by_user: "لغو شده",
cancelled_by_doctor: "لغو توسط پزشک",
expired: "منقضی شده",
no_show: "عدم مراجعه",
};
function List({ user, loading, setIsTurnsDetails, page, totalPages, onPageChange }) {
const tableHead = [
"ردیف",
"نام پزشک",
"تخصص",
"تاریخ",
"ساعت",
"وضعیت",
"عملیات",
];
const centerTable = [0, 4];
if (!loading && (!Array.isArray(user) || user.length === 0)) {
return (
<p className="text-[#7E7E7E] text-[14px] md:text-[16px] font-medium text-center py-[56px]">
نوبتی ثبت نکردهاید.
</p>
);
}
return (
<div className="!mt-[24px]">
<div className="hidden lg:block">
@@ -43,20 +61,12 @@ function List({ user, loading, setIsTurnsDetails, page, totalPages, onPageChange
{row.doctor?.name || "--"}
</TextLoading>
</TableCell>
<TableCell
className="!text-start !pr-[18px] !text-nowrap"
align="right"
>
<TextLoading width={100} height={18} loading={loading}>
{row.doctor?.specialty?.name || "--"}
</TextLoading>
</TableCell>
<TableCell
className="!text-start !pr-[18px] !text-nowrap"
align="right"
>
<TextLoading width={80} height={18} loading={loading}>
{convertTimestampToJalali(row.start_time)}
{convertTimestampToJalali(row.slot_start)}
</TextLoading>
</TableCell>
<TableCell
@@ -64,7 +74,15 @@ function List({ user, loading, setIsTurnsDetails, page, totalPages, onPageChange
align="right"
>
<TextLoading width={50} height={18} loading={loading}>
{row.slot?.time || convertTimestampToTime(row.start_time)}
{convertTimestampToTime(row.slot_start)}
</TextLoading>
</TableCell>
<TableCell
className="!text-center !pr-[18px] !text-nowrap"
align="right"
>
<TextLoading width={80} height={18} loading={loading}>
{STATUS_LABELS[row.status] || row.status || "--"}
</TextLoading>
</TableCell>
<TableCell className="!pr-[18px] !text-nowrap" align="right">