diff --git a/app/panel/(layout)/add-doctor/page.js b/app/panel/(layout)/add-doctor/page.js
index 08d6a9c..3b332be 100644
--- a/app/panel/(layout)/add-doctor/page.js
+++ b/app/panel/(layout)/add-doctor/page.js
@@ -1,8 +1,7 @@
import AddDoctorPage from "@/components/panel/addDoctor";
-import Information from "@/data/information.json";
function AddDoctor() {
- return ;
+ return ;
}
export default AddDoctor;
diff --git a/app/panel/(layout)/dashboard/page.js b/app/panel/(layout)/dashboard/page.js
index 48322bc..199417a 100644
--- a/app/panel/(layout)/dashboard/page.js
+++ b/app/panel/(layout)/dashboard/page.js
@@ -2,7 +2,7 @@ import DashboardPage from "@/components/panel/dashboard";
import { cookies } from "next/headers";
import { fetchReq } from "@/lib/req";
import { safeJsonParse } from "@/lib/sanitize";
-import { adaptRepresentationDashboard } from "@/helper";
+import { adaptRepresentationDashboard } from "@/lib/representationAdapters";
export const dynamic = "force-dynamic";
diff --git a/app/panel/(layout)/turns/page.js b/app/panel/(layout)/turns/page.js
index c87d470..f3a473e 100644
--- a/app/panel/(layout)/turns/page.js
+++ b/app/panel/(layout)/turns/page.js
@@ -1,8 +1,40 @@
import TurnsPage from "@/components/panel/turns";
-import Information from "@/data/information.json";
+import { cookies } from "next/headers";
+import { fetchReq } from "@/lib/req";
+import { safeJsonParse } from "@/lib/sanitize";
+import { adaptRepresentationDashboard } from "@/lib/representationAdapters";
-function page() {
- return ;
+export const dynamic = "force-dynamic";
+
+async function page() {
+ const API_URL = process.env.NEXT_PUBLIC_API_URL;
+ let dashboard = null;
+
+ try {
+ const cookieStore = await cookies();
+ const userInfo = cookieStore.get("userInfo");
+ const accessToken = cookieStore.get("access_token");
+
+ if (userInfo && accessToken) {
+ const parsedUserInfo = safeJsonParse(userInfo.value);
+ const representationUuid = parsedUserInfo?.representation_uuid;
+
+ if (representationUuid) {
+ const now = new Date();
+ const year = now.getFullYear();
+ const month = now.getMonth() + 1;
+
+ dashboard = await fetchReq(
+ `${API_URL}/api/v1/representation/${representationUuid}/dashboard/monthly?year=${year}&month=${month}`,
+ { headers: { Authorization: `Bearer ${accessToken.value}` } }
+ );
+ }
+ }
+ } catch (error) {
+ console.error("Error fetching representation turns:", error);
+ }
+
+ return ;
}
export default page;
diff --git a/app/panel/(layout)/user-account/page.js b/app/panel/(layout)/user-account/page.js
index 56c3b25..5ffcf1b 100644
--- a/app/panel/(layout)/user-account/page.js
+++ b/app/panel/(layout)/user-account/page.js
@@ -1,9 +1,38 @@
import UserAccountPage from "@/components/panel/userAccount";
-import Information from "@/data/information.json";
-import Bank from "@/data/bank.json";
+import { cookies } from "next/headers";
+import { fetchReq } from "@/lib/req";
+import { safeJsonParse } from "@/lib/sanitize";
+import { adaptBankAccount } from "@/lib/representationAdapters";
-function UserAccount() {
- return ;
+export const dynamic = "force-dynamic";
+
+async function UserAccount() {
+ const API_URL = process.env.NEXT_PUBLIC_API_URL;
+ let representation = null;
+
+ try {
+ const cookieStore = await cookies();
+ const userInfo = cookieStore.get("userInfo");
+ const accessToken = cookieStore.get("access_token");
+
+ if (userInfo && accessToken) {
+ const parsedUserInfo = safeJsonParse(userInfo.value);
+ const representationUuid = parsedUserInfo?.representation_uuid;
+
+ if (representationUuid) {
+ representation = await fetchReq(
+ `${API_URL}/api/v1/representation/${representationUuid}`,
+ { headers: { Authorization: `Bearer ${accessToken.value}` } }
+ );
+ }
+ }
+ } catch (error) {
+ console.error("Error fetching representation account:", error);
+ }
+
+ const bank = adaptBankAccount(representation?.data?.bank_account);
+
+ return ;
}
export default UserAccount;
diff --git a/components/clinic/components/doctors/index.js b/components/clinic/components/doctors/index.js
index 3e35fbe..dad74f1 100644
--- a/components/clinic/components/doctors/index.js
+++ b/components/clinic/components/doctors/index.js
@@ -3,7 +3,6 @@
import { useState } from "react";
import List from "./List";
import Head from "./head";
-import page from "@/app/panel/(layout)/turns/page";
function Doctors({ slug, doctors, pages }) {
const [page, setPage] = useState(pages?.current || 1);
diff --git a/components/panel/Content.js b/components/panel/Content.js
index 85f67f2..adf8516 100644
--- a/components/panel/Content.js
+++ b/components/panel/Content.js
@@ -6,7 +6,7 @@ import Sidebar from "@/components/layoutPanel/sidebar";
import UserDetail from "@/components/layoutPanel/userDetail";
import { usePathname } from "next/navigation";
import BgGray from "@/components/layoutPanel/sidebar/BgGray";
-import { adaptRepresentationInfo } from "@/helper";
+import { adaptRepresentationInfo } from "@/lib/representationAdapters";
function Content({ children, representationInfo }) {
const pathname = usePathname();
diff --git a/helper/index.js b/helper/index.js
index 9a6ec32..6ade467 100644
--- a/helper/index.js
+++ b/helper/index.js
@@ -675,39 +675,3 @@ export function changeNumToDefault(str) {
.replace(/[٠-٩]/g, d => "٠١٢٣٤٥٦٧٨٩".indexOf(d));
}
-export function adaptRepresentationInfo(representationInfo) {
- const data = representationInfo?.data ?? representationInfo ?? {};
-
- return {
- name: data.full_name ?? "",
- src: data.avatar ?? "/assets/images/doctor.png",
- detail: data.city_name ? `نماینده شهر ${data.city_name}` : "نماینده",
- mobile_number: data.mobile_number ?? "",
- commission_percent: data.commission_percent ?? null,
- bank_account: data.bank_account ?? null,
- city: { label: data.city_name ?? "" },
- all_patients: null,
- total_turns: null,
- number_of_patients: null,
- today_turns: null,
- payments: null,
- todays_activities: [],
- list_of_doctors_appointments: [],
- chart_amount_income: [],
- };
-}
-
-export function adaptRepresentationDashboard(dashboard) {
- const stats = dashboard?.data?.stats ?? dashboard?.stats ?? {};
- const daily = Array.isArray(stats.daily) ? stats.daily : [];
-
- return {
- number_of_patients: stats.total_appointments ?? 0,
- today_turns: daily.length ? daily[daily.length - 1].appointments ?? 0 : 0,
- payments: stats.total_revenue_rials ?? 0,
- commission_rials: stats.commission_rials ?? 0,
- chart_amount_income: daily.map((d) => d.revenue ?? 0),
- list_of_doctors_appointments: [],
- todays_activities: [],
- };
-}
diff --git a/lib/representationAdapters.js b/lib/representationAdapters.js
new file mode 100644
index 0000000..aec5e17
--- /dev/null
+++ b/lib/representationAdapters.js
@@ -0,0 +1,66 @@
+import moment from "moment-jalaali";
+
+const DEFAULT_AVATAR = "/assets/images/doctor.png";
+
+function toJalali(date) {
+ if (!date) return "--";
+ return moment(date).format("jYYYY/jM/jD");
+}
+
+export function adaptRepresentationInfo(representationInfo) {
+ const data = representationInfo?.data ?? representationInfo ?? {};
+
+ return {
+ name: data.full_name ?? "",
+ src: data.avatar ?? DEFAULT_AVATAR,
+ detail: data.city_name ? `نماینده شهر ${data.city_name}` : "نماینده",
+ mobile_number: data.mobile_number ?? "",
+ commission_percent: data.commission_percent ?? null,
+ bank_account: data.bank_account ?? null,
+ city: { label: data.city_name ?? "" },
+ all_patients: null,
+ total_turns: null,
+ number_of_patients: null,
+ today_turns: null,
+ payments: null,
+ todays_activities: [],
+ list_of_doctors_appointments: [],
+ chart_amount_income: [],
+ };
+}
+
+export function adaptRepresentationDashboard(dashboard) {
+ const stats = dashboard?.data?.stats ?? dashboard?.stats ?? {};
+ const daily = Array.isArray(stats.daily) ? stats.daily : [];
+
+ return {
+ number_of_patients: stats.total_appointments ?? 0,
+ today_turns: daily.length ? daily[daily.length - 1].appointments ?? 0 : 0,
+ payments: stats.total_revenue_rials ?? 0,
+ commission_rials: stats.commission_rials ?? 0,
+ chart_amount_income: daily.map((d) => d.revenue ?? 0),
+ list_of_doctors_appointments: daily.map((d) => ({
+ name: "",
+ expertise: "",
+ image: DEFAULT_AVATAR,
+ date: toJalali(d.date),
+ hour: "",
+ number_of_turns: d.appointments ?? 0,
+ })),
+ todays_activities: [],
+ };
+}
+
+export function adaptBankAccount(bankAccount) {
+ if (!bankAccount) return [];
+ return [
+ {
+ id: 1,
+ card_number: bankAccount.account_number ?? "",
+ shaba_number: bankAccount.iban ?? "",
+ bank: bankAccount.bank_name ?? "",
+ owner_name: bankAccount.owner_name ?? "",
+ status: true,
+ },
+ ];
+}