feat(migrations): add national_code_verified flag to users and normalize bank_account representation
- Added a new column `national_code_verified` to the `users` table. - Normalized the `bank_account` field in the `representations` table from a single object to an array of IBANs with a default `verified` status of false. feat(ApiIrService): implement identity verification client for api.ir - Created `ApiIrService` to handle identity verification via api.ir. - Implemented methods for matching national code with mobile and IBAN with national code and birth date. - Added error handling and logging for external API requests.
This commit is contained in:
@@ -0,0 +1,253 @@
|
||||
# تأیید هویت نماینده (کد ملی + شبا با استعلام s.api.ir) و انتخاب شبا در تسویه
|
||||
|
||||
## پروژه
|
||||
|
||||
`clinicpro` (backend Symfony + پنل ادمین React). **کاملاً داخل همین پروژه است.** پنل نماینده همان پنل ادمین در `https://clinic-pro.ddev.site/admin` است (نقش `representation`، سورس در `assets/admin/`).
|
||||
|
||||
## زمینه
|
||||
|
||||
نماینده (`ROLE_REPRESENTATION`) در پنل ادمین React (`assets/admin/`) پزشک/کلینیک اضافه میکند و از کمیسیون آنها در کیفپول درآمد دارد. صفحهی تسویهی فعلی (`RepresentationSettlementPage.tsx`) فقط مبلغ میگیرد و درخواست میسازد؛ هیچ شبای مقصدی انتخاب نمیشود. هنگام واریز، ادمین نمیداند پول به کدام شبا برود. همچنین هیچ تأیید هویتی (کد ملی، مالکیت شبا) وجود ندارد.
|
||||
|
||||
هدف: نماینده ابتدا کد ملی خود را با **شاهکار** (تطبیق کد ملی ↔ موبایلِ خودش) تأیید کند، سپس **یک یا دو شبا** ثبت کند که با **IbanMatch** بررسی شود متعلق به همان کد ملی است؛ در تسویه انتخاب شبا الزامی شود و در پنل ادمین شبای مقصد دیده شود.
|
||||
|
||||
سرویس استعلام (s.api.ir):
|
||||
- شاهکار (کد ملی ↔ موبایل): `POST https://s.api.ir/api/sw1/ShahkarLite`
|
||||
- تطبیق شبا با کد ملی: `POST https://s.api.ir/api/sw1/IbanMatch`
|
||||
- مستندات: https://s.api.ir/scalar/v1 (زیر «لیست وبسرویسها»). نام دقیق فیلدهای request/response و نحوهی احراز (توکن) را از همین مستند بخوان.
|
||||
|
||||
## مشکل / هدف
|
||||
|
||||
1. **پروفایل نماینده** (صفحهی جدید در پنل): ورود و تأیید کد ملی با شاهکار. بعد از تأیید، پرچم «کد ملی تأییدشده» روی کاربر ست شود.
|
||||
2. **مدیریت شبا**: نماینده ۱ تا ۲ شبا اضافه/حذف کند؛ هر شبا با IbanMatch بررسی شود متعلق به کد ملیِ تأییدشدهی خودش است. فقط شبای تأییدشده قابل استفاده در تسویه.
|
||||
3. **تسویه**: در `POST /api/v1/settlement` انتخاب یکی از شباهای تأییدشده **الزامی**. snapshot شبا داخل خود رکورد تسویه ذخیره شود.
|
||||
4. **پنل ادمین**: در لیست و جزئیات تسویه، شبای مقصد (شماره شبا + بانک + صاحب حساب) نمایش داده شود.
|
||||
5. **دکمه «تکمیل»** در `SettlementDetailPage.tsx`: فقط وقتی رسید آپلود شده و وضعیت `approved` است فعال شود؛ با زدن آن وضعیت `paid` شود. **کسر مبلغ از کیفپول همان لحظهی ثبت درخواست انجام میشود (رفتار فعلی حفظ شود)**؛ «تکمیل» فقط نهاییسازی است و مبلغ را دوباره کسر نمیکند و درخواست دیگر قابل برداشت/بازگشت نیست.
|
||||
|
||||
## فایلهای مرتبط
|
||||
|
||||
| فایل | نقش |
|
||||
|------|-----|
|
||||
| `src/Shared/Service/ApiIrService.php` | **جدید** — کلاینت `s.api.ir` (ShahkarLite + IbanMatch) |
|
||||
| `src/Auth/Entity/User.php` | افزودن پرچم `nationalCodeVerified` |
|
||||
| `src/Representation/Entity/Representation.php` | تبدیل `bankAccount` تکی به آرایهی ۰..۲ شبای تأییدشده + متدهای کمکی |
|
||||
| `src/Representation/Controller/RepresentationActionController.php` | اکشنهای تأیید کد ملی + افزودن/حذف شبا |
|
||||
| `src/Settlement/Controller/SettlementController.php` | الزام `iban_id` در `request()` |
|
||||
| `src/Settlement/Entity/Settlement.php` | (موجود) `bankAccount` json — snapshot شبای انتخابی |
|
||||
| `src/Admin/Controller/AdminApiController.php` | افزودن `bank_iban/bank_name/bank_owner` به خروجی لیست/جزئیات تسویه |
|
||||
| `src/Shared/Constant/ErrorCodes.php` | کدهای خطای جدید (`ERR_EXTERNAL_001`، …) |
|
||||
| `assets/admin/pages/RepresentationProfilePage.tsx` | **جدید** — تأیید کد ملی + مدیریت شبا |
|
||||
| `assets/admin/pages/RepresentationSettlementPage.tsx` | انتخاب شبای تأییدشده در فرم درخواست |
|
||||
| `assets/admin/pages/SettlementDetailPage.tsx` | نمایش شبای مقصد + دکمه «تکمیل» مشروط به رسید |
|
||||
| `assets/admin/App.tsx` | route جدید `representation-profile` (نقش `representation`) |
|
||||
| `assets/admin/components/layout/Sidebar.tsx` | افزودن آیتم «پروفایل» به منوی نماینده |
|
||||
| `config/services.yaml` + `.env` | پایهی URL و توکن `s.api.ir` |
|
||||
| `migrations/` | migration پس از تغییر Entityها |
|
||||
| `docs/api/representation.md`, `docs/api/settlement.md` | بهروزرسانی مستندات |
|
||||
|
||||
## وضعیت فعلی
|
||||
|
||||
`Representation.bankAccount` تکی (json):
|
||||
|
||||
```php
|
||||
#[ORM\Column(name: 'bank_account', type: 'json', nullable: true)]
|
||||
private ?array $bankAccount = null; // {account_number, iban, bank_name, owner_name}
|
||||
```
|
||||
|
||||
`User` بدون پرچم تأیید:
|
||||
|
||||
```php
|
||||
#[ORM\Column(name: 'national_code', type: 'string', length: 10, nullable: true)]
|
||||
private ?string $nationalCode = null;
|
||||
public function setNationalCode(?string $code): self { $this->nationalCode = $code !== null && $code !== '' ? $code : null; $this->updatedAt = time(); return $this; }
|
||||
```
|
||||
|
||||
`SettlementController::request()` — bank_account اختیاری و آزاد، کسر فوری در همان لحظه:
|
||||
|
||||
```php
|
||||
$bankAccount = $data['bank_account'] ?? null;
|
||||
// ...
|
||||
$balance = $this->settlementRepo->getWalletBalance($user);
|
||||
if ($amountRials > $balance) { return $this->error(ErrorCodes::ERR_CONFLICT_001, 'موجودی کافی نیست', 422); }
|
||||
$settlement = new Settlement($user, $amountRials, $bankAccount);
|
||||
$this->settlementRepo->save($settlement);
|
||||
// Reserve amount by debit transaction (کسر فوری — حفظ شود)
|
||||
$tx = new WalletTransaction($user, $amountRials, WalletTransaction::TYPE_DEBIT, $balance - $amountRials);
|
||||
```
|
||||
|
||||
`SettlementController::markPaid()` — مبلغ از قبل کسر شده، فقط نهاییسازی:
|
||||
|
||||
```php
|
||||
// مبلغ هنگام ثبتِ درخواست از کیفپول کسر (reserve) شده؛ اینجا فقط نهاییسازی میشود.
|
||||
$settlement->markPaid($receipt);
|
||||
```
|
||||
|
||||
`RepresentationSettlementPage.tsx` — فرم فعلی فقط مبلغ میگیرد، بدون شبا:
|
||||
|
||||
```tsx
|
||||
const createMut = useMutation({
|
||||
mutationFn: (amountRials: number) =>
|
||||
api.post<ApiResponse<SettlementRow>>('/api/v1/settlement', { amount_rials: amountRials }),
|
||||
...
|
||||
});
|
||||
```
|
||||
|
||||
`SettlementDetailPage.tsx` interface از قبل فیلدهای شبا را دارد:
|
||||
|
||||
```tsx
|
||||
interface SettlementDetail {
|
||||
...
|
||||
bank_iban: string | null;
|
||||
bank_name: string | null;
|
||||
bank_owner: string | null;
|
||||
receipt: string | null;
|
||||
}
|
||||
```
|
||||
|
||||
منوی نماینده در `Sidebar.tsx` (بدون «پروفایل»):
|
||||
|
||||
```tsx
|
||||
if (primaryRole === "representation") {
|
||||
return [
|
||||
{ label: "عمومی", items: [{ to: "/admin/dashboard", icon: ChartBarIcon, label: "داشبورد" }] },
|
||||
{ label: "مدیریت", items: [{ to: "/admin/doctors", ... }, { to: "/admin/clinics", ... }] },
|
||||
{ label: "مالی", items: [
|
||||
{ to: "/admin/representation-finance", icon: CreditCardIcon, label: "گزارش مالی" },
|
||||
{ to: "/admin/representation-settlement", icon: BanknotesIcon, label: "تسویه حساب" },
|
||||
]},
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
## وظایف
|
||||
|
||||
### ۱. سرویس استعلام `ApiIrService`
|
||||
|
||||
`src/Shared/Service/ApiIrService.php`:
|
||||
|
||||
```php
|
||||
class ApiIrService
|
||||
{
|
||||
public function __construct(
|
||||
private readonly HttpClientInterface $http,
|
||||
private readonly string $apiIrBaseUrl, // %env(API_IR_BASE_URL)% → https://s.api.ir
|
||||
private readonly string $apiIrToken, // %env(API_IR_TOKEN)%
|
||||
) {}
|
||||
|
||||
/** تطبیق کد ملی با موبایل (شاهکار). true یعنی هر دو متعلق به یک نفر. */
|
||||
public function shahkarMatch(string $nationalCode, string $mobile): bool { /* POST /api/sw1/ShahkarLite */ }
|
||||
|
||||
/** تطبیق شبا با کد ملی. خروجی: ['matched'=>bool,'bank_name'=>?string,'owner_name'=>?string] */
|
||||
public function ibanMatch(string $iban, string $nationalCode): array { /* POST /api/sw1/IbanMatch */ }
|
||||
}
|
||||
```
|
||||
|
||||
- ساختار request/response و نام فیلدها از مستند `s.api.ir/scalar/v1`. توکن طبق مستند (هدر `Authorization`/`token`).
|
||||
- timeout کوتاه (~۱۰s). خطای شبکه/۵xx/توکن نامعتبر → `AppException(ErrorCodes::ERR_EXTERNAL_001, 'خطا در استعلام، بعداً تلاش کنید', 502)`.
|
||||
- در `config/services.yaml` آرگومانها bind شوند؛ مقادیر در `.env` و `.env.local`. توکن هرگز hardcode نشود.
|
||||
|
||||
### ۲. پرچم تأیید کد ملی روی User
|
||||
|
||||
```php
|
||||
#[ORM\Column(name: 'national_code_verified', type: 'boolean')]
|
||||
private bool $nationalCodeVerified = false;
|
||||
|
||||
public function isNationalCodeVerified(): bool { return $this->nationalCodeVerified; }
|
||||
public function setNationalCodeVerified(bool $v): self { $this->nationalCodeVerified = $v; $this->updatedAt = time(); return $this; }
|
||||
```
|
||||
|
||||
اگر `setNationalCode()` مقدار **متفاوتی** نسبت به قبل گرفت، پرچم دوباره `false` شود (تغییر کد ملی تأیید را باطل کند).
|
||||
|
||||
### ۳. آرایهی شباهای تأییدشده روی Representation
|
||||
|
||||
`bankAccount` آرایهای از ۰ تا ۲ آیتم:
|
||||
|
||||
```php
|
||||
// [{ id, iban, bank_name, owner_name, verified, created_at }]
|
||||
public function getIbans(): array { return $this->bankAccount ?? []; }
|
||||
public function addIban(array $iban): self { /* حداکثر ۲ */ }
|
||||
public function removeIban(string $id): self { }
|
||||
public function findVerifiedIban(string $id): ?array { /* آیتم با verified=true */ }
|
||||
```
|
||||
|
||||
- `toArray()` کلید `bank_account` همان آرایه باشد.
|
||||
- **مهاجرت داده:** اگر مقدار قدیمیِ تکی موجود بود، در migration به آرایهی تکعضوی `{id, iban, ..., verified:false}` تبدیل شود. در migration توضیح بده.
|
||||
|
||||
### ۴. اکشنهای نماینده در `RepresentationActionController`
|
||||
|
||||
سه route جدید (همگی زیر `#[IsGranted('ROLE_REPRESENTATION')]`، مالکیت از `#[CurrentUser]`):
|
||||
|
||||
- `POST /api/v1/representation/verify-national-code` — body `{ national_code }`. موبایل از `user.getMobileNumber()`. → `shahkarMatch`. اگر true: `setNationalCode()` + `setNationalCodeVerified(true)`. اگر false: `ERR_VALIDATION_001` «کد ملی متعلق به این شماره موبایل نیست».
|
||||
- `POST /api/v1/representation/iban` — body `{ iban }`. شرط: کد ملی باید تأیید شده باشد (وگرنه `ERR_CONFLICT_001` «ابتدا کد ملی را تأیید کنید»)؛ حداکثر ۲ شبا. → `ibanMatch(iban, user.nationalCode)`. اگر matched: `addIban([... 'verified'=>true, 'bank_name', 'owner_name'])`. اگر نه: «شبا متعلق به شما نیست».
|
||||
- `DELETE /api/v1/representation/iban/{id}` → `removeIban`.
|
||||
|
||||
همه با `$this->success(['data' => $rep->toArray()])`. شبا قبل از استعلام نرمالسازی شود (حذف فاصله، افزودن `IR`، طول ۲۶).
|
||||
|
||||
### ۵. الزام انتخاب شبا در تسویه
|
||||
|
||||
در `SettlementController::request()` (قبل از ساخت Settlement):
|
||||
|
||||
```php
|
||||
$ibanId = trim($data['iban_id'] ?? '');
|
||||
if ($ibanId === '') {
|
||||
return $this->error(ErrorCodes::ERR_VALIDATION_002, 'انتخاب شماره شبا الزامی است', 422, 'iban_id');
|
||||
}
|
||||
$rep = $this->representationRepo->findByUser($user);
|
||||
$iban = $rep?->findVerifiedIban($ibanId);
|
||||
if ($iban === null) {
|
||||
return $this->error(ErrorCodes::ERR_VALIDATION_001, 'شماره شبا نامعتبر یا تأییدنشده است', 422, 'iban_id');
|
||||
}
|
||||
$settlement = new Settlement($user, $amountRials, [
|
||||
'iban' => $iban['iban'], 'bank_name' => $iban['bank_name'], 'owner_name' => $iban['owner_name'],
|
||||
]);
|
||||
```
|
||||
|
||||
`RepresentationRepository` به constructor تزریق شود (در حال حاضر نیست). منطق کسر فوری (debit transaction) دستنخورده بماند.
|
||||
|
||||
### ۶. صفحهی پروفایل نماینده (پنل React)
|
||||
|
||||
`assets/admin/pages/RepresentationProfilePage.tsx` بساز:
|
||||
|
||||
- بخش «تأیید هویت»: نمایش کد ملی فعلی + وضعیت (تأییدشده/نشده). اگر تأییدنشده: input کد ملی + دکمه «تأیید» → `api.post('/api/v1/representation/verify-national-code', { national_code })`.
|
||||
- بخش «شمارههای شبا»: لیست شباها (شبا، بانک، صاحب، وضعیت) + دکمه حذف؛ اگر کمتر از ۲ و کد ملی تأییدشده: فرم افزودن شبا → `api.post('/api/v1/representation/iban', { iban })`.
|
||||
- داده از `GET /api/v1/representation/me`. الگوی استخراج single: `data?.data` (ممکن است double-nested → `(data as any)?.data?.data ?? data?.data`). با TanStack Query و `invalidateQueries` بعد از هر mutation.
|
||||
- route در `App.tsx`:
|
||||
|
||||
```tsx
|
||||
<Route path="representation-profile" element={<RoleRoute roles={['representation']}><RepresentationProfilePage /></RoleRoute>} />
|
||||
```
|
||||
|
||||
- آیتم منو در `Sidebar.tsx` بخش نماینده (مثلاً گروه «حساب» یا کنار مالی):
|
||||
|
||||
```tsx
|
||||
{ to: "/admin/representation-profile", icon: UserIcon, label: "پروفایل" },
|
||||
```
|
||||
|
||||
### ۷. انتخاب شبا در فرم تسویه
|
||||
|
||||
در `RepresentationSettlementPage.tsx`:
|
||||
- شباهای تأییدشده را از `GET /api/v1/representation/me` بگیر.
|
||||
- یک `<select>` (یا `SearchableSelect`) برای انتخاب شبا اضافه کن؛ اگر هیچ شبای تأییدشدهای نبود، فرم غیرفعال + پیام «ابتدا در پروفایل یک شبای تأییدشده اضافه کنید» با لینک به `representation-profile`.
|
||||
- `createMut` بدنهی `{ amount_rials, iban_id }` بفرستد. در ستون درخواستهای قبلی، شبای مقصد را هم نشان بده.
|
||||
|
||||
### ۸. پنل ادمین — نمایش شبا و دکمه «تکمیل»
|
||||
|
||||
- `AdminApiController`: خروجی لیست/جزئیات تسویه باید `bank_iban/bank_name/bank_owner` را از json `settlement.bank_account` بدهد (با DQL array hydration، استخراج json در PHP).
|
||||
- `SettlementDetailPage.tsx`:
|
||||
- ردیفهای «شماره شبا / بانک / صاحب حساب» از `bank_iban/bank_name/bank_owner`.
|
||||
- دکمه «تکمیل»: فقط وقتی `status === 'approved'` **و** `receipt` موجود باشد فعال؛ → `api.post('/api/v1/settlement/{uuid}/paid', { receipt })`؛ سپس `invalidateQueries` و نمایش وضعیت `paid`. اگر رسید نیست: disable + راهنما «ابتدا رسید را آپلود کنید».
|
||||
|
||||
### ۹. Migration و مستندات
|
||||
|
||||
- `ddev exec php bin/console doctrine:migrations:diff` پس از تغییر Entityها؛ بازبینی دستی برای نرمالسازی `bank_account` قدیمی و `national_code_verified` پیشفرض `false`.
|
||||
- `docs/api/representation.md`: سه endpoint جدید + ساختار آرایهای `bank_account`.
|
||||
- `docs/api/settlement.md`: فیلد `iban_id` در request و الزام آن.
|
||||
|
||||
## نکات مهم
|
||||
|
||||
- همه controllerها از `BaseController`؛ پاسخها `$this->success()/$this->error()/$this->paginated()`؛ خطاهای دامنه با `AppException` + `ErrorCodes`.
|
||||
- تاریخها Unix timestamp صحیح (نه DateTime).
|
||||
- پنل React: JWT از `localStorage['clinicpro-auth']`؛ single response → `data?.data` (مراقب double-nested)؛ لیستهای admin → `data?.data` + `data?.meta?.totalRecords`.
|
||||
- استعلام `s.api.ir` pay-per-call است → فقط هنگام تأیید/افزودن صدا زده شود، نه در هر خواندن پروفایل؛ نتیجه (`verified`) روی Entity ذخیره شود.
|
||||
- منطق کیفپول تغییر نمیکند: کسر در `request()` انجام میشود؛ `markPaid` فقط وضعیت را `paid` میکند (نه کسر مجدد). «تکمیل» = ثبت نهایی + جلوگیری از برداشت مجدد.
|
||||
- snapshot شبا داخل `Settlement.bank_account` بماند؛ حذف شبای نماینده نباید رکورد تسویهی قبلی را خراب کند.
|
||||
- edge: نماینده بدون کد ملی تأییدشده نتواند شبا اضافه کند؛ نماینده بدون شبای تأییدشده نتواند تسویه ثبت کند.
|
||||
+10
-11
@@ -38,13 +38,15 @@ REFRESH_TOKEN_TTL=2592000
|
||||
OTP_TTL=1200
|
||||
###< Auth ###
|
||||
|
||||
###> SMS ###
|
||||
KAVENEGAR_API_KEY=CHANGE_ME
|
||||
KAVENEGAR_SENDER=CHANGE_ME
|
||||
RANGINEH_API_KEY=CHANGE_ME
|
||||
RANGINEH_SENDER=CHANGE_ME
|
||||
SMS_PROVIDER=kavenegar
|
||||
###< SMS ###
|
||||
# SMS keys (kavenegar/rangineh) از پنل «تنظیمات سایت» (DB) خوانده میشوند، نه env.
|
||||
# env فقط fallback اختیاری است؛ نیازی به تعریف اینجا نیست.
|
||||
|
||||
###> api.ir Identity Inquiry (Shahkar + IbanMatch) ###
|
||||
# استعلام هویت نماینده: تطبیق کد ملی با موبایل (شاهکار) و تطبیق شبا با کد ملی.
|
||||
# توکن خالی = سرویس fail-closed (استعلام انجام نمیشود و تأیید رد میشود).
|
||||
API_IR_BASE_URL=https://s.api.ir
|
||||
API_IR_TOKEN=CHANGE_ME
|
||||
###< api.ir Identity Inquiry ###
|
||||
|
||||
###> File Upload ###
|
||||
MAX_FILE_SIZE_BYTES=5242880
|
||||
@@ -54,8 +56,5 @@ UPLOAD_DIR=var/uploads
|
||||
###> Payment ###
|
||||
ALLOWED_FRONTEND_HOSTS=your-domain.com
|
||||
APP_BASE_URL=https://your-domain.com
|
||||
MELLAT_TERMINAL_ID=CHANGE_ME
|
||||
MELLAT_USERNAME=CHANGE_ME
|
||||
MELLAT_PASSWORD=CHANGE_ME
|
||||
SEP_TERMINAL_ID=CHANGE_ME
|
||||
# کلیدهای درگاه (mellat/sep) از پنل «تنظیمات سایت» (DB) خوانده میشوند؛ env فقط fallback اختیاری است.
|
||||
###< Payment ###
|
||||
|
||||
@@ -32,6 +32,7 @@ import SettingsPage from './pages/SettingsPage';
|
||||
import FinancialReportPage from './pages/FinancialReportPage';
|
||||
import RepresentationSettlementPage from './pages/RepresentationSettlementPage';
|
||||
import RepresentationFinancePage from './pages/RepresentationFinancePage';
|
||||
import RepresentationProfilePage from './pages/RepresentationProfilePage';
|
||||
import DoctorProfilePage from './pages/DoctorProfilePage';
|
||||
import MyPatientsPage from './pages/MyPatientsPage';
|
||||
import NewSessionPage from './pages/NewSessionPage';
|
||||
@@ -172,6 +173,7 @@ export default function App() {
|
||||
{/* فقط ادمین — کلینیک از طریق دعوتنامه در صفحه کلینیک خود دکتر اضافه میکند */}
|
||||
<Route path="representation-settlement" element={<RoleRoute roles={['representation']}><RepresentationSettlementPage /></RoleRoute>} />
|
||||
<Route path="representation-finance" element={<RoleRoute roles={['representation']}><RepresentationFinancePage /></RoleRoute>} />
|
||||
<Route path="representation-profile" element={<RoleRoute roles={['representation']}><RepresentationProfilePage /></RoleRoute>} />
|
||||
<Route path="doctors" element={<RoleRoute roles={['admin', 'representation']}><DoctorsPage /></RoleRoute>} />
|
||||
<Route path="doctors/new" element={<RoleRoute roles={['admin', 'representation']}><DoctorFormPage /></RoleRoute>} />
|
||||
<Route path="doctors/:uuid" element={<RoleRoute roles={['admin', 'doctor', 'clinic', 'representation']}><DoctorDetailPage /></RoleRoute>} />
|
||||
|
||||
@@ -389,6 +389,12 @@ function buildSections(
|
||||
{ to: "/admin/representation-settlement", icon: BanknotesIcon, label: "تسویه حساب" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "حساب",
|
||||
items: [
|
||||
{ to: "/admin/representation-profile", icon: UserCircleIcon, label: "پروفایل" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
import React, { useState } from 'react';
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { toast } from 'sonner';
|
||||
import { CheckBadgeIcon, TrashIcon, PlusIcon } from '@heroicons/react/24/outline';
|
||||
import { api } from '../lib/api';
|
||||
import type { ApiResponse } from '../lib/api';
|
||||
|
||||
interface IbanItem {
|
||||
id: string;
|
||||
iban: string;
|
||||
bank_name: string | null;
|
||||
owner_name: string | null;
|
||||
verified: boolean;
|
||||
}
|
||||
|
||||
interface RepProfile {
|
||||
full_name: string;
|
||||
mobile_number: string | null;
|
||||
national_code: string | null;
|
||||
national_code_verified: boolean;
|
||||
bank_account: IbanItem[] | null;
|
||||
}
|
||||
|
||||
// پاسخ تکمنبعی ممکن است double-nested باشد
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const unwrap = (d: any): RepProfile | undefined => d?.data?.data ?? d?.data;
|
||||
|
||||
export default function RepresentationProfilePage() {
|
||||
const qc = useQueryClient();
|
||||
const [nationalCode, setNationalCode] = useState('');
|
||||
const [iban, setIban] = useState('');
|
||||
const [birthDate, setBirthDate] = useState('');
|
||||
|
||||
const meQ = useQuery({
|
||||
queryKey: ['representation-me'],
|
||||
queryFn: () => api.get<ApiResponse<RepProfile>>('/api/v1/representation/me'),
|
||||
staleTime: 30_000,
|
||||
});
|
||||
const profile = unwrap(meQ.data);
|
||||
const verified = profile?.national_code_verified ?? false;
|
||||
const ibans = profile?.bank_account ?? [];
|
||||
|
||||
const verifyMut = useMutation({
|
||||
mutationFn: (code: string) =>
|
||||
api.post<ApiResponse<RepProfile>>('/api/v1/representation/verify-national-code', { national_code: code }),
|
||||
onSuccess: () => {
|
||||
toast.success('کد ملی با موفقیت تأیید شد');
|
||||
setNationalCode('');
|
||||
qc.invalidateQueries({ queryKey: ['representation-me'] });
|
||||
},
|
||||
onError: (e: Error) => toast.error(e.message),
|
||||
});
|
||||
|
||||
const addIbanMut = useMutation({
|
||||
mutationFn: (v: string) =>
|
||||
api.post<ApiResponse<RepProfile>>('/api/v1/representation/iban', { iban: v }),
|
||||
onSuccess: () => {
|
||||
toast.success('شماره شبا تأیید و اضافه شد');
|
||||
setIban('');
|
||||
qc.invalidateQueries({ queryKey: ['representation-me'] });
|
||||
},
|
||||
onError: (e: Error) => toast.error(e.message),
|
||||
});
|
||||
|
||||
const removeIbanMut = useMutation({
|
||||
mutationFn: (id: string) =>
|
||||
api.delete<ApiResponse<RepProfile>>(`/api/v1/representation/iban/${id}`),
|
||||
onSuccess: () => {
|
||||
toast.success('شماره شبا حذف شد');
|
||||
qc.invalidateQueries({ queryKey: ['representation-me'] });
|
||||
},
|
||||
onError: (e: Error) => toast.error(e.message),
|
||||
});
|
||||
|
||||
const submitNationalCode = () => {
|
||||
const code = nationalCode.replace(/\D/g, '');
|
||||
if (code.length !== 10) { toast.error('کد ملی باید ۱۰ رقم باشد'); return; }
|
||||
verifyMut.mutate(code);
|
||||
};
|
||||
|
||||
const submitIban = () => {
|
||||
if (!iban.trim()) { toast.error('شماره شبا را وارد کنید'); return; }
|
||||
addIbanMut.mutate(iban.trim());
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="fade-in">
|
||||
<div className="card-title-row" style={{ marginBottom: 'var(--gap)' }}>
|
||||
<div>
|
||||
<h1 className="section-title">پروفایل نماینده</h1>
|
||||
<div className="muted" style={{ fontSize: 13, marginTop: 2 }}>تأیید هویت و مدیریت شمارههای شبا</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* تأیید کد ملی */}
|
||||
<div className="card card-pad">
|
||||
<div className="card-title-row" style={{ marginBottom: 12 }}>
|
||||
<h3 style={{ fontSize: 16 }}>تأیید هویت</h3>
|
||||
{verified && (
|
||||
<span className="badge green" style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
|
||||
<CheckBadgeIcon style={{ width: 15, height: 15 }} /> کد ملی تأیید شده
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{verified ? (
|
||||
<div className="muted" style={{ fontSize: 13.5 }}>
|
||||
کد ملی: <span dir="ltr" style={{ fontWeight: 600 }}>{profile?.national_code}</span>
|
||||
</div>
|
||||
) : (
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }}>
|
||||
<input
|
||||
type="text" inputMode="numeric" dir="ltr" maxLength={10} value={nationalCode}
|
||||
placeholder="کد ملی ۱۰ رقمی"
|
||||
onChange={(e) => setNationalCode(e.target.value.replace(/\D/g, ''))}
|
||||
style={{ width: 220, height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13.5, boxSizing: 'border-box', textAlign: 'center' }}
|
||||
/>
|
||||
<button className="btn primary" onClick={submitNationalCode} disabled={verifyMut.isPending}>
|
||||
{verifyMut.isPending ? 'در حال تأیید...' : 'تأیید کد ملی'}
|
||||
</button>
|
||||
<span className="muted" style={{ fontSize: 12 }}>با استعلام شاهکار بررسی میشود</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* شمارههای شبا */}
|
||||
<div className="card card-pad" style={{ marginTop: 'var(--gap)' }}>
|
||||
<div className="card-title-row" style={{ marginBottom: 12 }}>
|
||||
<h3 style={{ fontSize: 16 }}>شمارههای شبا</h3>
|
||||
<span className="muted" style={{ fontSize: 12 }}>{ibans.length} از ۲</span>
|
||||
</div>
|
||||
|
||||
<div style={{ overflowX: 'auto' }}>
|
||||
<table className="tbl" style={{ width: '100%' }}>
|
||||
<thead><tr><th>شماره شبا</th><th>بانک</th><th>صاحب حساب</th><th>وضعیت</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{ibans.length === 0 && (
|
||||
<tr><td colSpan={5} className="muted" style={{ textAlign: 'center', padding: 16 }}>هنوز شبایی ثبت نشده است</td></tr>
|
||||
)}
|
||||
{ibans.map((b) => (
|
||||
<tr key={b.id}>
|
||||
<td dir="ltr" style={{ textAlign: 'left', fontFamily: 'monospace' }}>{b.iban}</td>
|
||||
<td>{b.bank_name ?? '—'}</td>
|
||||
<td>{b.owner_name ?? '—'}</td>
|
||||
<td><span className={`badge ${b.verified ? 'green' : 'gray'}`}>{b.verified ? 'تأیید شده' : 'تأیید نشده'}</span></td>
|
||||
<td style={{ textAlign: 'center' }}>
|
||||
<button className="btn icon danger" title="حذف" onClick={() => removeIbanMut.mutate(b.id)} disabled={removeIbanMut.isPending}>
|
||||
<TrashIcon style={{ width: 16, height: 16 }} />
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{!verified && (
|
||||
<div className="muted" style={{ fontSize: 12.5, marginTop: 12 }}>
|
||||
برای افزودن شبا ابتدا باید کد ملی خود را تأیید کنید.
|
||||
</div>
|
||||
)}
|
||||
|
||||
{verified && ibans.length < 2 && (
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap', marginTop: 14 }}>
|
||||
<input
|
||||
type="text" dir="ltr" value={iban} placeholder="IR000000000000000000000000"
|
||||
onChange={(e) => setIban(e.target.value)}
|
||||
style={{ width: 320, height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13, boxSizing: 'border-box', fontFamily: 'monospace' }}
|
||||
/>
|
||||
<button className="btn primary" onClick={submitIban} disabled={addIbanMut.isPending} style={{ display: 'inline-flex', alignItems: 'center', gap: 4 }}>
|
||||
<PlusIcon style={{ width: 16, height: 16 }} />
|
||||
{addIbanMut.isPending ? 'در حال بررسی...' : 'افزودن شبا'}
|
||||
</button>
|
||||
<span className="muted" style={{ fontSize: 12 }}>مالکیت با استعلام بررسی میشود</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -22,9 +22,13 @@ const STATUS_CLASS: Record<string, string> = {
|
||||
pending: 'gray', approved: 'green', rejected: 'red', paid: 'green',
|
||||
};
|
||||
|
||||
interface IbanItem { id: string; iban: string; bank_name: string | null; verified: boolean }
|
||||
interface RepMe { bank_account: IbanItem[] | null }
|
||||
|
||||
export default function RepresentationSettlementPage() {
|
||||
const qc = useQueryClient();
|
||||
const [amount, setAmount] = useState('');
|
||||
const [ibanId, setIbanId] = useState('');
|
||||
|
||||
const balanceQ = useQuery({
|
||||
queryKey: ['wallet-balance'],
|
||||
@@ -34,6 +38,14 @@ export default function RepresentationSettlementPage() {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const balance: number = ((balanceQ.data?.data as any)?.data ?? balanceQ.data?.data)?.balance_rials ?? 0;
|
||||
|
||||
const meQ = useQuery({
|
||||
queryKey: ['representation-me'],
|
||||
queryFn: () => api.get<ApiResponse<RepMe>>('/api/v1/representation/me'),
|
||||
staleTime: 30_000,
|
||||
});
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const ibans: IbanItem[] = (((meQ.data?.data as any)?.data ?? meQ.data?.data)?.bank_account ?? []).filter((b: IbanItem) => b.verified);
|
||||
|
||||
const summaryQ = useQuery({
|
||||
queryKey: ['representation-summary'],
|
||||
queryFn: () => api.get<ApiResponse<RepSummary>>('/api/v1/representation/dashboard/summary'),
|
||||
@@ -51,8 +63,8 @@ export default function RepresentationSettlementPage() {
|
||||
const settlements: SettlementRow[] = (listQ.data?.data as any)?.data ?? listQ.data?.data ?? [];
|
||||
|
||||
const createMut = useMutation({
|
||||
mutationFn: (amountRials: number) =>
|
||||
api.post<ApiResponse<SettlementRow>>('/api/v1/settlement', { amount_rials: amountRials }),
|
||||
mutationFn: (payload: { amount_rials: number; iban_id: string }) =>
|
||||
api.post<ApiResponse<SettlementRow>>('/api/v1/settlement', payload),
|
||||
onSuccess: () => {
|
||||
toast.success('درخواست تسویه ثبت شد');
|
||||
setAmount('');
|
||||
@@ -67,7 +79,8 @@ export default function RepresentationSettlementPage() {
|
||||
const n = Number(amount);
|
||||
if (!n || n <= 0) { toast.error('مبلغ نامعتبر است'); return; }
|
||||
if (n > balance) { toast.error('مبلغ بیشتر از موجودی قابل برداشت است'); return; }
|
||||
createMut.mutate(n);
|
||||
if (!ibanId) { toast.error('انتخاب شماره شبا الزامی است'); return; }
|
||||
createMut.mutate({ amount_rials: n, iban_id: ibanId });
|
||||
};
|
||||
|
||||
const cards = [
|
||||
@@ -98,17 +111,34 @@ export default function RepresentationSettlementPage() {
|
||||
<div className="card-title-row" style={{ marginBottom: 12 }}>
|
||||
<h3 style={{ fontSize: 16 }}>ثبت درخواست جدید</h3>
|
||||
</div>
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }}>
|
||||
<input
|
||||
type="number" min={0} dir="ltr" value={amount} placeholder="مبلغ به ریال"
|
||||
onChange={(e) => setAmount(e.target.value)}
|
||||
style={{ width: 240, height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13.5, boxSizing: 'border-box' }}
|
||||
/>
|
||||
<button className="btn primary" onClick={submit} disabled={createMut.isPending}>
|
||||
{createMut.isPending ? 'در حال ثبت...' : 'ثبت درخواست'}
|
||||
</button>
|
||||
<span className="muted" style={{ fontSize: 12 }}>حداکثر: {formatRial(balance)}</span>
|
||||
</div>
|
||||
{ibans.length === 0 ? (
|
||||
<div className="muted" style={{ fontSize: 13 }}>
|
||||
برای ثبت درخواست تسویه، ابتدا در{' '}
|
||||
<a href="/admin/representation-profile" style={{ color: 'var(--primary)', fontWeight: 600 }}>پروفایل</a>{' '}
|
||||
یک شماره شبای تأییدشده اضافه کنید.
|
||||
</div>
|
||||
) : (
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }}>
|
||||
<input
|
||||
type="number" min={0} dir="ltr" value={amount} placeholder="مبلغ به ریال"
|
||||
onChange={(e) => setAmount(e.target.value)}
|
||||
style={{ width: 200, height: 38, padding: '0 12px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 13.5, boxSizing: 'border-box' }}
|
||||
/>
|
||||
<select
|
||||
value={ibanId} onChange={(e) => setIbanId(e.target.value)} dir="ltr"
|
||||
style={{ width: 320, height: 38, padding: '0 10px', borderRadius: 'var(--r-sm)', border: '1px solid var(--border)', background: 'var(--surface)', color: 'var(--text)', fontSize: 12.5, boxSizing: 'border-box' }}
|
||||
>
|
||||
<option value="">انتخاب شماره شبا...</option>
|
||||
{ibans.map((b) => (
|
||||
<option key={b.id} value={b.id}>{b.iban}{b.bank_name ? ` — ${b.bank_name}` : ''}</option>
|
||||
))}
|
||||
</select>
|
||||
<button className="btn primary" onClick={submit} disabled={createMut.isPending}>
|
||||
{createMut.isPending ? 'در حال ثبت...' : 'ثبت درخواست'}
|
||||
</button>
|
||||
<span className="muted" style={{ fontSize: 12 }}>حداکثر: {formatRial(balance)}</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="card card-pad" style={{ marginTop: 'var(--gap)' }}>
|
||||
|
||||
@@ -78,7 +78,7 @@ export default function SettlementDetailPage() {
|
||||
onError: (e: Error) => toast.error(e.message),
|
||||
});
|
||||
|
||||
// آپلود رسید → سپس ثبت پرداخت نهایی (paid). مبلغ قبلاً هنگام درخواست از کیفپول کسر شده.
|
||||
// آپلود رسید (بدون نهاییسازی). نهاییسازی با دکمهی جداگانهی «تکمیل» انجام میشود.
|
||||
const handleReceiptUpload = async (file: File) => {
|
||||
setPaying(true);
|
||||
try {
|
||||
@@ -94,15 +94,26 @@ export default function SettlementDetailPage() {
|
||||
const json = await res.json();
|
||||
const url = json?.data?.url;
|
||||
if (!url) throw new Error('آپلود رسید ناموفق بود');
|
||||
await api.post<ApiResponse<null>>(`/api/v1/settlement/${uuid}/paid`, { receipt: url });
|
||||
toast.success('پرداخت ثبت شد');
|
||||
// رسید را در همان رکورد ذخیره میکنیم تا دکمهی «تکمیل» فعال شود (وضعیت همچنان approved).
|
||||
await api.post<ApiResponse<null>>(`/api/v1/settlement/${uuid}/receipt`, { receipt: url });
|
||||
toast.success('رسید آپلود شد');
|
||||
qc.invalidateQueries({ queryKey: ['settlement-detail', uuid] });
|
||||
qc.invalidateQueries({ queryKey: ['settlements'] });
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} catch (e: any) { toast.error(e?.message ?? 'خطا در ثبت پرداخت'); }
|
||||
} catch (e: any) { toast.error(e?.message ?? 'خطا در آپلود رسید'); }
|
||||
finally { setPaying(false); }
|
||||
};
|
||||
|
||||
// تکمیل: نهاییسازی پرداخت (وضعیت → paid). مبلغ قبلاً هنگام درخواست از کیفپول کسر شده.
|
||||
const completeMut = useMutation({
|
||||
mutationFn: () => api.post<ApiResponse<null>>(`/api/v1/settlement/${uuid}/paid`, { receipt: s?.receipt }),
|
||||
onSuccess: () => {
|
||||
toast.success('تسویه تکمیل شد');
|
||||
qc.invalidateQueries({ queryKey: ['settlement-detail', uuid] });
|
||||
qc.invalidateQueries({ queryKey: ['settlements'] });
|
||||
},
|
||||
onError: (e: Error) => toast.error(e.message),
|
||||
});
|
||||
|
||||
if (isLoading) {
|
||||
return (
|
||||
<div className="fade-in">
|
||||
@@ -186,16 +197,27 @@ export default function SettlementDetailPage() {
|
||||
)}
|
||||
|
||||
{s.status === 'approved' && (
|
||||
<div style={{ marginTop: 14 }}>
|
||||
<div style={{ marginTop: 14, display: 'flex', alignItems: 'center', gap: 10, flexWrap: 'wrap' }}>
|
||||
<input ref={receiptInputRef} type="file" accept="image/*" style={{ display: 'none' }}
|
||||
onChange={e => e.target.files?.[0] && handleReceiptUpload(e.target.files[0])} />
|
||||
<button className="btn primary sm" disabled={paying}
|
||||
<button className="btn ghost sm" disabled={paying}
|
||||
onClick={() => receiptInputRef.current?.click()}>
|
||||
<ArrowUpTrayIcon style={{ width: 15, height: 15 }} />
|
||||
{paying ? 'در حال ثبت...' : 'آپلود رسید و ثبت پرداخت'}
|
||||
{paying ? 'در حال آپلود...' : (s.receipt ? 'تغییر رسید' : 'آپلود رسید')}
|
||||
</button>
|
||||
<p className="muted" style={{ fontSize: 12, marginTop: 8 }}>
|
||||
با آپلود رسید، وضعیت به «پرداخت شده» تغییر میکند. مبلغ هنگام ثبت درخواست از کیفپول کسر شده است.
|
||||
|
||||
{/* دکمهی تکمیل فقط بعد از آپلود رسید فعال میشود */}
|
||||
<button className="btn primary sm" disabled={!s.receipt || completeMut.isPending}
|
||||
onClick={() => completeMut.mutate()}
|
||||
title={!s.receipt ? 'ابتدا رسید را آپلود کنید' : undefined}>
|
||||
<CheckIcon style={{ width: 15, height: 15 }} />
|
||||
{completeMut.isPending ? 'در حال تکمیل...' : 'تکمیل'}
|
||||
</button>
|
||||
|
||||
<p className="muted" style={{ fontSize: 12, width: '100%' }}>
|
||||
{s.receipt
|
||||
? 'با زدن «تکمیل»، وضعیت به «پرداخت شده» تغییر میکند. مبلغ هنگام ثبت درخواست از کیفپول کسر شده است.'
|
||||
: 'ابتدا رسید پرداخت را آپلود کنید، سپس دکمهی «تکمیل» فعال میشود.'}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
|
||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||
parameters: {}
|
||||
parameters:
|
||||
default_api_ir_base_url: 'https://s.api.ir'
|
||||
|
||||
services:
|
||||
# default configuration for services in *this* file
|
||||
@@ -35,6 +36,11 @@ services:
|
||||
arguments:
|
||||
$projectDir: '%kernel.project_dir%'
|
||||
|
||||
App\Shared\Service\ApiIrService:
|
||||
arguments:
|
||||
$baseUrl: '%env(default:default_api_ir_base_url:API_IR_BASE_URL)%'
|
||||
$token: '%env(default::API_IR_TOKEN)%'
|
||||
|
||||
App\Auth\Service\OtpService:
|
||||
arguments:
|
||||
$otpTtl: '%env(int:OTP_TTL)%'
|
||||
|
||||
@@ -250,14 +250,18 @@ Get yearly earnings dashboard for a representation.
|
||||
"mobile_number": "09120671756",
|
||||
"city_id": 132,
|
||||
"commission_percent": "10.00",
|
||||
"bank_account": null,
|
||||
"bank_account": [
|
||||
{ "id": "iban-uuid-1", "iban": "IR000000000000000000000000", "bank_name": "بانک ملت", "owner_name": "حامد حسینی", "verified": true, "created_at": 1718000000 }
|
||||
],
|
||||
"active": true,
|
||||
"created_at": 1718000000
|
||||
"created_at": 1718000000,
|
||||
"national_code": "0012345678",
|
||||
"national_code_verified": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
> double-nested: مقدار با `data.data` استخراج میشود.
|
||||
> double-nested: مقدار با `data.data` استخراج میشود. `bank_account` آرایهای از ۰ تا ۲ شبا است (`null` اگر هیچ شبایی ثبت نشده). `national_code`/`national_code_verified` از کاربرِ نماینده میآید.
|
||||
|
||||
#### Errors
|
||||
| Code | HTTP | Description |
|
||||
@@ -266,6 +270,67 @@ Get yearly earnings dashboard for a representation.
|
||||
|
||||
---
|
||||
|
||||
### POST `/api/v1/representation/verify-national-code`
|
||||
|
||||
تأیید کد ملی نماینده با استعلام **شاهکار** (`s.api.ir` → ShahkarLite): تطبیق کد ملی با موبایلِ کاربر جاری. در صورت موفقیت، `national_code` ذخیره و `national_code_verified=true` میشود.
|
||||
|
||||
#### Request Body
|
||||
```json
|
||||
{ "national_code": "0012345678" }
|
||||
```
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `national_code` | string | ✅ | کد ملی ۱۰ رقمی |
|
||||
|
||||
#### Response `200`
|
||||
آبجکت پروفایل نماینده (مثل `me`، با `national_code_verified: true`).
|
||||
|
||||
#### Errors
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_VALIDATION_001` | 422 | کد ملی ۱۰ رقم نیست (`field: national_code`) |
|
||||
| `ERR_IDENTITY_001` | 422 | کد ملی متعلق به این موبایل نیست (`field: national_code`) |
|
||||
| `ERR_EXTERNAL_001` | 502 | خطا در استعلام |
|
||||
| `ERR_EXTERNAL_002` | 503 | سرویس استعلام پیکربندی نشده |
|
||||
|
||||
---
|
||||
|
||||
### POST `/api/v1/representation/iban`
|
||||
|
||||
افزودن یک شماره شبا. ابتدا با **IbanMatch** (`s.api.ir`) بررسی میشود شبا متعلق به کد ملیِ تأییدشدهی نماینده باشد. حداکثر ۲ شبا.
|
||||
|
||||
#### Request Body
|
||||
```json
|
||||
{ "iban": "IR000000000000000000000000" }
|
||||
```
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `iban` | string | ✅ | شماره شبا (با/بدون `IR` و فاصله؛ نرمالسازی میشود) |
|
||||
|
||||
#### Response `200`
|
||||
آبجکت پروفایل نماینده با `bank_account` بهروزشده.
|
||||
|
||||
#### Errors
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_IDENTITY_004` | 409 | کد ملی هنوز تأیید نشده |
|
||||
| `ERR_IDENTITY_003` | 409 | سقف ۲ شبا پر است |
|
||||
| `ERR_VALIDATION_001` | 422 | شبا نامعتبر (`field: iban`) |
|
||||
| `ERR_IDENTITY_002` | 422 | شبا متعلق به نماینده نیست (`field: iban`) |
|
||||
| `ERR_EXTERNAL_001` | 502 | خطا در استعلام |
|
||||
| `ERR_EXTERNAL_002` | 503 | سرویس استعلام پیکربندی نشده |
|
||||
|
||||
---
|
||||
|
||||
### DELETE `/api/v1/representation/iban/{id}`
|
||||
|
||||
حذف یک شماره شبا با `id` آن (از `bank_account[].id`).
|
||||
|
||||
#### Response `200`
|
||||
آبجکت پروفایل نماینده با `bank_account` بهروزشده.
|
||||
|
||||
---
|
||||
|
||||
### POST `/api/v1/representation/doctor`
|
||||
|
||||
افزودن پزشک توسط نماینده. `representation_id` پزشک بهصورت خودکار روی نمایندهی کاربر جاری ست میشود. پس از ثبت موفق، یک پیامک خوشآمد (تگ `welcome`) بهصورت async به موبایل پزشک ارسال میشود.
|
||||
|
||||
+29
-13
@@ -91,23 +91,16 @@ Request a settlement (withdrawal from wallet to bank account).
|
||||
```json
|
||||
{
|
||||
"amount_rials": 1000000,
|
||||
"bank_account": {
|
||||
"iban": "IR...",
|
||||
"account_number": "1234567890",
|
||||
"bank_name": "بانک ملت",
|
||||
"owner_name": "علی احمدی"
|
||||
}
|
||||
"iban_id": "iban-uuid-..."
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `amount_rials` | integer | ✅ | Amount to withdraw (must be ≤ wallet balance) |
|
||||
| `bank_account` | object | ❌ | Bank account details (saved if not previously set) |
|
||||
| `bank_account.iban` | string | ❌ | IBAN (شبا) |
|
||||
| `bank_account.account_number` | string | ❌ | Account number |
|
||||
| `bank_account.bank_name` | string | ❌ | Bank name |
|
||||
| `bank_account.owner_name` | string | ❌ | Account owner name |
|
||||
| `iban_id` | string | ✅ | شناسهی یکی از شباهای **تأییدشدهی** نماینده (از `GET /api/v1/representation/me` → `bank_account[].id`) |
|
||||
|
||||
> شبای انتخابی بهصورت snapshot (`iban`, `bank_name`, `owner_name`) داخل خود رکورد تسویه ذخیره میشود؛ حذف بعدی شبا در پروفایل، این رکورد را تغییر نمیدهد. مبلغ همان لحظهی ثبت از کیفپول کسر (debit) میشود.
|
||||
|
||||
### Response `201`
|
||||
```json
|
||||
@@ -131,7 +124,9 @@ Request a settlement (withdrawal from wallet to bank account).
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_AUTH_001` | 401 | Missing token |
|
||||
| `ERR_VALIDATION_001` | 422 | Amount exceeds balance or invalid amount |
|
||||
| `ERR_VALIDATION_001` | 422 | مبلغ نامعتبر/بیش از موجودی، یا شبا تأییدنشده/نامعتبر (`field: iban_id`) |
|
||||
| `ERR_VALIDATION_002` | 422 | `iban_id` ارسال نشده (`field: iban_id`) |
|
||||
| `ERR_CONFLICT_001` | 422 | موجودی کافی نیست |
|
||||
|
||||
---
|
||||
|
||||
@@ -274,9 +269,30 @@ Updated settlement object with `status: "rejected"`.
|
||||
{ "success": true, "data": { "uuid": "...", "url": "/uploads/settlements/receipts/2026-06/...", "filename": "...", "filemime": "image/jpeg" } }
|
||||
```
|
||||
|
||||
### POST `/api/v1/settlement/{uuid}/receipt`
|
||||
|
||||
ذخیرهی رسید پرداخت **بدون** نهاییسازی. فقط روی تسویهی **approved**؛ وضعیت تغییر نمیکند (همچنان `approved`). پس از این مرحله دکمهی «تکمیل» در پنل فعال میشود. **Permission:** `ROLE_ADMIN`
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{ "receipt": "/uploads/settlements/receipts/2026-06/..." }
|
||||
```
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `receipt` | string | ✅ | URL رسیدِ آپلودشده |
|
||||
|
||||
**Response `200`:** آبجکت تسویه (با `receipt` ذخیرهشده، `status: "approved"`).
|
||||
|
||||
**Errors:**
|
||||
| Code | HTTP | Description |
|
||||
|------|------|-------------|
|
||||
| `ERR_NOT_FOUND_001` | 404 | درخواست یافت نشد |
|
||||
| `ERR_VALIDATION_001` | 422 | تسویه approved نیست |
|
||||
| `ERR_VALIDATION_002` | 422 | `receipt` خالی (`field: receipt`) |
|
||||
|
||||
### POST `/api/v1/settlement/{uuid}/paid`
|
||||
|
||||
ثبت پرداخت نهایی با رسید. فقط روی تسویهی **approved**. وضعیت → `paid` و `receipt` ذخیره میشود. کیفپول تغییر نمیکند. **Permission:** `ROLE_ADMIN`
|
||||
**«تکمیل»** — ثبت پرداخت نهایی. فقط روی تسویهی **approved**. وضعیت → `paid` و `receipt` ذخیره میشود. کیفپول تغییر نمیکند (مبلغ هنگام ثبت درخواست کسر شده). پس از تکمیل، آن مبلغ دیگر قابل درخواست تسویه نیست. **Permission:** `ROLE_ADMIN`
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
|
||||
@@ -0,0 +1,633 @@
|
||||
{
|
||||
"0": "Community 0",
|
||||
"1": "Community 1",
|
||||
"2": "Community 2",
|
||||
"3": "Community 3",
|
||||
"4": "Community 4",
|
||||
"5": "Community 5",
|
||||
"6": "Community 6",
|
||||
"7": "Community 7",
|
||||
"8": "Community 8",
|
||||
"9": "Community 9",
|
||||
"10": "Community 10",
|
||||
"11": "Community 11",
|
||||
"12": "Community 12",
|
||||
"13": "Community 13",
|
||||
"14": "Community 14",
|
||||
"15": "Community 15",
|
||||
"16": "Community 16",
|
||||
"17": "Community 17",
|
||||
"18": "Community 18",
|
||||
"19": "Community 19",
|
||||
"20": "Community 20",
|
||||
"21": "Community 21",
|
||||
"22": "Community 22",
|
||||
"23": "Community 23",
|
||||
"24": "Community 24",
|
||||
"25": "Community 25",
|
||||
"26": "Community 26",
|
||||
"27": "Community 27",
|
||||
"28": "Community 28",
|
||||
"29": "Community 29",
|
||||
"30": "Community 30",
|
||||
"31": "Community 31",
|
||||
"32": "Community 32",
|
||||
"33": "Community 33",
|
||||
"34": "Community 34",
|
||||
"35": "Community 35",
|
||||
"36": "Community 36",
|
||||
"37": "Community 37",
|
||||
"38": "Community 38",
|
||||
"39": "Community 39",
|
||||
"40": "Community 40",
|
||||
"41": "Community 41",
|
||||
"42": "Community 42",
|
||||
"43": "Community 43",
|
||||
"44": "Community 44",
|
||||
"45": "Community 45",
|
||||
"46": "Community 46",
|
||||
"47": "Community 47",
|
||||
"48": "Community 48",
|
||||
"49": "Community 49",
|
||||
"50": "Community 50",
|
||||
"51": "Community 51",
|
||||
"52": "Community 52",
|
||||
"53": "Community 53",
|
||||
"54": "Community 54",
|
||||
"55": "Community 55",
|
||||
"56": "Community 56",
|
||||
"57": "Community 57",
|
||||
"58": "Community 58",
|
||||
"59": "Community 59",
|
||||
"60": "Community 60",
|
||||
"61": "Community 61",
|
||||
"62": "Community 62",
|
||||
"63": "Community 63",
|
||||
"64": "Community 64",
|
||||
"65": "Community 65",
|
||||
"66": "Community 66",
|
||||
"67": "Community 67",
|
||||
"68": "Community 68",
|
||||
"69": "Community 69",
|
||||
"70": "Community 70",
|
||||
"71": "Community 71",
|
||||
"72": "Community 72",
|
||||
"73": "Community 73",
|
||||
"74": "Community 74",
|
||||
"75": "Community 75",
|
||||
"76": "Community 76",
|
||||
"77": "Community 77",
|
||||
"78": "Community 78",
|
||||
"79": "Community 79",
|
||||
"80": "Community 80",
|
||||
"81": "Community 81",
|
||||
"82": "Community 82",
|
||||
"83": "Community 83",
|
||||
"84": "Community 84",
|
||||
"85": "Community 85",
|
||||
"86": "Community 86",
|
||||
"87": "Community 87",
|
||||
"88": "Community 88",
|
||||
"89": "Community 89",
|
||||
"90": "Community 90",
|
||||
"91": "Community 91",
|
||||
"92": "Community 92",
|
||||
"93": "Community 93",
|
||||
"94": "Community 94",
|
||||
"95": "Community 95",
|
||||
"96": "Community 96",
|
||||
"97": "Community 97",
|
||||
"98": "Community 98",
|
||||
"99": "Community 99",
|
||||
"100": "Community 100",
|
||||
"101": "Community 101",
|
||||
"102": "Community 102",
|
||||
"103": "Community 103",
|
||||
"104": "Community 104",
|
||||
"105": "Community 105",
|
||||
"106": "Community 106",
|
||||
"107": "Community 107",
|
||||
"108": "Community 108",
|
||||
"109": "Community 109",
|
||||
"110": "Community 110",
|
||||
"111": "Community 111",
|
||||
"112": "Community 112",
|
||||
"113": "Community 113",
|
||||
"114": "Community 114",
|
||||
"115": "Community 115",
|
||||
"116": "Community 116",
|
||||
"117": "Community 117",
|
||||
"118": "Community 118",
|
||||
"119": "Community 119",
|
||||
"120": "Community 120",
|
||||
"121": "Community 121",
|
||||
"122": "Community 122",
|
||||
"123": "Community 123",
|
||||
"124": "Community 124",
|
||||
"125": "Community 125",
|
||||
"126": "Community 126",
|
||||
"127": "Community 127",
|
||||
"128": "Community 128",
|
||||
"129": "Community 129",
|
||||
"130": "Community 130",
|
||||
"131": "Community 131",
|
||||
"132": "Community 132",
|
||||
"133": "Community 133",
|
||||
"134": "Community 134",
|
||||
"135": "Community 135",
|
||||
"136": "Community 136",
|
||||
"137": "Community 137",
|
||||
"138": "Community 138",
|
||||
"139": "Community 139",
|
||||
"140": "Community 140",
|
||||
"141": "Community 141",
|
||||
"142": "Community 142",
|
||||
"143": "Community 143",
|
||||
"144": "Community 144",
|
||||
"145": "Community 145",
|
||||
"146": "Community 146",
|
||||
"147": "Community 147",
|
||||
"148": "Community 148",
|
||||
"149": "Community 149",
|
||||
"150": "Community 150",
|
||||
"151": "Community 151",
|
||||
"152": "Community 152",
|
||||
"153": "Community 153",
|
||||
"154": "Community 154",
|
||||
"155": "Community 155",
|
||||
"156": "Community 156",
|
||||
"157": "Community 157",
|
||||
"158": "Community 158",
|
||||
"159": "Community 159",
|
||||
"160": "Community 160",
|
||||
"161": "Community 161",
|
||||
"162": "Community 162",
|
||||
"163": "Community 163",
|
||||
"164": "Community 164",
|
||||
"165": "Community 165",
|
||||
"166": "Community 166",
|
||||
"167": "Community 167",
|
||||
"168": "Community 168",
|
||||
"169": "Community 169",
|
||||
"170": "Community 170",
|
||||
"171": "Community 171",
|
||||
"172": "Community 172",
|
||||
"173": "Community 173",
|
||||
"174": "Community 174",
|
||||
"175": "Community 175",
|
||||
"176": "Community 176",
|
||||
"177": "Community 177",
|
||||
"178": "Community 178",
|
||||
"179": "Community 179",
|
||||
"180": "Community 180",
|
||||
"181": "Community 181",
|
||||
"182": "Community 182",
|
||||
"183": "Community 183",
|
||||
"184": "Community 184",
|
||||
"185": "Community 185",
|
||||
"186": "Community 186",
|
||||
"187": "Community 187",
|
||||
"188": "Community 188",
|
||||
"189": "Community 189",
|
||||
"190": "Community 190",
|
||||
"191": "Community 191",
|
||||
"192": "Community 192",
|
||||
"193": "Community 193",
|
||||
"194": "Community 194",
|
||||
"195": "Community 195",
|
||||
"196": "Community 196",
|
||||
"197": "Community 197",
|
||||
"198": "Community 198",
|
||||
"199": "Community 199",
|
||||
"200": "Community 200",
|
||||
"201": "Community 201",
|
||||
"202": "Community 202",
|
||||
"203": "Community 203",
|
||||
"204": "Community 204",
|
||||
"205": "Community 205",
|
||||
"206": "Community 206",
|
||||
"207": "Community 207",
|
||||
"208": "Community 208",
|
||||
"209": "Community 209",
|
||||
"210": "Community 210",
|
||||
"211": "Community 211",
|
||||
"212": "Community 212",
|
||||
"213": "Community 213",
|
||||
"214": "Community 214",
|
||||
"215": "Community 215",
|
||||
"216": "Community 216",
|
||||
"217": "Community 217",
|
||||
"218": "Community 218",
|
||||
"219": "Community 219",
|
||||
"220": "Community 220",
|
||||
"221": "Community 221",
|
||||
"222": "Community 222",
|
||||
"223": "Community 223",
|
||||
"224": "Community 224",
|
||||
"225": "Community 225",
|
||||
"226": "Community 226",
|
||||
"227": "Community 227",
|
||||
"228": "Community 228",
|
||||
"229": "Community 229",
|
||||
"230": "Community 230",
|
||||
"231": "Community 231",
|
||||
"232": "Community 232",
|
||||
"233": "Community 233",
|
||||
"234": "Community 234",
|
||||
"235": "Community 235",
|
||||
"236": "Community 236",
|
||||
"237": "Community 237",
|
||||
"238": "Community 238",
|
||||
"239": "Community 239",
|
||||
"240": "Community 240",
|
||||
"241": "Community 241",
|
||||
"242": "Community 242",
|
||||
"243": "Community 243",
|
||||
"244": "Community 244",
|
||||
"245": "Community 245",
|
||||
"246": "Community 246",
|
||||
"247": "Community 247",
|
||||
"248": "Community 248",
|
||||
"249": "Community 249",
|
||||
"250": "Community 250",
|
||||
"251": "Community 251",
|
||||
"252": "Community 252",
|
||||
"253": "Community 253",
|
||||
"254": "Community 254",
|
||||
"255": "Community 255",
|
||||
"256": "Community 256",
|
||||
"257": "Community 257",
|
||||
"258": "Community 258",
|
||||
"259": "Community 259",
|
||||
"260": "Community 260",
|
||||
"261": "Community 261",
|
||||
"262": "Community 262",
|
||||
"263": "Community 263",
|
||||
"264": "Community 264",
|
||||
"265": "Community 265",
|
||||
"266": "Community 266",
|
||||
"267": "Community 267",
|
||||
"268": "Community 268",
|
||||
"269": "Community 269",
|
||||
"270": "Community 270",
|
||||
"271": "Community 271",
|
||||
"272": "Community 272",
|
||||
"273": "Community 273",
|
||||
"274": "Community 274",
|
||||
"275": "Community 275",
|
||||
"276": "Community 276",
|
||||
"277": "Community 277",
|
||||
"278": "Community 278",
|
||||
"279": "Community 279",
|
||||
"280": "Community 280",
|
||||
"281": "Community 281",
|
||||
"282": "Community 282",
|
||||
"283": "Community 283",
|
||||
"284": "Community 284",
|
||||
"285": "Community 285",
|
||||
"286": "Community 286",
|
||||
"287": "Community 287",
|
||||
"288": "Community 288",
|
||||
"289": "Community 289",
|
||||
"290": "Community 290",
|
||||
"291": "Community 291",
|
||||
"292": "Community 292",
|
||||
"293": "Community 293",
|
||||
"294": "Community 294",
|
||||
"295": "Community 295",
|
||||
"296": "Community 296",
|
||||
"297": "Community 297",
|
||||
"298": "Community 298",
|
||||
"299": "Community 299",
|
||||
"300": "Community 300",
|
||||
"301": "Community 301",
|
||||
"302": "Community 302",
|
||||
"303": "Community 303",
|
||||
"304": "Community 304",
|
||||
"305": "Community 305",
|
||||
"306": "Community 306",
|
||||
"307": "Community 307",
|
||||
"308": "Community 308",
|
||||
"309": "Community 309",
|
||||
"310": "Community 310",
|
||||
"311": "Community 311",
|
||||
"312": "Community 312",
|
||||
"313": "Community 313",
|
||||
"314": "Community 314",
|
||||
"315": "Community 315",
|
||||
"316": "Community 316",
|
||||
"317": "Community 317",
|
||||
"318": "Community 318",
|
||||
"319": "Community 319",
|
||||
"320": "Community 320",
|
||||
"321": "Community 321",
|
||||
"322": "Community 322",
|
||||
"323": "Community 323",
|
||||
"324": "Community 324",
|
||||
"325": "Community 325",
|
||||
"326": "Community 326",
|
||||
"327": "Community 327",
|
||||
"328": "Community 328",
|
||||
"329": "Community 329",
|
||||
"330": "Community 330",
|
||||
"331": "Community 331",
|
||||
"332": "Community 332",
|
||||
"333": "Community 333",
|
||||
"334": "Community 334",
|
||||
"335": "Community 335",
|
||||
"336": "Community 336",
|
||||
"337": "Community 337",
|
||||
"338": "Community 338",
|
||||
"339": "Community 339",
|
||||
"340": "Community 340",
|
||||
"341": "Community 341",
|
||||
"342": "Community 342",
|
||||
"343": "Community 343",
|
||||
"344": "Community 344",
|
||||
"345": "Community 345",
|
||||
"346": "Community 346",
|
||||
"347": "Community 347",
|
||||
"348": "Community 348",
|
||||
"349": "Community 349",
|
||||
"350": "Community 350",
|
||||
"351": "Community 351",
|
||||
"352": "Community 352",
|
||||
"353": "Community 353",
|
||||
"354": "Community 354",
|
||||
"355": "Community 355",
|
||||
"356": "Community 356",
|
||||
"357": "Community 357",
|
||||
"358": "Community 358",
|
||||
"359": "Community 359",
|
||||
"360": "Community 360",
|
||||
"361": "Community 361",
|
||||
"362": "Community 362",
|
||||
"363": "Community 363",
|
||||
"364": "Community 364",
|
||||
"365": "Community 365",
|
||||
"366": "Community 366",
|
||||
"367": "Community 367",
|
||||
"368": "Community 368",
|
||||
"369": "Community 369",
|
||||
"370": "Community 370",
|
||||
"371": "Community 371",
|
||||
"372": "Community 372",
|
||||
"373": "Community 373",
|
||||
"374": "Community 374",
|
||||
"375": "Community 375",
|
||||
"376": "Community 376",
|
||||
"377": "Community 377",
|
||||
"378": "Community 378",
|
||||
"379": "Community 379",
|
||||
"380": "Community 380",
|
||||
"381": "Community 381",
|
||||
"382": "Community 382",
|
||||
"383": "Community 383",
|
||||
"384": "Community 384",
|
||||
"385": "Community 385",
|
||||
"386": "Community 386",
|
||||
"387": "Community 387",
|
||||
"388": "Community 388",
|
||||
"389": "Community 389",
|
||||
"390": "Community 390",
|
||||
"391": "Community 391",
|
||||
"392": "Community 392",
|
||||
"393": "Community 393",
|
||||
"394": "Community 394",
|
||||
"395": "Community 395",
|
||||
"396": "Community 396",
|
||||
"397": "Community 397",
|
||||
"398": "Community 398",
|
||||
"399": "Community 399",
|
||||
"400": "Community 400",
|
||||
"401": "Community 401",
|
||||
"402": "Community 402",
|
||||
"403": "Community 403",
|
||||
"404": "Community 404",
|
||||
"405": "Community 405",
|
||||
"406": "Community 406",
|
||||
"407": "Community 407",
|
||||
"408": "Community 408",
|
||||
"409": "Community 409",
|
||||
"410": "Community 410",
|
||||
"411": "Community 411",
|
||||
"412": "Community 412",
|
||||
"413": "Community 413",
|
||||
"414": "Community 414",
|
||||
"415": "Community 415",
|
||||
"416": "Community 416",
|
||||
"417": "Community 417",
|
||||
"418": "Community 418",
|
||||
"419": "Community 419",
|
||||
"420": "Community 420",
|
||||
"421": "Community 421",
|
||||
"422": "Community 422",
|
||||
"423": "Community 423",
|
||||
"424": "Community 424",
|
||||
"425": "Community 425",
|
||||
"426": "Community 426",
|
||||
"427": "Community 427",
|
||||
"428": "Community 428",
|
||||
"429": "Community 429",
|
||||
"430": "Community 430",
|
||||
"431": "Community 431",
|
||||
"432": "Community 432",
|
||||
"433": "Community 433",
|
||||
"434": "Community 434",
|
||||
"435": "Community 435",
|
||||
"436": "Community 436",
|
||||
"437": "Community 437",
|
||||
"438": "Community 438",
|
||||
"439": "Community 439",
|
||||
"440": "Community 440",
|
||||
"441": "Community 441",
|
||||
"442": "Community 442",
|
||||
"443": "Community 443",
|
||||
"444": "Community 444",
|
||||
"445": "Community 445",
|
||||
"446": "Community 446",
|
||||
"447": "Community 447",
|
||||
"448": "Community 448",
|
||||
"449": "Community 449",
|
||||
"450": "Community 450",
|
||||
"451": "Community 451",
|
||||
"452": "Community 452",
|
||||
"453": "Community 453",
|
||||
"454": "Community 454",
|
||||
"455": "Community 455",
|
||||
"456": "Community 456",
|
||||
"457": "Community 457",
|
||||
"458": "Community 458",
|
||||
"459": "Community 459",
|
||||
"460": "Community 460",
|
||||
"461": "Community 461",
|
||||
"462": "Community 462",
|
||||
"463": "Community 463",
|
||||
"464": "Community 464",
|
||||
"465": "Community 465",
|
||||
"466": "Community 466",
|
||||
"467": "Community 467",
|
||||
"468": "Community 468",
|
||||
"469": "Community 469",
|
||||
"470": "Community 470",
|
||||
"471": "Community 471",
|
||||
"472": "Community 472",
|
||||
"473": "Community 473",
|
||||
"474": "Community 474",
|
||||
"475": "Community 475",
|
||||
"476": "Community 476",
|
||||
"477": "Community 477",
|
||||
"478": "Community 478",
|
||||
"479": "Community 479",
|
||||
"480": "Community 480",
|
||||
"481": "Community 481",
|
||||
"482": "Community 482",
|
||||
"483": "Community 483",
|
||||
"484": "Community 484",
|
||||
"485": "Community 485",
|
||||
"486": "Community 486",
|
||||
"487": "Community 487",
|
||||
"488": "Community 488",
|
||||
"489": "Community 489",
|
||||
"490": "Community 490",
|
||||
"491": "Community 491",
|
||||
"492": "Community 492",
|
||||
"493": "Community 493",
|
||||
"494": "Community 494",
|
||||
"495": "Community 495",
|
||||
"496": "Community 496",
|
||||
"497": "Community 497",
|
||||
"498": "Community 498",
|
||||
"499": "Community 499",
|
||||
"500": "Community 500",
|
||||
"501": "Community 501",
|
||||
"502": "Community 502",
|
||||
"503": "Community 503",
|
||||
"504": "Community 504",
|
||||
"505": "Community 505",
|
||||
"506": "Community 506",
|
||||
"507": "Community 507",
|
||||
"508": "Community 508",
|
||||
"509": "Community 509",
|
||||
"510": "Community 510",
|
||||
"511": "Community 511",
|
||||
"512": "Community 512",
|
||||
"513": "Community 513",
|
||||
"514": "Community 514",
|
||||
"515": "Community 515",
|
||||
"516": "Community 516",
|
||||
"517": "Community 517",
|
||||
"518": "Community 518",
|
||||
"519": "Community 519",
|
||||
"520": "Community 520",
|
||||
"521": "Community 521",
|
||||
"522": "Community 522",
|
||||
"523": "Community 523",
|
||||
"524": "Community 524",
|
||||
"525": "Community 525",
|
||||
"526": "Community 526",
|
||||
"527": "Community 527",
|
||||
"528": "Community 528",
|
||||
"529": "Community 529",
|
||||
"530": "Community 530",
|
||||
"531": "Community 531",
|
||||
"532": "Community 532",
|
||||
"533": "Community 533",
|
||||
"534": "Community 534",
|
||||
"535": "Community 535",
|
||||
"536": "Community 536",
|
||||
"537": "Community 537",
|
||||
"538": "Community 538",
|
||||
"539": "Community 539",
|
||||
"540": "Community 540",
|
||||
"541": "Community 541",
|
||||
"542": "Community 542",
|
||||
"543": "Community 543",
|
||||
"544": "Community 544",
|
||||
"545": "Community 545",
|
||||
"546": "Community 546",
|
||||
"547": "Community 547",
|
||||
"548": "Community 548",
|
||||
"549": "Community 549",
|
||||
"550": "Community 550",
|
||||
"551": "Community 551",
|
||||
"552": "Community 552",
|
||||
"553": "Community 553",
|
||||
"554": "Community 554",
|
||||
"555": "Community 555",
|
||||
"556": "Community 556",
|
||||
"557": "Community 557",
|
||||
"558": "Community 558",
|
||||
"559": "Community 559",
|
||||
"560": "Community 560",
|
||||
"561": "Community 561",
|
||||
"562": "Community 562",
|
||||
"563": "Community 563",
|
||||
"564": "Community 564",
|
||||
"565": "Community 565",
|
||||
"566": "Community 566",
|
||||
"567": "Community 567",
|
||||
"568": "Community 568",
|
||||
"569": "Community 569",
|
||||
"570": "Community 570",
|
||||
"571": "Community 571",
|
||||
"572": "Community 572",
|
||||
"573": "Community 573",
|
||||
"574": "Community 574",
|
||||
"575": "Community 575",
|
||||
"576": "Community 576",
|
||||
"577": "Community 577",
|
||||
"578": "Community 578",
|
||||
"579": "Community 579",
|
||||
"580": "Community 580",
|
||||
"581": "Community 581",
|
||||
"582": "Community 582",
|
||||
"583": "Community 583",
|
||||
"584": "Community 584",
|
||||
"585": "Community 585",
|
||||
"586": "Community 586",
|
||||
"587": "Community 587",
|
||||
"588": "Community 588",
|
||||
"589": "Community 589",
|
||||
"590": "Community 590",
|
||||
"591": "Community 591",
|
||||
"592": "Community 592",
|
||||
"593": "Community 593",
|
||||
"594": "Community 594",
|
||||
"595": "Community 595",
|
||||
"596": "Community 596",
|
||||
"597": "Community 597",
|
||||
"598": "Community 598",
|
||||
"599": "Community 599",
|
||||
"600": "Community 600",
|
||||
"601": "Community 601",
|
||||
"602": "Community 602",
|
||||
"603": "Community 603",
|
||||
"604": "Community 604",
|
||||
"605": "Community 605",
|
||||
"606": "Community 606",
|
||||
"607": "Community 607",
|
||||
"608": "Community 608",
|
||||
"609": "Community 609",
|
||||
"610": "Community 610",
|
||||
"611": "Community 611",
|
||||
"612": "Community 612",
|
||||
"613": "Community 613",
|
||||
"614": "Community 614",
|
||||
"615": "Community 615",
|
||||
"616": "Community 616",
|
||||
"617": "Community 617",
|
||||
"618": "Community 618",
|
||||
"619": "Community 619",
|
||||
"620": "Community 620",
|
||||
"621": "Community 621",
|
||||
"622": "Community 622",
|
||||
"623": "Community 623",
|
||||
"624": "Community 624",
|
||||
"625": "Community 625",
|
||||
"626": "Community 626",
|
||||
"627": "Community 627",
|
||||
"628": "Community 628",
|
||||
"629": "Community 629",
|
||||
"630": "Community 630"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.
|
||||
File diff suppressed because it is too large
Load Diff
graphify-out/cache/ast/v0.8.44/005f400c7679ef8d1bff22dc231aea46c04d0e74a10d5a690f294ac0444d9102.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "label": "CategoryController.php", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L1"}, {"id": "controller_categorycontroller_categorycontroller", "label": "CategoryController", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L18"}, {"id": "basecontroller", "label": "BaseController", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "controller_categorycontroller_categorycontroller_legacylist", "label": ".legacyList()", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L21"}, {"id": "jsonresponse", "label": "JsonResponse", "file_type": "code", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L21"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "basecontroller", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "jsonresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "route", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "attributes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_category_controller_categorycontroller_php", "target": "controller_categorycontroller_categorycontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L18", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller", "target": "basecontroller", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L19", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller", "target": "controller_categorycontroller_categorycontroller_legacylist", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L21", "weight": 1.0}, {"source": "controller_categorycontroller_categorycontroller_legacylist", "target": "jsonresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Category/Controller/CategoryController.php", "source_location": "L21", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "error", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L36", "receiver": null}, {"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "error", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L39", "receiver": null}, {"caller_nid": "controller_categorycontroller_categorycontroller_legacylist", "callee": "sprintf", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Category/Controller/CategoryController.php", "source_location": "L41", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/00ca797277e9520885bf056e719721e9d72d97c4000fbd9f8bcd69980a5bd69d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/00d19e027d60b4461e43310d6445f95fab85d7b6ba26ba946e44ea001556b0d0.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0135a5351c9ceb6902c56372689d61b5bbbc5e07203594f05886956111b9feea.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/01a35794369da341601324499da53378a75ab8592d14a32b72d564b44137177d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/01a6fc5a55d6357607e36837cd39a6ed646f4097fd4ba944ababf826cd1f0ff4.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/01cbb020665bc50a95519b010c5cb4bdcda727e5e3b11144854ea69380bba84d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/02081acac585d1cfaabd1d404b0bb25c7bcf25fa51e32bf986cd75675d14ac24.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0231ff42cfb43dd4cb4ecfaff3e4f1d285d30fdd87a120fccc6046fac3d1e040.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615060415_php", "label": "Version20260615060415.php", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L1"}, {"id": "migrations_version20260615060415_version20260615060415", "label": "Version20260615060415", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260615060415_version20260615060415_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L15"}, {"id": "migrations_version20260615060415_version20260615060415_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L20"}, {"id": "migrations_version20260615060415_version20260615060415_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260615060415.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615060415_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615060415_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615060415_php", "target": "migrations_version20260615060415_version20260615060415", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615060415_version20260615060415", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615060415_version20260615060415", "target": "migrations_version20260615060415_version20260615060415_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260615060415_version20260615060415", "target": "migrations_version20260615060415_version20260615060415_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260615060415_version20260615060415_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260615060415_version20260615060415", "target": "migrations_version20260615060415_version20260615060415_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260615060415_version20260615060415_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615060415.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260615060415_version20260615060415_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615060415.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260615060415_version20260615060415_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615060415.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/03ed965fb14b51c065108f4eeca9672f20e8090195fcc442de5c5c60c950ec10.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_02_authentication_user_flow_md", "label": "user_flow.md", "file_type": "document", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L1"}, {"id": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0631\u0628\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f2_\u0645\u0627\u0698\u0648\u0644_\u0627\u062d\u0631\u0627\u0632_\u0647\u0648\u06cc\u062a", "label": "\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u06cc \u2014 \u062a\u0633\u06a9 \u06f0\u06f2: \u0645\u0627\u0698\u0648\u0644 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a", "file_type": "document", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L1"}, {"id": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0645\u0644_\u0648\u0631\u0648\u062f_\u0628\u0627_otp_\u062c\u0631\u06cc\u0627\u0646_\u0648\u0627\u0642\u0639\u06cc_\u0627\u0632_drupal", "label": "\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 \u0648\u0631\u0648\u062f \u0628\u0627 OTP (\u062c\u0631\u06cc\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 Drupal)", "file_type": "document", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L3"}, {"id": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u062a\u0645\u062f\u06cc\u062f_token", "label": "\u062c\u0631\u06cc\u0627\u0646 \u062a\u0645\u062f\u06cc\u062f Token", "file_type": "document", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L58"}, {"id": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u062f\u0631\u06cc\u0627\u0641\u062a_\u0627\u0637\u0644\u0627\u0639\u0627\u062a_\u06a9\u0627\u0631\u0628\u0631", "label": "\u062c\u0631\u06cc\u0627\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631", "file_type": "document", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L70"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_02_authentication_user_flow_md", "target": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0631\u0628\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f2_\u0645\u0627\u0698\u0648\u0644_\u0627\u062d\u0631\u0627\u0632_\u0647\u0648\u06cc\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L1", "weight": 1.0}, {"source": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0631\u0628\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f2_\u0645\u0627\u0698\u0648\u0644_\u0627\u062d\u0631\u0627\u0632_\u0647\u0648\u06cc\u062a", "target": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0645\u0644_\u0648\u0631\u0648\u062f_\u0628\u0627_otp_\u062c\u0631\u06cc\u0627\u0646_\u0648\u0627\u0642\u0639\u06cc_\u0627\u0632_drupal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L3", "weight": 1.0}, {"source": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0631\u0628\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f2_\u0645\u0627\u0698\u0648\u0644_\u0627\u062d\u0631\u0627\u0632_\u0647\u0648\u06cc\u062a", "target": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u062a\u0645\u062f\u06cc\u062f_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L58", "weight": 1.0}, {"source": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u06a9\u0627\u0631\u0628\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f2_\u0645\u0627\u0698\u0648\u0644_\u0627\u062d\u0631\u0627\u0632_\u0647\u0648\u06cc\u062a", "target": "task_02_authentication_user_flow_\u062c\u0631\u06cc\u0627\u0646_\u062f\u0631\u06cc\u0627\u0641\u062a_\u0627\u0637\u0644\u0627\u0639\u0627\u062a_\u06a9\u0627\u0631\u0628\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-02-authentication/user_flow.md", "source_location": "L70", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/042d405bfc9f389c3f4031533534485742dabdcfe86b4d753c0cc052a755f1f5.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/050d7fae8134856aeccfff39607f5cfb44e8b923e13d0235411a577b78a6f96d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/06548919f6a826850f8e2b392875bb773a3dd1bfe0c670321e68b8fff30c132b.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/066ba489ef07286bb40ccf363ac16799c9b54a7a36799184805ec5034895e702.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/072cbab44fe86ab89e7a46724b8631528acdd63ae0c3aee2526ab408e1c021d7.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/07a565453b405723fef58584dc058518729c7d27e873492d8a3cea7e7de0d690.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/07b7bc5971ab5201243c5bdf67eb2d111629753dd697034c85e92c96d1008809.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/086809f01c4c6e77ab1161688bd03d60ff524735d0d7655cb0daa55bbb53875a.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [], "edges": [], "skipped": "data json (non-object root)"}
|
||||
graphify-out/cache/ast/v0.8.44/088a8086ca7a8284aa67577aa0ffe060d532f3bbb2090b6c3e3ff0f4730e2703.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/094a07b7c7552dd1c2812e066ae7e9cde6dc6bc9ca4ef07e11b82f8feec45fd6.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_appointment_message_expireappointmentsmessage_php", "label": "ExpireAppointmentsMessage.php", "file_type": "code", "source_file": "src/Appointment/Message/ExpireAppointmentsMessage.php", "source_location": "L1"}, {"id": "message_expireappointmentsmessage_expireappointmentsmessage", "label": "ExpireAppointmentsMessage", "file_type": "code", "source_file": "src/Appointment/Message/ExpireAppointmentsMessage.php", "source_location": "L5"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_appointment_message_expireappointmentsmessage_php", "target": "message_expireappointmentsmessage_expireappointmentsmessage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Appointment/Message/ExpireAppointmentsMessage.php", "source_location": "L5", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/0a79349da76f2fe2c50e76e3add06522ea796a255722386426e7b7edf988637e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0bfc1f146132195c74357b078df7c099d0dbff2c90ed2bd65f5f5c476dec793b.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0c7d07bdfbdf7b88649f1c4bd6391862a21da9c45885e0046950258fb82ba64e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/0e3bb1ebc45d4c045ef0e6fe09170976c315d7da410efd79bdcc53189e9dab49.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_entity_claimitem_php", "label": "ClaimItem.php", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L1"}, {"id": "entity_claimitem_claimitem", "label": "ClaimItem", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L8"}, {"id": "claim", "label": "Claim", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L18"}, {"id": "entity_claimitem_claimitem_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L31"}, {"id": "entity_claimitem_claimitem_getid", "label": ".getId()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L38"}, {"id": "entity_claimitem_claimitem_getinvoiceitemid", "label": ".getInvoiceItemId()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L39"}, {"id": "entity_claimitem_claimitem_getclaimedrials", "label": ".getClaimedRials()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L40"}, {"id": "entity_claimitem_claimitem_getapprovedrials", "label": ".getApprovedRials()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L41"}, {"id": "entity_claimitem_claimitem_toarray", "label": ".toArray()", "file_type": "code", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L43"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_entity_claimitem_php", "target": "claimitemrepository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_entity_claimitem_php", "target": "mapping", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_entity_claimitem_php", "target": "entity_claimitem_claimitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L8", "weight": 1.0}, {"source": "entity_claimitem_claimitem", "target": "claim", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L18", "weight": 1.0, "context": "field"}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L31", "weight": 1.0}, {"source": "entity_claimitem_claimitem_construct", "target": "claim", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L31", "weight": 1.0, "context": "parameter_type"}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_getid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L38", "weight": 1.0}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_getinvoiceitemid", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L39", "weight": 1.0}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_getclaimedrials", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L40", "weight": 1.0}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_getapprovedrials", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L41", "weight": 1.0}, {"source": "entity_claimitem_claimitem", "target": "entity_claimitem_claimitem_toarray", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Entity/ClaimItem.php", "source_location": "L43", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/0ea6fa1641009afe5a0f6ca33dd6afc4e224978bd7cbfd4be8865a6ac52c9c05.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "label": "PaymentGatewayInterface.php", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L1"}, {"id": "gateway_paymentgatewayinterface_getname", "label": "getName()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L7"}, {"id": "gateway_paymentgatewayinterface_initiate", "label": "initiate()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12"}, {"id": "paymentinitresult", "label": "PaymentInitResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12"}, {"id": "gateway_paymentgatewayinterface_verify", "label": "verify()", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17"}, {"id": "paymentverifyresult", "label": "PaymentVerifyResult", "file_type": "code", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_getname", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_initiate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_initiate", "target": "paymentinitresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L12", "weight": 1.0, "context": "return_type"}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_payment_gateway_paymentgatewayinterface_php", "target": "gateway_paymentgatewayinterface_verify", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17", "weight": 1.0}, {"source": "gateway_paymentgatewayinterface_verify", "target": "paymentverifyresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Payment/Gateway/PaymentGatewayInterface.php", "source_location": "L17", "weight": 1.0, "context": "return_type"}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/0f032e0490838820a0692ba9c0042dadce5a9558d87083874219c84dcde92742.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_13_like_task_md", "label": "task.md", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L1"}, {"id": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "label": "\u062a\u0633\u06a9 \u06f1\u06f3: \u0645\u0627\u0698\u0648\u0644 \u0644\u0627\u06cc\u06a9", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L1"}, {"id": "task_13_like_task_\u062a\u0648\u0636\u06cc\u062d", "label": "\u062a\u0648\u0636\u06cc\u062d", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L3"}, {"id": "task_13_like_task_endpoint_\u0647\u0627", "label": "Endpoint \u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L6"}, {"id": "task_13_like_task_\u067e\u06cc\u0634_\u0646\u06cc\u0627\u0632\u0647\u0627", "label": "\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L13"}, {"id": "task_13_like_task_\u0632\u0645\u0627\u0646_\u062a\u062e\u0645\u06cc\u0646\u06cc", "label": "\u0632\u0645\u0627\u0646 \u062a\u062e\u0645\u06cc\u0646\u06cc", "file_type": "document", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L16"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_13_like_task_md", "target": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L1", "weight": 1.0}, {"source": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "target": "task_13_like_task_\u062a\u0648\u0636\u06cc\u062d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L3", "weight": 1.0}, {"source": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "target": "task_13_like_task_endpoint_\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L6", "weight": 1.0}, {"source": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "target": "task_13_like_task_\u067e\u06cc\u0634_\u0646\u06cc\u0627\u0632\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L13", "weight": 1.0}, {"source": "task_13_like_task_\u062a\u0633\u06a9_\u06f1\u06f3_\u0645\u0627\u0698\u0648\u0644_\u0644\u0627\u06cc\u06a9", "target": "task_13_like_task_\u0632\u0645\u0627\u0646_\u062a\u062e\u0645\u06cc\u0646\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-13-like/task.md", "source_location": "L16", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/0fb344e74f64622b3ea3f4a29e8b6412f35ec60ee46cd25abd5ea3e0abc8c299.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609140423_php", "label": "Version20260609140423.php", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L1"}, {"id": "migrations_version20260609140423_version20260609140423", "label": "Version20260609140423", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260609140423_version20260609140423_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L15"}, {"id": "migrations_version20260609140423_version20260609140423_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L20"}, {"id": "migrations_version20260609140423_version20260609140423_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260609140423.php", "source_location": "L27"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609140423_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609140423_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609140423_php", "target": "migrations_version20260609140423_version20260609140423", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260609140423_version20260609140423", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260609140423_version20260609140423", "target": "migrations_version20260609140423_version20260609140423_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260609140423_version20260609140423", "target": "migrations_version20260609140423_version20260609140423_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260609140423_version20260609140423_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260609140423_version20260609140423", "target": "migrations_version20260609140423_version20260609140423_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L27", "weight": 1.0}, {"source": "migrations_version20260609140423_version20260609140423_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609140423.php", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260609140423_version20260609140423_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609140423.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260609140423_version20260609140423_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609140423.php", "source_location": "L24", "receiver": null}, {"caller_nid": "migrations_version20260609140423_version20260609140423_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609140423.php", "source_location": "L30", "receiver": null}, {"caller_nid": "migrations_version20260609140423_version20260609140423_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609140423.php", "source_location": "L31", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/10363dfb996d06f7ed05ac77eefcb89ea78899e17a4314d9738ed09d813bc9da.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/10604824317018d8f535539834b9913ef3982889b1ffb2874e4438f848f06726.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/10d827757949ef051e2c3b4f2bd6e649930cfa88dde3d57d09516233d819d239.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_constant_errorcodes_php", "label": "ErrorCodes.php", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L1"}, {"id": "constant_errorcodes_errorcodes", "label": "ErrorCodes", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L5"}, {"id": "constant_errorcodes_errorcodes_message", "label": ".message()", "file_type": "code", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L86"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_constant_errorcodes_php", "target": "constant_errorcodes_errorcodes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L5", "weight": 1.0}, {"source": "constant_errorcodes_errorcodes", "target": "constant_errorcodes_errorcodes_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Constant/ErrorCodes.php", "source_location": "L86", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/10f3f7cd7ac8e13b8e514e944848a27f090cffeca31cd97c6006a7e04c7d4a5f.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/11064e4cf0182849f67012ead852a3b45c2d8b66693e9680bfabf4094c3b9d40.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_service_manualclaimsubmitter_php", "label": "ManualClaimSubmitter.php", "file_type": "code", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L1"}, {"id": "service_manualclaimsubmitter_manualclaimsubmitter", "label": "ManualClaimSubmitter", "file_type": "code", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L14"}, {"id": "claimsubmitterinterface", "label": "ClaimSubmitterInterface", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "service_manualclaimsubmitter_manualclaimsubmitter_submit", "label": ".submit()", "file_type": "code", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16"}, {"id": "claim", "label": "Claim", "file_type": "code", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16"}, {"id": "claimsubmissionresult", "label": "ClaimSubmissionResult", "file_type": "code", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_service_manualclaimsubmitter_php", "target": "claimsubmissionresult", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_service_manualclaimsubmitter_php", "target": "claimsubmitterinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_service_manualclaimsubmitter_php", "target": "claim", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_billing_service_manualclaimsubmitter_php", "target": "service_manualclaimsubmitter_manualclaimsubmitter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L14", "weight": 1.0}, {"source": "service_manualclaimsubmitter_manualclaimsubmitter", "target": "claimsubmitterinterface", "relation": "implements", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L14", "weight": 1.0}, {"source": "service_manualclaimsubmitter_manualclaimsubmitter", "target": "service_manualclaimsubmitter_manualclaimsubmitter_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16", "weight": 1.0}, {"source": "service_manualclaimsubmitter_manualclaimsubmitter_submit", "target": "claim", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16", "weight": 1.0, "context": "parameter_type"}, {"source": "service_manualclaimsubmitter_manualclaimsubmitter_submit", "target": "claimsubmissionresult", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L16", "weight": 1.0, "context": "return_type"}, {"source": "service_manualclaimsubmitter_manualclaimsubmitter_submit", "target": "claimsubmissionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/Billing/Service/ManualClaimSubmitter.php", "source_location": "L18", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/1161721d41f057cd7c7d820b405a526cf644ade3da6a44a93e63ce9a364a9ca3.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1222b425e9e9856e291b8fb39c28348287dbafcf7b0a30531c5bab8642d2cb17.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/123c29f45911c7151d410112521a5d787922a73bbb0ebb1f53792aff70376e6b.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/124d5bfe7f63a910acd5ddab19c0ecb83c9d9005786fcd6606e597e7f6b6050b.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "label": "HealthController.php", "file_type": "code", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L1"}, {"id": "controller_healthcontroller_healthcontroller", "label": "HealthController", "file_type": "code", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L10"}, {"id": "controller_healthcontroller_healthcontroller_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L12"}, {"id": "controller_healthcontroller_healthcontroller_invoke", "label": ".__invoke()", "file_type": "code", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L17"}, {"id": "jsonresponse", "label": "JsonResponse", "file_type": "code", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L17"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "target": "entitymanagerinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "target": "jsonresponse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "target": "route", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "target": "cacheinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_shared_controller_healthcontroller_php", "target": "controller_healthcontroller_healthcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L10", "weight": 1.0}, {"source": "controller_healthcontroller_healthcontroller", "target": "controller_healthcontroller_healthcontroller_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L12", "weight": 1.0}, {"source": "controller_healthcontroller_healthcontroller", "target": "controller_healthcontroller_healthcontroller_invoke", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L17", "weight": 1.0}, {"source": "controller_healthcontroller_healthcontroller_invoke", "target": "jsonresponse", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Shared/Controller/HealthController.php", "source_location": "L17", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "controller_healthcontroller_healthcontroller_invoke", "callee": "executeQuery", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Controller/HealthController.php", "source_location": "L24", "receiver": null}, {"caller_nid": "controller_healthcontroller_healthcontroller_invoke", "callee": "getConnection", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Controller/HealthController.php", "source_location": "L24", "receiver": null}, {"caller_nid": "controller_healthcontroller_healthcontroller_invoke", "callee": "getItem", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Controller/HealthController.php", "source_location": "L32", "receiver": null}, {"caller_nid": "controller_healthcontroller_healthcontroller_invoke", "callee": "time", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Shared/Controller/HealthController.php", "source_location": "L42", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/12f46177c25b3354d11d67086bea1387dfc7c630aa26c3ae766c680f2843640e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/138a7655a0efa500b4a9a8f829bebbdff35803cb3abfd3da7f4d4f362d7b63c9.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/13d77eda5f22d43badf639d0127bc7252b3adfe6c72657c33423ad5a04f345b2.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/14203a81aefe3239cd28bd31b32c5310bf184f3fd7dfee96ee23bf706b4d6634.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/14afd5263c7d520a89f36bbba8c8a1884f88df74d09afe4caf7464025ee25063.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/15ca7be1a752a08fac682eb04da250b148d60b75a90dd16d3783f46c38ca3edf.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/16882796edddc191d1bfb8a90124036bc729f1c02152f464468a2042199ee911.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1712a6a680cb00c102367be014ced75a77306c0c8ac1fbccec95f37ed31cff4e.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/17eba56cf557f9cf9d6300b9946fe25cd348fd937bd20914ba382b1a760112aa.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_14_secretary_architecture_md", "label": "architecture.md", "file_type": "document", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L1"}, {"id": "task_14_secretary_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f4_\u0645\u0627\u0698\u0648\u0644_\u0645\u0646\u0634\u06cc", "label": "\u0645\u0639\u0645\u0627\u0631\u06cc \u2014 \u062a\u0633\u06a9 \u06f1\u06f4: \u0645\u0627\u0698\u0648\u0644 \u0645\u0646\u0634\u06cc", "file_type": "document", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L1"}, {"id": "task_14_secretary_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "label": "\u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L3"}, {"id": "task_14_secretary_architecture_entity_secretary", "label": "Entity: Secretary", "file_type": "document", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L24"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_14_secretary_architecture_md", "target": "task_14_secretary_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f4_\u0645\u0627\u0698\u0648\u0644_\u0645\u0646\u0634\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L1", "weight": 1.0}, {"source": "task_14_secretary_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f4_\u0645\u0627\u0698\u0648\u0644_\u0645\u0646\u0634\u06cc", "target": "task_14_secretary_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L3", "weight": 1.0}, {"source": "task_14_secretary_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f4_\u0645\u0627\u0698\u0648\u0644_\u0645\u0646\u0634\u06cc", "target": "task_14_secretary_architecture_entity_secretary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-14-secretary/architecture.md", "source_location": "L24", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/180c8f1b3163d1c97e3add7912571278ce7d53477095695010024be863743ee8.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/19bc98b5866f489ff0cafdb3533f2698de3546aef26ad438d16beb2d7218c859.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1a62b01d290b483e8188ad1a555bb459bd780334cd28835e86bcc0517382c78d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1a7f0d07099224c30cc6111ba102ddf6cd583df610528c692ce923d42bf1e591.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1a83b9b76c0687098bffc9471e7fb2c51a97be4939347bd11990d55fc290fbe9.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_03_user_profile_architecture_md", "label": "architecture.md", "file_type": "document", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L1"}, {"id": "task_03_user_profile_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f3_\u0645\u0627\u0698\u0648\u0644_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u06a9\u0627\u0631\u0628\u0631", "label": "\u0645\u0639\u0645\u0627\u0631\u06cc \u2014 \u062a\u0633\u06a9 \u06f0\u06f3: \u0645\u0627\u0698\u0648\u0644 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631", "file_type": "document", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L1"}, {"id": "task_03_user_profile_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "label": "\u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L3"}, {"id": "task_03_user_profile_architecture_entity_userprofile", "label": "Entity: UserProfile", "file_type": "document", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L24"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_03_user_profile_architecture_md", "target": "task_03_user_profile_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f3_\u0645\u0627\u0698\u0648\u0644_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u06a9\u0627\u0631\u0628\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L1", "weight": 1.0}, {"source": "task_03_user_profile_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f3_\u0645\u0627\u0698\u0648\u0644_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u06a9\u0627\u0631\u0628\u0631", "target": "task_03_user_profile_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L3", "weight": 1.0}, {"source": "task_03_user_profile_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f0\u06f3_\u0645\u0627\u0698\u0648\u0644_\u067e\u0631\u0648\u0641\u0627\u06cc\u0644_\u06a9\u0627\u0631\u0628\u0631", "target": "task_03_user_profile_architecture_entity_userprofile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-03-user-profile/architecture.md", "source_location": "L24", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/1a88683010bc9f3571111e2c63fceda2062724f08e0c93a8519405d4ed8bf33c.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260621084558_php", "label": "Version20260621084558.php", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L1"}, {"id": "migrations_version20260621084558_version20260621084558", "label": "Version20260621084558", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260621084558_version20260621084558_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L15"}, {"id": "migrations_version20260621084558_version20260621084558_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L20"}, {"id": "migrations_version20260621084558_version20260621084558_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260621084558.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260621084558_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260621084558_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260621084558_php", "target": "migrations_version20260621084558_version20260621084558", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260621084558_version20260621084558", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260621084558_version20260621084558", "target": "migrations_version20260621084558_version20260621084558_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260621084558_version20260621084558", "target": "migrations_version20260621084558_version20260621084558_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260621084558_version20260621084558_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260621084558_version20260621084558", "target": "migrations_version20260621084558_version20260621084558_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260621084558_version20260621084558_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260621084558.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260621084558_version20260621084558_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260621084558.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260621084558_version20260621084558_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260621084558.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/1ac836b1d7089a2dd47756eb7ba0e65801105e2dda52aee3f5df981daa57db88.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615061938_php", "label": "Version20260615061938.php", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L1"}, {"id": "migrations_version20260615061938_version20260615061938", "label": "Version20260615061938", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260615061938_version20260615061938_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L15"}, {"id": "migrations_version20260615061938_version20260615061938_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L20"}, {"id": "migrations_version20260615061938_version20260615061938_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260615061938.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615061938_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615061938_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615061938_php", "target": "migrations_version20260615061938_version20260615061938", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615061938_version20260615061938", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615061938_version20260615061938", "target": "migrations_version20260615061938_version20260615061938_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260615061938_version20260615061938", "target": "migrations_version20260615061938_version20260615061938_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260615061938_version20260615061938_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260615061938_version20260615061938", "target": "migrations_version20260615061938_version20260615061938_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260615061938_version20260615061938_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615061938.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260615061938_version20260615061938_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615061938.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260615061938_version20260615061938_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615061938.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/1b3c9ad833965008985bcf3f6a1894e400bc58bb0a8de2b6bc159c31ecdcca5d.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609131553_php", "label": "Version20260609131553.php", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L1"}, {"id": "migrations_version20260609131553_version20260609131553", "label": "Version20260609131553", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260609131553_version20260609131553_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L15"}, {"id": "migrations_version20260609131553_version20260609131553_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L20"}, {"id": "migrations_version20260609131553_version20260609131553_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260609131553.php", "source_location": "L27"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609131553_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609131553_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260609131553_php", "target": "migrations_version20260609131553_version20260609131553", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260609131553_version20260609131553", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260609131553_version20260609131553", "target": "migrations_version20260609131553_version20260609131553_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260609131553_version20260609131553", "target": "migrations_version20260609131553_version20260609131553_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260609131553_version20260609131553_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260609131553_version20260609131553", "target": "migrations_version20260609131553_version20260609131553_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L27", "weight": 1.0}, {"source": "migrations_version20260609131553_version20260609131553_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260609131553.php", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260609131553_version20260609131553_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609131553.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260609131553_version20260609131553_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609131553.php", "source_location": "L24", "receiver": null}, {"caller_nid": "migrations_version20260609131553_version20260609131553_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609131553.php", "source_location": "L30", "receiver": null}, {"caller_nid": "migrations_version20260609131553_version20260609131553_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260609131553.php", "source_location": "L31", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/1ccd90f5a75d47aad2155484d487cf0dfceb319ec0b9ae4f45a30cb931e5e031.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1dceb66c7a12a35660145fdf3bf0bbe4d5b8275f5b45bf86cbba4cf80f64675a.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_phase2_taskes_task_15_patient_records_database_md", "label": "database.md", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L1"}, {"id": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "label": "\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u2014 \u062a\u0633\u06a9 \u06f1\u06f5: \u067e\u0631\u0648\u0646\u062f\u0647 \u0628\u06cc\u0645\u0627\u0631", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L1"}, {"id": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_patient_records", "label": "\u062c\u062f\u0648\u0644: patient_records", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L3"}, {"id": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_patient_sessions", "label": "\u062c\u062f\u0648\u0644: patient_sessions", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L21"}, {"id": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_session_services", "label": "\u062c\u062f\u0648\u0644: session_services", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L45"}, {"id": "task_15_patient_records_database_migration_\u0646\u0645\u0648\u0646\u0647", "label": "Migration \u0646\u0645\u0648\u0646\u0647", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L57"}, {"id": "task_15_patient_records_database_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "label": "\u0646\u06a9\u0627\u062a \u0645\u0647\u0645", "file_type": "document", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L111"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_phase2_taskes_task_15_patient_records_database_md", "target": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L1", "weight": 1.0}, {"source": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "target": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_patient_records", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L3", "weight": 1.0}, {"source": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "target": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_patient_sessions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L21", "weight": 1.0}, {"source": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "target": "task_15_patient_records_database_\u062c\u062f\u0648\u0644_session_services", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L45", "weight": 1.0}, {"source": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "target": "task_15_patient_records_database_migration_\u0646\u0645\u0648\u0646\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L57", "weight": 1.0}, {"source": "task_15_patient_records_database_\u067e\u0627\u06cc\u06af\u0627\u0647_\u062f\u0627\u062f\u0647_\u062a\u0633\u06a9_\u06f1\u06f5_\u067e\u0631\u0648\u0646\u062f\u0647_\u0628\u06cc\u0645\u0627\u0631", "target": "task_15_patient_records_database_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/phase2_taskes/task-15-patient-records/database.md", "source_location": "L111", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/1f4ddab7ada6116daee3a80a2b4ded6c8b84612e036cc16621211616ea9cb2e2.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1f7781991eb738e4d1e1d94ecbc02013b898ef8bf8a7beeecf1af9687643b4dd.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "label": "manifest.json", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L1"}, {"id": "public_manifest_name", "label": "name", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L2"}, {"id": "public_manifest_short_name", "label": "short_name", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L3"}, {"id": "public_manifest_description", "label": "description", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L4"}, {"id": "public_manifest_start_url", "label": "start_url", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L5"}, {"id": "public_manifest_scope", "label": "scope", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L6"}, {"id": "public_manifest_display", "label": "display", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L7"}, {"id": "public_manifest_orientation", "label": "orientation", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L8"}, {"id": "public_manifest_theme_color", "label": "theme_color", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L9"}, {"id": "public_manifest_background_color", "label": "background_color", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L10"}, {"id": "public_manifest_lang", "label": "lang", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L11"}, {"id": "public_manifest_dir", "label": "dir", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L12"}, {"id": "public_manifest_icons", "label": "icons", "file_type": "code", "source_file": "public/manifest.json", "source_location": "L13"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L2", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_short_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L3", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L4", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_start_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_scope", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_orientation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_theme_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L9", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_background_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L10", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_lang", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L11", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_dir", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L12", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_public_manifest_json", "target": "public_manifest_icons", "relation": "contains", "confidence": "EXTRACTED", "source_file": "public/manifest.json", "source_location": "L13", "weight": 1.0}]}
|
||||
graphify-out/cache/ast/v0.8.44/1fa793e81dd07304171c11a760104acd6802dbeec00363618f5d4c1e651668ba.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_05_doctor_implementation_notes_md", "label": "implementation_notes.md", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L1"}, {"id": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "label": "\u0646\u06a9\u0627\u062a \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u2014 \u062a\u0633\u06a9 \u06f0\u06f5: \u0645\u0627\u0698\u0648\u0644 \u062f\u06a9\u062a\u0631", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L1"}, {"id": "task_05_doctor_implementation_notes_\u0641\u06cc\u0644\u062a\u0631_\u0644\u06cc\u0633\u062a_\u062f\u06a9\u062a\u0631\u0647\u0627", "label": "\u0641\u06cc\u0644\u062a\u0631 \u0644\u06cc\u0633\u062a \u062f\u06a9\u062a\u0631\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L3"}, {"id": "task_05_doctor_implementation_notes_\u0622\u067e\u062f\u06cc\u062a_\u0645\u06cc\u0627\u0646\u06af\u06cc\u0646_\u0627\u0645\u062a\u06cc\u0627\u0632", "label": "\u0622\u067e\u062f\u06cc\u062a \u0645\u06cc\u0627\u0646\u06af\u06cc\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L34"}, {"id": "task_05_doctor_implementation_notes_\u0622\u062f\u0631\u0633_\u0645\u0637\u0628", "label": "\u0622\u062f\u0631\u0633 \u0645\u0637\u0628", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L47"}, {"id": "task_05_doctor_implementation_notes_\u0645\u062c\u0648\u0632\u0647\u0627", "label": "\u0645\u062c\u0648\u0632\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L52"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_05_doctor_implementation_notes_md", "target": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L1", "weight": 1.0}, {"source": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "target": "task_05_doctor_implementation_notes_\u0641\u06cc\u0644\u062a\u0631_\u0644\u06cc\u0633\u062a_\u062f\u06a9\u062a\u0631\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L3", "weight": 1.0}, {"source": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "target": "task_05_doctor_implementation_notes_\u0622\u067e\u062f\u06cc\u062a_\u0645\u06cc\u0627\u0646\u06af\u06cc\u0646_\u0627\u0645\u062a\u06cc\u0627\u0632", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L34", "weight": 1.0}, {"source": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "target": "task_05_doctor_implementation_notes_\u0622\u062f\u0631\u0633_\u0645\u0637\u0628", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L47", "weight": 1.0}, {"source": "task_05_doctor_implementation_notes_\u0646\u06a9\u0627\u062a_\u067e\u06cc\u0627\u062f\u0647_\u0633\u0627\u0632\u06cc_\u062a\u0633\u06a9_\u06f0\u06f5_\u0645\u0627\u0698\u0648\u0644_\u062f\u06a9\u062a\u0631", "target": "task_05_doctor_implementation_notes_\u0645\u062c\u0648\u0632\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-05-doctor/implementation_notes.md", "source_location": "L52", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/1fbc6a5462ddb25a89b765941b2c4eebae1b3c2e62cf5dbf48bc48015b79e6ab.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/1fc5633381813d3939e8513eb233bfd9c24797537a8348bc83e1f29c2b41e311.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/225781d93f9a713aa0a979f12efff07f7805972e287cc1fe11371367bfcc4e43.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_smsproviderinterface_php", "label": "SmsProviderInterface.php", "file_type": "code", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L1"}, {"id": "provider_smsproviderinterface_getname", "label": "getName()", "file_type": "code", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L7"}, {"id": "provider_smsproviderinterface_send", "label": "send()", "file_type": "code", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L10"}, {"id": "provider_smsproviderinterface_sendtemplate", "label": "sendTemplate()", "file_type": "code", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L13"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_smsproviderinterface_php", "target": "provider_smsproviderinterface_getname", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_smsproviderinterface_php", "target": "provider_smsproviderinterface_send", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L10", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_smsproviderinterface_php", "target": "provider_smsproviderinterface_sendtemplate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/SmsProviderInterface.php", "source_location": "L13", "weight": 1.0}], "raw_calls": []}
|
||||
graphify-out/cache/ast/v0.8.44/226896294eb6cd3fe01927aebd15dbe6fa146b6f4ff12d37efbcfa4d6510b104.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/22c3a507b65fe3f858806b1d7bed15411be794586278ddae7ac5ebe09782bbd6.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/237d660c556b7f37176854a98f02cd114fafab9405f9ae4945a8a75941928f8d.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260623173907_php", "label": "Version20260623173907.php", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L1"}, {"id": "migrations_version20260623173907_version20260623173907", "label": "Version20260623173907", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260623173907_version20260623173907_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L15"}, {"id": "migrations_version20260623173907_version20260623173907_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L20"}, {"id": "migrations_version20260623173907_version20260623173907_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260623173907.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260623173907_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260623173907_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260623173907_php", "target": "migrations_version20260623173907_version20260623173907", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260623173907_version20260623173907", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260623173907_version20260623173907", "target": "migrations_version20260623173907_version20260623173907_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260623173907_version20260623173907", "target": "migrations_version20260623173907_version20260623173907_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260623173907_version20260623173907_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260623173907_version20260623173907", "target": "migrations_version20260623173907_version20260623173907_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260623173907_version20260623173907_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260623173907.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260623173907_version20260623173907_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260623173907.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260623173907_version20260623173907_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260623173907.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/24b56c5edca5c601b008f28dc8b642de32dceeeb408ec38cd5e3f7c40c3ce4f3.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260619170105_php", "label": "Version20260619170105.php", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L1"}, {"id": "migrations_version20260619170105_version20260619170105", "label": "Version20260619170105", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260619170105_version20260619170105_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L15"}, {"id": "migrations_version20260619170105_version20260619170105_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L20"}, {"id": "migrations_version20260619170105_version20260619170105_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260619170105.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260619170105_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260619170105_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260619170105_php", "target": "migrations_version20260619170105_version20260619170105", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260619170105_version20260619170105", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260619170105_version20260619170105", "target": "migrations_version20260619170105_version20260619170105_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260619170105_version20260619170105", "target": "migrations_version20260619170105_version20260619170105_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260619170105_version20260619170105_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260619170105_version20260619170105", "target": "migrations_version20260619170105_version20260619170105_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260619170105_version20260619170105_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260619170105.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260619170105_version20260619170105_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260619170105.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260619170105_version20260619170105_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260619170105.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/24beb2335672cb84cfa5a787618c7907663606aa14262af1b8ee93058c0ac265.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/24c6ca8b5c2e6f9b9783d446829be9cd4ffe5c6b550e0754d2d4521555382892.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/24f29fe0ee2cade4f4bef5572aa45086f444ab02d67f82d24228de49ccc25a2c.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2729943529cf37e386975819fc3476460e54b48445d26197f8d283d1b30e39b3.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/27e62ea86a4f3aa8539bd976213f57efbd6eb36b8aa4798fe52f2274571941c3.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615142236_php", "label": "Version20260615142236.php", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L1"}, {"id": "migrations_version20260615142236_version20260615142236", "label": "Version20260615142236", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260615142236_version20260615142236_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L15"}, {"id": "migrations_version20260615142236_version20260615142236_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L20"}, {"id": "migrations_version20260615142236_version20260615142236_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260615142236.php", "source_location": "L26"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615142236_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615142236_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260615142236_php", "target": "migrations_version20260615142236_version20260615142236", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615142236_version20260615142236", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260615142236_version20260615142236", "target": "migrations_version20260615142236_version20260615142236_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260615142236_version20260615142236", "target": "migrations_version20260615142236_version20260615142236_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260615142236_version20260615142236_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260615142236_version20260615142236", "target": "migrations_version20260615142236_version20260615142236_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L26", "weight": 1.0}, {"source": "migrations_version20260615142236_version20260615142236_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260615142236.php", "source_location": "L26", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260615142236_version20260615142236_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615142236.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260615142236_version20260615142236_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260615142236.php", "source_location": "L29", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/280ab9b877ed64d54dffc44a2ad84c717d69238390f63ff1ae02ee0b318322f1.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/283d4f4300d6202a7ab924d3bf130f7b2d90716a520b6d40ba35edd27cc88059.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2884592d17fcc3363768f899a4371d0ff2f25bc05bf4ab378647224aac695fc5.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/289adc397ac626b52b89755bfe8648fab0d7afbbdca30005de728b7697b9a214.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_10_appointment_architecture_md", "label": "architecture.md", "file_type": "document", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L1"}, {"id": "task_10_appointment_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f0_\u0645\u0627\u0698\u0648\u0644_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc", "label": "\u0645\u0639\u0645\u0627\u0631\u06cc \u2014 \u062a\u0633\u06a9 \u06f1\u06f0: \u0645\u0627\u0698\u0648\u0644 \u0646\u0648\u0628\u062a\u200c\u062f\u0647\u06cc", "file_type": "document", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L1"}, {"id": "task_10_appointment_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "label": "\u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627", "file_type": "document", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L3"}, {"id": "task_10_appointment_architecture_entity_appointment", "label": "Entity: Appointment", "file_type": "document", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L25"}, {"id": "task_10_appointment_architecture_slotcalculatorservice", "label": "SlotCalculatorService", "file_type": "document", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L66"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_docs_tasks_task_10_appointment_architecture_md", "target": "task_10_appointment_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f0_\u0645\u0627\u0698\u0648\u0644_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L1", "weight": 1.0}, {"source": "task_10_appointment_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f0_\u0645\u0627\u0698\u0648\u0644_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc", "target": "task_10_appointment_architecture_\u0633\u0627\u062e\u062a\u0627\u0631_\u0641\u0627\u06cc\u0644_\u0647\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L3", "weight": 1.0}, {"source": "task_10_appointment_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f0_\u0645\u0627\u0698\u0648\u0644_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc", "target": "task_10_appointment_architecture_entity_appointment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L25", "weight": 1.0}, {"source": "task_10_appointment_architecture_\u0645\u0639\u0645\u0627\u0631\u06cc_\u062a\u0633\u06a9_\u06f1\u06f0_\u0645\u0627\u0698\u0648\u0644_\u0646\u0648\u0628\u062a_\u062f\u0647\u06cc", "target": "task_10_appointment_architecture_slotcalculatorservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/tasks/task-10-appointment/architecture.md", "source_location": "L66", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
graphify-out/cache/ast/v0.8.44/28d707a2015952fbc60bde61faecf5e2c66e74a3eac3bb60554019e17b9a4988.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/295cae74decafadb2379fac86ac7ac1f420042d715f798d5024b03362560363d.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2a952887767f9f9811df0c99a9bc2ba9986defd5ea1caf3ed11080ce11c61f1f.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2ad075c6d333a42f3ac51adb0e1d8b444f64f3b5a01bc87f53d9522cb272ce68.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_seed_realistic_data_php", "label": "seed_realistic_data.php", "file_type": "code", "source_file": "seed_realistic_data.php", "source_location": "L1"}, {"id": "clinicpro_seed_realistic_data_newuuid", "label": "newUuid()", "file_type": "code", "source_file": "seed_realistic_data.php", "source_location": "L16"}, {"id": "clinicpro_seed_realistic_data_nextmobile", "label": "nextMobile()", "file_type": "code", "source_file": "seed_realistic_data.php", "source_location": "L28"}, {"id": "clinicpro_seed_realistic_data_makeschedule", "label": "makeSchedule()", "file_type": "code", "source_file": "seed_realistic_data.php", "source_location": "L34"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_seed_realistic_data_php", "target": "clinicpro_seed_realistic_data_newuuid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "seed_realistic_data.php", "source_location": "L16", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_seed_realistic_data_php", "target": "clinicpro_seed_realistic_data_nextmobile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "seed_realistic_data.php", "source_location": "L28", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_seed_realistic_data_php", "target": "clinicpro_seed_realistic_data_makeschedule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "seed_realistic_data.php", "source_location": "L34", "weight": 1.0}], "raw_calls": [{"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "sprintf", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L18", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L20", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L20", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L21", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L22", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L23", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L24", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L24", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_newuuid", "callee": "mt_rand", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L24", "receiver": null}, {"caller_nid": "clinicpro_seed_realistic_data_makeschedule", "callee": "json_encode", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/seed_realistic_data.php", "source_location": "L63", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/2bc99d1a7460fdf5be3711a0add4de54d4ab78a0fc16079680d4da58e4615997.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2c68d5ebfef56abee588aa5abb74a571918a0ed04eec7be7ea8039d9a12046ff.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260610111254_php", "label": "Version20260610111254.php", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L1"}, {"id": "migrations_version20260610111254_version20260610111254", "label": "Version20260610111254", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L13"}, {"id": "abstractmigration", "label": "AbstractMigration", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "migrations_version20260610111254_version20260610111254_getdescription", "label": ".getDescription()", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L15"}, {"id": "migrations_version20260610111254_version20260610111254_up", "label": ".up()", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L20"}, {"id": "schema", "label": "Schema", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L20"}, {"id": "migrations_version20260610111254_version20260610111254_down", "label": ".down()", "file_type": "code", "source_file": "migrations/Version20260610111254.php", "source_location": "L27"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260610111254_php", "target": "schema", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260610111254_php", "target": "abstractmigration", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_migrations_version20260610111254_php", "target": "migrations_version20260610111254_version20260610111254", "relation": "contains", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260610111254_version20260610111254", "target": "abstractmigration", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L13", "weight": 1.0}, {"source": "migrations_version20260610111254_version20260610111254", "target": "migrations_version20260610111254_version20260610111254_getdescription", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L15", "weight": 1.0}, {"source": "migrations_version20260610111254_version20260610111254", "target": "migrations_version20260610111254_version20260610111254_up", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L20", "weight": 1.0}, {"source": "migrations_version20260610111254_version20260610111254_up", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L20", "weight": 1.0, "context": "parameter_type"}, {"source": "migrations_version20260610111254_version20260610111254", "target": "migrations_version20260610111254_version20260610111254_down", "relation": "method", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L27", "weight": 1.0}, {"source": "migrations_version20260610111254_version20260610111254_down", "target": "schema", "relation": "references", "confidence": "EXTRACTED", "source_file": "migrations/Version20260610111254.php", "source_location": "L27", "weight": 1.0, "context": "parameter_type"}], "raw_calls": [{"caller_nid": "migrations_version20260610111254_version20260610111254_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260610111254.php", "source_location": "L23", "receiver": null}, {"caller_nid": "migrations_version20260610111254_version20260610111254_up", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260610111254.php", "source_location": "L24", "receiver": null}, {"caller_nid": "migrations_version20260610111254_version20260610111254_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260610111254.php", "source_location": "L30", "receiver": null}, {"caller_nid": "migrations_version20260610111254_version20260610111254_down", "callee": "addSql", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/migrations/Version20260610111254.php", "source_location": "L31", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/2cecd1fb0904f3aff92545007b33eb4bf970efd7b03cff7c53e6ca73dd2ef9e6.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2dce360a15f48c97610df47e5e6fbeea313e39fdc152e0d55bf687ec17784e47.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2ec793b26f528520f7f80ce26684ea383b09eb5081e94900a469447ee3091d8c.json
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "label": "Schedule.php", "file_type": "code", "source_file": "src/Schedule.php", "source_location": "L1"}, {"id": "src_schedule_schedule", "label": "Schedule", "file_type": "code", "source_file": "src/Schedule.php", "source_location": "L12"}, {"id": "scheduleproviderinterface", "label": "ScheduleProviderInterface", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "src_schedule_schedule_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Schedule.php", "source_location": "L15"}, {"id": "src_schedule_schedule_getschedule", "label": ".getSchedule()", "file_type": "code", "source_file": "src/Schedule.php", "source_location": "L20"}, {"id": "symfonyschedule", "label": "SymfonySchedule", "file_type": "code", "source_file": "src/Schedule.php", "source_location": "L20"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "expireappointmentsmessage", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "asschedule", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L6", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "recurringmessage", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L7", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "schedule", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L8", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "scheduleproviderinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L9", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "cacheinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L10", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_schedule_php", "target": "src_schedule_schedule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L12", "weight": 1.0}, {"source": "src_schedule_schedule", "target": "scheduleproviderinterface", "relation": "implements", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L13", "weight": 1.0}, {"source": "src_schedule_schedule", "target": "src_schedule_schedule_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L15", "weight": 1.0}, {"source": "src_schedule_schedule", "target": "src_schedule_schedule_getschedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L20", "weight": 1.0}, {"source": "src_schedule_schedule_getschedule", "target": "symfonyschedule", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/Schedule.php", "source_location": "L20", "weight": 1.0, "context": "return_type"}], "raw_calls": [{"caller_nid": "src_schedule_schedule_getschedule", "callee": "add", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Schedule.php", "source_location": "L22", "receiver": null}, {"caller_nid": "src_schedule_schedule_getschedule", "callee": "processOnlyLastMissedRun", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Schedule.php", "source_location": "L22", "receiver": null}, {"caller_nid": "src_schedule_schedule_getschedule", "callee": "stateful", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Schedule.php", "source_location": "L22", "receiver": null}, {"caller_nid": "src_schedule_schedule_getschedule", "callee": "RecurringMessage", "is_member_call": false, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Schedule.php", "source_location": "L26", "receiver": null}]}
|
||||
graphify-out/cache/ast/v0.8.44/2f112d7fbfee7d1a0ec047535854cfb1bf8088099d4f5219e23f9458380f90ce.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2fdfac8ae3f0fc238d5398ffcc770d33470901fe1d371043f2762ca15a0c6e50.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/2ff242b1af4561510027d22977acd30bae76642ca609f13b04897d43ce3155ce.json
Vendored
+1
File diff suppressed because one or more lines are too long
graphify-out/cache/ast/v0.8.44/30328580047b9f68944c7cb1942caf3f7fab3ade452fe23aa0a7f30b8aa53885.json
Vendored
+1
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user