Add JSON files for Payment Gateway Interface and API documentation updates

- Created a new JSON file for the PaymentGatewayInterface.php, detailing its methods and return types.
- Added a JSON file for payment.md, documenting various API endpoints and their parameters, responses, and errors.
- Introduced a JSON file for fix-admin-modal-and-calendar.md, outlining issues and solutions related to admin modal and calendar functionalities.
This commit is contained in:
hamed
2026-07-02 21:22:14 +03:30
parent 1804b4215d
commit 1c81c6f2e5
64 changed files with 9663 additions and 1999 deletions
+4 -4
View File
@@ -207,7 +207,7 @@ function PlansTab() {
{plan.periods.length === 0 ? (
<div style={{ padding: '20px 16px', color: 'var(--text-3)', fontSize: 13 }}>هنوز دورهای تعریف نشده</div>
) : (
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<thead>
<tr style={{ borderBottom: '1px solid var(--border)' }}>
<th style={{ textAlign: 'right', padding: '8px 16px', color: 'var(--text-3)', fontWeight: 500 }}>دوره</th>
@@ -239,7 +239,7 @@ function PlansTab() {
</tr>
))}
</tbody>
</table>
</table></div>
)}
</div>
))}
@@ -382,7 +382,7 @@ function ReportTab() {
<div className="card-pad" style={{ color: 'var(--text-3)', textAlign: 'center', padding: '40px 0' }}>هیچ اشتراکی ثبت نشده</div>
) : (
<>
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<thead>
<tr style={{ borderBottom: '1px solid var(--border)' }}>
<th style={{ textAlign: 'right', padding: '10px 16px', color: 'var(--text-3)', fontWeight: 500 }}>نوع</th>
@@ -416,7 +416,7 @@ function ReportTab() {
</tr>
))}
</tbody>
</table>
</table></div>
<div style={{ padding: '12px 16px' }}>
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
</div>
+2 -2
View File
@@ -199,7 +199,7 @@ function TableView({
return (
<div style={{ overflowX: 'auto' }}>
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<thead>
<tr style={{ borderBottom: '1px solid var(--border)', background: 'var(--surface-2)' }}>
<th style={th}>ردیف</th>
@@ -241,7 +241,7 @@ function TableView({
</tr>
))}
</tbody>
</table>
</table></div>
</div>
);
}
+1 -1
View File
@@ -781,7 +781,7 @@ export default function ClinicDetailPage() {
</div>
{/* ── Main grid ── */}
<div style={{ display: 'grid', gridTemplateColumns: '1fr 300px', gap: 'var(--gap)', alignItems: 'start' }}>
<div className="split-2">
{/* Left column */}
<div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--gap)' }}>
+2 -2
View File
@@ -135,7 +135,7 @@ export default function ClinicsPage() {
</div>
</div>
<table className="t">
<div className="table-wrap"><table className="t">
<thead>
<tr>
<th>کلینیک</th>
@@ -237,7 +237,7 @@ export default function ClinicsPage() {
);
})}
</tbody>
</table>
</table></div>
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
</div>
+4 -4
View File
@@ -511,7 +511,7 @@ function AdminDashboard() {
<div className="grid-2" style={{ marginBottom: 'var(--gap)' }}>
<div className="card card-pad">
<div className="card-title-row"><h3 style={{ fontSize: 16 }}>دسترسی سریع</h3></div>
<div className="quick-grid" style={{ gridTemplateColumns: 'repeat(3,1fr)' }}>
<div className="quick-grid">
{quickActions.map(a => (
<Link key={a.to} to={a.to} className="quick">
<span className="qi" style={{ background: a.bg, color: a.color }}>
@@ -947,7 +947,7 @@ function SecretaryDashboard() {
</div>
</div>
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(2, 1fr)' }}>
<div className="stat-grid">
{kpiCards.map(c => (
<div key={c.label} className="stat">
<div className="ico" style={{ background: c.bg, color: c.color }}>
@@ -1053,7 +1053,7 @@ function RepresentationDashboard() {
</button>
</div>
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)' }}>
<div className="stat-grid">
{apptCards.map(c => (
<div key={c.label} className="stat">
<div className="ico" style={{ background: c.bg, color: c.color }}>
@@ -1069,7 +1069,7 @@ function RepresentationDashboard() {
<div className="card-title-row" style={{ marginBottom: 12 }}>
<h3 style={{ fontSize: 16 }}>درآمد نماینده</h3>
</div>
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)' }}>
<div className="stat-grid">
{incomeCards.map(c => (
<div key={c.label} className="stat" style={{ background: 'var(--surface-3)' }}>
<div className="lbl">{c.label}</div>
+1 -1
View File
@@ -1104,7 +1104,7 @@ function SessionEditor({ session, onChange, onRemove, addresses }: {
<div style={{ border: '1px solid var(--border)', borderRadius: 'var(--r)', background: 'var(--surface)', overflow: 'hidden' }}>
{/* Time inputs */}
<div style={{ padding: '14px 16px 12px', display: 'grid', gridTemplateColumns: '1fr 1fr auto', gap: 12, alignItems: 'end' }}>
<div style={{ padding: '14px 16px 12px', display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))', gap: 12, alignItems: 'end' }}>
<div>
<div style={{ fontSize: 12, color: 'var(--text-2)', marginBottom: 5 }}>از ساعت</div>
<TimeSelect value={session.start_time} onChange={v => upd('start_time', v)} />
+1 -1
View File
@@ -209,7 +209,7 @@ export default function DoctorsPage() {
</div>
{/* KPI cards */}
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(5,1fr)' }}>
<div className="stat-grid">
{kpiCards.map((c) => (
<div key={c.label} className="stat">
<div className="ico" style={{ background: c.bg, color: c.color }}>
+1 -1
View File
@@ -93,7 +93,7 @@ export default function FinancialReportPage() {
</div>
</div>
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(5,1fr)', marginBottom: 'var(--gap)' }}>
<div className="stat-grid" style={{ marginBottom: 'var(--gap)' }}>
{cards.map((c) => (
<div key={c.label} className="stat" style={{ background: c.bg }}>
<div className="stat-label">{c.label}</div>
+1 -1
View File
@@ -113,7 +113,7 @@ export default function PaymentsPage() {
</div>
{/* Stat cards */}
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4,1fr)' }}>
<div className="stat-grid">
{statCards.map((c) => (
<div key={c.label} className="stat">
<div className="ico" style={{ background: c.bg, color: c.color }}>
+2 -2
View File
@@ -98,7 +98,7 @@ export default function PreRegistrationsPage() {
</div>
<div className="card" style={{ padding: 0, overflow: 'hidden' }}>
<table className="t">
<div className="table-wrap"><table className="t">
<thead>
<tr>
<th>نام</th>
@@ -186,7 +186,7 @@ export default function PreRegistrationsPage() {
);
})}
</tbody>
</table>
</table></div>
</div>
<Pagination page={page} total={total} limit={limit} onPageChange={setPage} />
@@ -104,7 +104,7 @@ export default function RepresentationFinancePage() {
</div>
{/* کارت‌های خلاصه */}
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(4, 1fr)', marginBottom: 'var(--gap)' }}>
<div className="stat-grid" style={{ marginBottom: 'var(--gap)' }}>
{cards.map(c => (
<div key={c.label} className="stat">
<div className="ico" style={{ background: c.bg, color: c.color }}>
@@ -129,7 +129,7 @@ export default function RepresentationFinancePage() {
</div>
<div style={{ overflowX: 'auto' }}>
<table className="tbl tbl-zebra" style={{ width: '100%', minWidth: 720 }}>
<div className="table-wrap"><table className="tbl tbl-zebra" style={{ width: '100%', minWidth: 720 }}>
<thead>
<tr>
<th>پزشک</th>
@@ -174,7 +174,7 @@ export default function RepresentationFinancePage() {
</tr>
))}
</tbody>
</table>
</table></div>
</div>
</div>
@@ -146,7 +146,7 @@ export default function RepresentationProfilePage() {
</div>
<div style={{ overflowX: 'auto' }}>
<table className="tbl" style={{ width: '100%' }}>
<div className="table-wrap"><table className="tbl" style={{ width: '100%' }}>
<thead><tr><th>شماره شبا</th><th>بانک</th><th>صاحب حساب</th><th>وضعیت</th><th></th></tr></thead>
<tbody>
{ibans.length === 0 && (
@@ -166,7 +166,7 @@ export default function RepresentationProfilePage() {
</tr>
))}
</tbody>
</table>
</table></div>
</div>
{!verified && (
@@ -103,7 +103,7 @@ export default function RepresentationSettlementPage() {
</div>
</div>
<div className="stat-grid" style={{ gridTemplateColumns: 'repeat(3, 1fr)' }}>
<div className="stat-grid">
{cards.map(c => (
<div key={c.label} className="stat" style={{ background: 'var(--surface-3)' }}>
<div className="lbl">{c.label}</div>
@@ -151,7 +151,7 @@ export default function RepresentationSettlementPage() {
<h3 style={{ fontSize: 16 }}>درخواستهای قبلی</h3>
</div>
<div style={{ overflowX: 'auto' }}>
<table className="tbl" style={{ width: '100%' }}>
<div className="table-wrap"><table className="tbl" style={{ width: '100%' }}>
<thead><tr><th>مبلغ</th><th>وضعیت</th><th>توضیح مدیر</th><th>تاریخ</th></tr></thead>
<tbody>
{settlements.length === 0 && (
@@ -166,7 +166,7 @@ export default function RepresentationSettlementPage() {
</tr>
))}
</tbody>
</table>
</table></div>
</div>
<Pagination page={page} total={settlementsTotal} limit={limit} onPageChange={setPage} />
</div>
+2 -2
View File
@@ -427,7 +427,7 @@ function SmsWalletPageInner() {
</div>
) : (
<>
<table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<div className="table-wrap"><table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 13 }}>
<thead>
<tr style={{ background: 'oklch(0.97 0.01 256)', borderBottom: '1px solid var(--border)' }}>
<th style={{ textAlign: 'right', padding: '10px 16px', fontWeight: 600, color: 'var(--text-2)' }}>نوع</th>
@@ -469,7 +469,7 @@ function SmsWalletPageInner() {
</tr>
))}
</tbody>
</table>
</table></div>
<div style={{ padding: '12px 16px' }}>
<Pagination page={logPage} total={total} limit={20} onPageChange={setLogPage} />
</div>
+1 -1
View File
@@ -168,7 +168,7 @@ export default function StaffPage() {
{/* KPI bar */}
{!isLoading && (
<div className="stat-grid" style={{ marginBottom: 16, gridTemplateColumns: 'repeat(3, 1fr)' }}>
<div className="stat-grid" style={{ marginBottom: 16 }}>
<div className="card card-pad" style={{ textAlign: 'center' }}>
<div style={{ fontSize: 28, fontWeight: 800, color: 'var(--text-1)' }}>{total}</div>
<div style={{ fontSize: 13, color: 'var(--text-3)', marginTop: 2 }}>کل پرسنل</div>