Refactor SMS Provider Classes to Support Nullable API Key and Sender

- Updated KavehNegarProvider and RanginehProvider constructors to accept nullable API key and sender parameters.
- Adjusted methods in both providers to handle cases where the API key or sender may not be set, preventing potential TypeErrors.
- Modified community IDs in graph.json for various entities to reflect updated associations.
- Updated manifest.json with new modification times and AST hashes for KavehNegarProvider and RanginehProvider.
- Added new AST cache files for KavehNegarProvider and RanginehProvider reflecting the latest structure and relationships.
This commit is contained in:
hamed
2026-06-29 19:31:42 +03:30
parent afb5b28272
commit 830f7e8d0c
9 changed files with 109 additions and 93 deletions
+1
View File
@@ -666,6 +666,7 @@
"664": "Community 664",
"665": "Community 665",
"666": "Community 666",
"667": "Community 667",
"668": "Community 668",
"669": "Community 669",
"670": "Community 670",
+27 -18
View File
@@ -1,16 +1,16 @@
# Graph Report - clinicpro (2026-06-29)
## Corpus Check
- 646 files · ~446,886 words
- 646 files · ~446,941 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 8212 nodes · 11323 edges · 671 communities (549 shown, 122 thin omitted)
- 8212 nodes · 11323 edges · 672 communities (551 shown, 121 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 261 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `97958ecc`
- Built from commit: `afb5b282`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -668,6 +668,7 @@
- [[_COMMUNITY_Community 664|Community 664]]
- [[_COMMUNITY_Community 665|Community 665]]
- [[_COMMUNITY_Community 666|Community 666]]
- [[_COMMUNITY_Community 667|Community 667]]
- [[_COMMUNITY_Community 668|Community 668]]
- [[_COMMUNITY_Community 669|Community 669]]
- [[_COMMUNITY_Community 671|Community 671]]
@@ -699,7 +700,7 @@
## Import Cycles
- None detected.
## Communities (671 total, 122 thin omitted)
## Communities (672 total, 121 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
@@ -915,7 +916,7 @@ Nodes (26): الزامات UI, باگ‌فیکس صفحه نوبت‌ها, با
### Community 53 - "Community 53"
Cohesion: 0.10
Nodes (14): ClaimItemRepository, ClinicStaffRepository, PreRegistrationRepository, SessionServiceRepository, SmsSettingsRepository, ServiceEntityRepository, SmsSettings, ManagerRegistry (+6 more)
Nodes (13): ClaimItemRepository, PreRegistrationRepository, SessionServiceRepository, SiteConfigRepository, SmsSettingsRepository, ServiceEntityRepository, SmsSettings, ManagerRegistry (+5 more)
### Community 54 - "Community 54"
Cohesion: 0.10
@@ -1035,7 +1036,7 @@ Nodes (29): devDependencies, @babel/core, @babel/preset-env, @babel/preset-react
### Community 86 - "Community 86"
Cohesion: 0.07
Nodes (14): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+6 more)
Nodes (13): AppointmentExpiryServiceTest, LowTierFixesTest, SendCodeMobileRateLimitTest, ClaimsListPaginationTest, ServiceItemStaffOwnershipTest, EntityManagerInterface, KernelBrowser, CommentPaginationTest (+5 more)
### Community 87 - "Community 87"
Cohesion: 0.10
@@ -1475,7 +1476,7 @@ Nodes (13): Endpoint ها, PATCH /api/v1/secretary/{uuid}, POST /api/v1/secretar
### Community 201 - "Community 201"
Cohesion: 0.15
Nodes (13): Admin API, Clinic Invitation Management, GET `/api/v1/admin/secretaries`, GET /api/v1/admin/settings, GET `/api/v1/admin/settlements`, PATCH /api/v1/admin/settings, Query Parameters, Query Parameters (+5 more)
Nodes (13): Admin API, Clinic Invitation Management, GET `/api/v1/admin/payments`, GET /api/v1/admin/settings, GET `/api/v1/admin/settlements`, PATCH /api/v1/admin/settings, Payment Management, Query Parameters (+5 more)
### Community 202 - "Community 202"
Cohesion: 0.15
@@ -1855,7 +1856,7 @@ Nodes (16): آماده‌سازی پروژه ClinicPro برای دیپلوی ر
### Community 304 - "Community 304"
Cohesion: 0.22
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 36. 🟢 `GET` get my rate, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخ‌ها, پاسخ‌ها (+1 more)
Nodes (9): 29. 🟢 `GET` clinic list 🆕, 30. 🟢 `GET` get 🆕, 33. 🔵 `POST` image_clinic, 6. کلینیک (Clinic), هدرهای اضافی, پارامترهای Query, پاسخ‌ها, پاسخ‌ها (+1 more)
### Community 306 - "Community 306"
Cohesion: 0.07
@@ -2205,9 +2206,13 @@ Nodes (4): initiate(), verify(), PaymentInitResult, PaymentVerifyResult
Cohesion: 0.38
Nodes (5): Rate, RateRepository, Doctor, ManagerRegistry, User
### Community 405 - "Community 405"
Cohesion: 0.47
Nodes (3): CommissionService, Payment, Representation
### Community 406 - "Community 406"
Cohesion: 0.23
Nodes (5): AbstractMigration, Schema, Version20260609134112, Schema, Version20260625135132
Nodes (5): AbstractMigration, Schema, Version20260609133546, Schema, Version20260625135132
### Community 418 - "Community 418"
Cohesion: 0.17
@@ -2446,8 +2451,8 @@ Cohesion: 0.40
Nodes (4): ساختار فایل‌ها, معماری — تسک ۱۶: ماژول داشبورد دکتر, نمودار جریان, کوئری درآمد سالانه (بر اساس ماه‌های شمسی)
### Community 522 - "Community 522"
Cohesion: 0.20
Nodes (7): WalletTransactionRepository, CommissionService, ManagerRegistry, User, Payment, Representation, WalletTransaction
Cohesion: 0.24
Nodes (5): WalletTransactionRepository, WalletTransactionsPaginationTest, ManagerRegistry, User, WalletTransaction
### Community 523 - "Community 523"
Cohesion: 0.43
@@ -2709,6 +2714,10 @@ Nodes (3): نقاط ضعف, نقاط قوت, ۶. تحلیل API Design
Cohesion: 0.40
Nodes (5): DELETE `/api/v1/billing/tenant-insurances/{uuid}`, GET `/api/v1/billing/tenant-insurances`, PATCH `/api/v1/billing/tenant-insurances/{uuid}`, POST `/api/v1/billing/tenant-insurances`, TenantInsurance — قراردادهای بیمه‌ی tenant (فاز ۱ سیستم صورتحساب)
### Community 607 - "Community 607"
Cohesion: 0.39
Nodes (3): ClinicStaffRepository, ClinicStaff, ManagerRegistry
### Community 608 - "Community 608"
Cohesion: 0.40
Nodes (5): 37. 🔵 `POST` post, Request Body, مثال Request, هدرهای اضافی, پاسخ‌ها
@@ -2769,10 +2778,6 @@ Nodes (3): InvoiceItemRepository, InvoiceItem, ManagerRegistry
Cohesion: 0.40
Nodes (5): ۲.۸ تنظیمات نوبت (Appointment Settings), ۲.۸.۱ برنامه هفتگی (Weekly Schedule), ۲.۸.۲ تعطیلات (Holidays), ۲.۸.۳ لغو تعطیل (Date Override), ۲.۸.۴ الگوریتم محاسبه اسلات‌های خالی
### Community 649 - "Community 649"
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/payments`, Payment Management, Query Parameters, Response `200`
### Community 650 - "Community 650"
Cohesion: 0.40
Nodes (3): Props, StatTone, TONE
@@ -2822,8 +2827,8 @@ Cohesion: 0.50
Nodes (4): ۲.۱۳ نظرات، لایک و امتیازدهی, ۲.۱۳.۱ نظر (Comment), ۲.۱۳.۲ لایک (Like), ۲.۱۳.۳ امتیاز (Rate)
### Community 662 - "Community 662"
Cohesion: 0.67
Nodes (3): 33. 🔵 `POST` image_clinic, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.50
Nodes (4): GET `/api/v1/admin/secretaries`, Query Parameters, Response `200`, Secretary Management
### Community 664 - "Community 664"
Cohesion: 0.67
@@ -2833,6 +2838,10 @@ Nodes (3): 42. 🔴 `DELETE` delete, هدرهای اضافی, پاسخ‌ها
Cohesion: 0.67
Nodes (3): 43. 🟢 `GET` get, هدرهای اضافی, پاسخ‌ها
### Community 667 - "Community 667"
Cohesion: 0.67
Nodes (3): 36. 🟢 `GET` get my rate, هدرهای اضافی, پاسخ‌ها
### Community 671 - "Community 671"
Cohesion: 0.67
Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخ‌ها
@@ -2840,7 +2849,7 @@ Nodes (3): 34. 🔵 `POST` image logo, هدرهای اضافی, پاسخ‌ها
## Knowledge Gaps
- **3533 isolated node(s):** `ALLOWED_ROLES`, `Pricing`, `TenantInsurance`, `CoverageRow`, `Draft` (+3528 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **122 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **121 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
@@ -0,0 +1 @@
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_ranginehprovider_php", "label": "RanginehProvider.php", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L1"}, {"id": "provider_ranginehprovider_ranginehprovider", "label": "RanginehProvider", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L7"}, {"id": "smsproviderinterface", "label": "SmsProviderInterface", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "provider_ranginehprovider_ranginehprovider_construct", "label": ".__construct()", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L11"}, {"id": "provider_ranginehprovider_ranginehprovider_getname", "label": ".getName()", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L19"}, {"id": "provider_ranginehprovider_ranginehprovider_send", "label": ".send()", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L21"}, {"id": "provider_ranginehprovider_ranginehprovider_sendtemplate", "label": ".sendTemplate()", "file_type": "code", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L35"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_ranginehprovider_php", "target": "httpclientinterface", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L5", "weight": 1.0}, {"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_src_sms_provider_ranginehprovider_php", "target": "provider_ranginehprovider_ranginehprovider", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L7", "weight": 1.0}, {"source": "provider_ranginehprovider_ranginehprovider", "target": "smsproviderinterface", "relation": "implements", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L7", "weight": 1.0}, {"source": "provider_ranginehprovider_ranginehprovider", "target": "provider_ranginehprovider_ranginehprovider_construct", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L11", "weight": 1.0}, {"source": "provider_ranginehprovider_ranginehprovider", "target": "provider_ranginehprovider_ranginehprovider_getname", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L19", "weight": 1.0}, {"source": "provider_ranginehprovider_ranginehprovider", "target": "provider_ranginehprovider_ranginehprovider_send", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L21", "weight": 1.0}, {"source": "provider_ranginehprovider_ranginehprovider", "target": "provider_ranginehprovider_ranginehprovider_sendtemplate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/Sms/Provider/RanginehProvider.php", "source_location": "L35", "weight": 1.0}], "raw_calls": [{"caller_nid": "provider_ranginehprovider_ranginehprovider_send", "callee": "request", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Provider/RanginehProvider.php", "source_location": "L24", "receiver": null}, {"caller_nid": "provider_ranginehprovider_ranginehprovider_send", "callee": "getStatusCode", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Provider/RanginehProvider.php", "source_location": "L29", "receiver": null}, {"caller_nid": "provider_ranginehprovider_ranginehprovider_sendtemplate", "callee": "request", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Provider/RanginehProvider.php", "source_location": "L38", "receiver": null}, {"caller_nid": "provider_ranginehprovider_ranginehprovider_sendtemplate", "callee": "getStatusCode", "is_member_call": true, "source_file": "/Users/hamed/pj/my_pj/clinic_pro/clinicpro/src/Sms/Provider/RanginehProvider.php", "source_location": "L47", "receiver": null}]}
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+62 -62
View File
@@ -8562,7 +8562,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "migrations_version20260609133546",
"community": 405,
"community": 406,
"norm_label": "version20260609133546.php"
},
{
@@ -8572,7 +8572,7 @@
"source_location": "L13",
"_origin": "ast",
"id": "migrations_version20260609133546_version20260609133546",
"community": 405,
"community": 406,
"norm_label": "version20260609133546"
},
{
@@ -8582,7 +8582,7 @@
"source_location": "L15",
"_origin": "ast",
"id": "migrations_version20260609133546_version20260609133546_getdescription",
"community": 405,
"community": 406,
"norm_label": ".getdescription()"
},
{
@@ -8592,7 +8592,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609133546_version20260609133546_up",
"community": 405,
"community": 406,
"norm_label": ".up()"
},
{
@@ -8602,7 +8602,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609133546_php_schema",
"community": 405,
"community": 406,
"norm_label": "schema"
},
{
@@ -8612,7 +8612,7 @@
"source_location": "L28",
"_origin": "ast",
"id": "migrations_version20260609133546_version20260609133546_down",
"community": 405,
"community": 406,
"norm_label": ".down()"
},
{
@@ -8622,7 +8622,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "migrations_version20260609134112",
"community": 406,
"community": 649,
"norm_label": "version20260609134112.php"
},
{
@@ -8632,7 +8632,7 @@
"source_location": "L13",
"_origin": "ast",
"id": "migrations_version20260609134112_version20260609134112",
"community": 406,
"community": 649,
"norm_label": "version20260609134112"
},
{
@@ -8642,7 +8642,7 @@
"source_location": "L15",
"_origin": "ast",
"id": "migrations_version20260609134112_version20260609134112_getdescription",
"community": 406,
"community": 649,
"norm_label": ".getdescription()"
},
{
@@ -8652,7 +8652,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609134112_version20260609134112_up",
"community": 406,
"community": 649,
"norm_label": ".up()"
},
{
@@ -8662,7 +8662,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "migrations_version20260609134112_php_schema",
"community": 406,
"community": 649,
"norm_label": "schema"
},
{
@@ -8672,7 +8672,7 @@
"source_location": "L31",
"_origin": "ast",
"id": "migrations_version20260609134112_version20260609134112_down",
"community": 406,
"community": 649,
"norm_label": ".down()"
},
{
@@ -22682,7 +22682,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "repository_siteconfigrepository",
"community": 607,
"community": 53,
"norm_label": "siteconfigrepository.php"
},
{
@@ -22692,7 +22692,7 @@
"source_location": "L9",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository",
"community": 607,
"community": 53,
"norm_label": "siteconfigrepository"
},
{
@@ -22702,7 +22702,7 @@
"source_location": "L40",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_construct",
"community": 607,
"community": 53,
"norm_label": ".__construct()"
},
{
@@ -22712,7 +22712,7 @@
"source_location": "L40",
"_origin": "ast",
"id": "src_config_repository_siteconfigrepository_php_managerregistry",
"community": 607,
"community": 53,
"norm_label": "managerregistry"
},
{
@@ -22722,7 +22722,7 @@
"source_location": "L45",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_get",
"community": 607,
"community": 53,
"norm_label": ".get()"
},
{
@@ -22732,7 +22732,7 @@
"source_location": "L54",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_getall",
"community": 607,
"community": 53,
"norm_label": ".getall()"
},
{
@@ -22742,7 +22742,7 @@
"source_location": "L70",
"_origin": "ast",
"id": "repository_siteconfigrepository_siteconfigrepository_set",
"community": 607,
"community": 53,
"norm_label": ".set()"
},
{
@@ -33112,7 +33112,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "service_commissionservice",
"community": 522,
"community": 405,
"norm_label": "commissionservice.php"
},
{
@@ -33122,7 +33122,7 @@
"source_location": "L20",
"_origin": "ast",
"id": "service_commissionservice_commissionservice",
"community": 522,
"community": 405,
"norm_label": "commissionservice"
},
{
@@ -33132,7 +33132,7 @@
"source_location": "L22",
"_origin": "ast",
"id": "service_commissionservice_commissionservice_construct",
"community": 522,
"community": 405,
"norm_label": ".__construct()"
},
{
@@ -33142,7 +33142,7 @@
"source_location": "L35",
"_origin": "ast",
"id": "service_commissionservice_commissionservice_processappointment",
"community": 522,
"community": 405,
"norm_label": ".processappointment()"
},
{
@@ -33152,7 +33152,7 @@
"source_location": "L35",
"_origin": "ast",
"id": "src_settlement_service_commissionservice_php_payment",
"community": 522,
"community": 405,
"norm_label": "payment"
},
{
@@ -33162,7 +33162,7 @@
"source_location": "L56",
"_origin": "ast",
"id": "service_commissionservice_commissionservice_processsubscription",
"community": 522,
"community": 405,
"norm_label": ".processsubscription()"
},
{
@@ -33172,7 +33172,7 @@
"source_location": "L73",
"_origin": "ast",
"id": "service_commissionservice_commissionservice_resolverep",
"community": 522,
"community": 405,
"norm_label": ".resolverep()"
},
{
@@ -33182,7 +33182,7 @@
"source_location": "L73",
"_origin": "ast",
"id": "src_settlement_service_commissionservice_php_representation",
"community": 522,
"community": 405,
"norm_label": "representation"
},
{
@@ -33192,7 +33192,7 @@
"source_location": "L80",
"_origin": "ast",
"id": "service_commissionservice_commissionservice_settle",
"community": 522,
"community": 405,
"norm_label": ".settle()"
},
{
@@ -35349,7 +35349,7 @@
"label": ".key()",
"file_type": "code",
"source_file": "src/Sms/Provider/KavehNegarProvider.php",
"source_location": "L19",
"source_location": "L21",
"_origin": "ast",
"id": "provider_kavehnegarprovider_kavehnegarprovider_key",
"community": 82,
@@ -35359,7 +35359,7 @@
"label": ".sender()",
"file_type": "code",
"source_file": "src/Sms/Provider/KavehNegarProvider.php",
"source_location": "L20",
"source_location": "L22",
"_origin": "ast",
"id": "provider_kavehnegarprovider_kavehnegarprovider_sender",
"community": 82,
@@ -35369,7 +35369,7 @@
"label": ".getName()",
"file_type": "code",
"source_file": "src/Sms/Provider/KavehNegarProvider.php",
"source_location": "L22",
"source_location": "L24",
"_origin": "ast",
"id": "provider_kavehnegarprovider_kavehnegarprovider_getname",
"community": 82,
@@ -35379,7 +35379,7 @@
"label": ".send()",
"file_type": "code",
"source_file": "src/Sms/Provider/KavehNegarProvider.php",
"source_location": "L24",
"source_location": "L26",
"_origin": "ast",
"id": "provider_kavehnegarprovider_kavehnegarprovider_send",
"community": 82,
@@ -35389,7 +35389,7 @@
"label": ".sendTemplate()",
"file_type": "code",
"source_file": "src/Sms/Provider/KavehNegarProvider.php",
"source_location": "L44",
"source_location": "L46",
"_origin": "ast",
"id": "provider_kavehnegarprovider_kavehnegarprovider_sendtemplate",
"community": 82,
@@ -35429,7 +35429,7 @@
"label": ".getName()",
"file_type": "code",
"source_file": "src/Sms/Provider/RanginehProvider.php",
"source_location": "L17",
"source_location": "L19",
"_origin": "ast",
"id": "provider_ranginehprovider_ranginehprovider_getname",
"community": 82,
@@ -35439,7 +35439,7 @@
"label": ".send()",
"file_type": "code",
"source_file": "src/Sms/Provider/RanginehProvider.php",
"source_location": "L19",
"source_location": "L21",
"_origin": "ast",
"id": "provider_ranginehprovider_ranginehprovider_send",
"community": 82,
@@ -35449,7 +35449,7 @@
"label": ".sendTemplate()",
"file_type": "code",
"source_file": "src/Sms/Provider/RanginehProvider.php",
"source_location": "L33",
"source_location": "L35",
"_origin": "ast",
"id": "provider_ranginehprovider_ranginehprovider_sendtemplate",
"community": 82,
@@ -36982,7 +36982,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "repository_clinicstaffrepository",
"community": 53,
"community": 607,
"norm_label": "clinicstaffrepository.php"
},
{
@@ -36992,7 +36992,7 @@
"source_location": "L9",
"_origin": "ast",
"id": "repository_clinicstaffrepository_clinicstaffrepository",
"community": 53,
"community": 607,
"norm_label": "clinicstaffrepository"
},
{
@@ -37002,7 +37002,7 @@
"source_location": "L11",
"_origin": "ast",
"id": "repository_clinicstaffrepository_clinicstaffrepository_construct",
"community": 53,
"community": 607,
"norm_label": ".__construct()"
},
{
@@ -37012,7 +37012,7 @@
"source_location": "L11",
"_origin": "ast",
"id": "src_staff_repository_clinicstaffrepository_php_managerregistry",
"community": 53,
"community": 607,
"norm_label": "managerregistry"
},
{
@@ -37022,7 +37022,7 @@
"source_location": "L16",
"_origin": "ast",
"id": "repository_clinicstaffrepository_clinicstaffrepository_findbyuuid",
"community": 53,
"community": 607,
"norm_label": ".findbyuuid()"
},
{
@@ -37032,7 +37032,7 @@
"source_location": "L16",
"_origin": "ast",
"id": "src_staff_repository_clinicstaffrepository_php_clinicstaff",
"community": 53,
"community": 607,
"norm_label": "clinicstaff"
},
{
@@ -37042,7 +37042,7 @@
"source_location": "L21",
"_origin": "ast",
"id": "repository_clinicstaffrepository_clinicstaffrepository_findbyentity",
"community": 53,
"community": 607,
"norm_label": ".findbyentity()"
},
{
@@ -37052,7 +37052,7 @@
"source_location": "L37",
"_origin": "ast",
"id": "repository_clinicstaffrepository_clinicstaffrepository_save",
"community": 53,
"community": 607,
"norm_label": ".save()"
},
{
@@ -41092,7 +41092,7 @@
"source_location": "L1",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest",
"community": 86,
"community": 522,
"norm_label": "wallettransactionspaginationtest.php"
},
{
@@ -41102,7 +41102,7 @@
"source_location": "L12",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest_wallettransactionspaginationtest",
"community": 86,
"community": 522,
"norm_label": "wallettransactionspaginationtest"
},
{
@@ -41112,7 +41112,7 @@
"source_location": "L14",
"_origin": "ast",
"id": "settlement_wallettransactionspaginationtest_wallettransactionspaginationtest_testpaginatesandreportstotals",
"community": 86,
"community": 522,
"norm_label": ".testpaginatesandreportstotals()"
},
{
@@ -58522,7 +58522,7 @@
"source_location": "L3153",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_33_post_image_clinic",
"community": 662,
"community": 304,
"norm_label": "33. \ud83d\udd35 `post` image_clinic"
},
{
@@ -58532,7 +58532,7 @@
"source_location": "L3161",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u0647\u062f\u0631\u0647\u0627\u06cc_\u0627\u0636\u0627\u0641\u06cc_3161",
"community": 662,
"community": 304,
"norm_label": "\u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc"
},
{
@@ -58542,7 +58542,7 @@
"source_location": "L3169",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u067e\u0627\u0633\u062e_\u0647\u0627_3169",
"community": 662,
"community": 304,
"norm_label": "\u067e\u0627\u0633\u062e\u200c\u0647\u0627"
},
{
@@ -58632,7 +58632,7 @@
"source_location": "L3250",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_36_get_get_my_rate",
"community": 304,
"community": 667,
"norm_label": "36. \ud83d\udfe2 `get` get my rate"
},
{
@@ -58642,7 +58642,7 @@
"source_location": "L3260",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u0647\u062f\u0631\u0647\u0627\u06cc_\u0627\u0636\u0627\u0641\u06cc_3260",
"community": 304,
"community": 667,
"norm_label": "\u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc"
},
{
@@ -58652,7 +58652,7 @@
"source_location": "L3267",
"_origin": "ast",
"id": "docs_clinicpro_manual_v2_\u067e\u0627\u0633\u062e_\u0647\u0627_3267",
"community": 304,
"community": 667,
"norm_label": "\u067e\u0627\u0633\u062e\u200c\u0647\u0627"
},
{
@@ -63212,7 +63212,7 @@
"source_location": "L585",
"_origin": "ast",
"id": "api_admin_payment_management",
"community": 649,
"community": 201,
"norm_label": "payment management"
},
{
@@ -63222,7 +63222,7 @@
"source_location": "L587",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_payments",
"community": 649,
"community": 201,
"norm_label": "get `/api/v1/admin/payments`"
},
{
@@ -63232,7 +63232,7 @@
"source_location": "L593",
"_origin": "ast",
"id": "api_admin_query_parameters_593",
"community": 649,
"community": 201,
"norm_label": "query parameters"
},
{
@@ -63242,7 +63242,7 @@
"source_location": "L600",
"_origin": "ast",
"id": "api_admin_response_200_600",
"community": 649,
"community": 201,
"norm_label": "response `200`"
},
{
@@ -63332,7 +63332,7 @@
"source_location": "L696",
"_origin": "ast",
"id": "api_admin_secretary_management",
"community": 201,
"community": 662,
"norm_label": "secretary management"
},
{
@@ -63342,7 +63342,7 @@
"source_location": "L698",
"_origin": "ast",
"id": "api_admin_get_api_v1_admin_secretaries",
"community": 201,
"community": 662,
"norm_label": "get `/api/v1/admin/secretaries`"
},
{
@@ -63352,7 +63352,7 @@
"source_location": "L704",
"_origin": "ast",
"id": "api_admin_query_parameters_704",
"community": 201,
"community": 662,
"norm_label": "query parameters"
},
{
@@ -63362,7 +63362,7 @@
"source_location": "L711",
"_origin": "ast",
"id": "api_admin_response_200_711",
"community": 201,
"community": 662,
"norm_label": "response `200`"
},
{
@@ -199358,5 +199358,5 @@
}
],
"hyperedges": [],
"built_at_commit": "97958ecc7d8793c324d112089f763d6f9702f2b9"
"built_at_commit": "afb5b2827298c9e2301197713a975f0a376c8475"
}
+4 -4
View File
@@ -1650,13 +1650,13 @@
"semantic_hash": ""
},
"src/Sms/Provider/KavehNegarProvider.php": {
"mtime": 1781516938.5808463,
"ast_hash": "204026c439d9739c98d9f5d8e0c444a6",
"mtime": 1782748838.317826,
"ast_hash": "b014a73717612d8c6196b21513a6a460",
"semantic_hash": ""
},
"src/Sms/Provider/RanginehProvider.php": {
"mtime": 1781013629.869744,
"ast_hash": "e8074b887064d59396270ee0760d6c68",
"mtime": 1782748853.3315036,
"ast_hash": "6ddebcd3c562b18563b270e3624819d5",
"semantic_hash": ""
},
"src/Sms/Provider/SmsProviderInterface.php": {
+6 -4
View File
@@ -12,12 +12,14 @@ class KavehNegarProvider implements SmsProviderInterface
public function __construct(
private readonly HttpClientInterface $httpClient,
private readonly SiteConfigRepository $configRepo,
private readonly string $apiKey = '',
private readonly string $sender = '',
// Nullable: env `%env(default::KAVENEGAR_API_KEY)%` resolves to null when unset
// (the real key normally comes from DB site config below, not env).
private readonly ?string $apiKey = null,
private readonly ?string $sender = null,
) {}
private function key(): string { return $this->configRepo->get('kavenegar_api_key') ?: $this->apiKey; }
private function sender(): string { return $this->configRepo->get('kavenegar_sender') ?: $this->sender; }
private function key(): string { return $this->configRepo->get('kavenegar_api_key') ?: ($this->apiKey ?? ''); }
private function sender(): string { return $this->configRepo->get('kavenegar_sender') ?: ($this->sender ?? ''); }
public function getName(): string { return 'kavenegar'; }
+6 -4
View File
@@ -10,8 +10,10 @@ class RanginehProvider implements SmsProviderInterface
public function __construct(
private readonly HttpClientInterface $httpClient,
private readonly string $apiKey,
private readonly string $sender,
// Nullable: env `%env(default::RANGINEH_API_KEY)%` resolves to null when unset,
// which would crash construction (TypeError) before the provider is ever used.
private readonly ?string $apiKey = null,
private readonly ?string $sender = null,
) {}
public function getName(): string { return 'rangineh'; }
@@ -20,8 +22,8 @@ class RanginehProvider implements SmsProviderInterface
{
try {
$resp = $this->httpClient->request('POST', self::BASE . '/send', [
'json' => ['from' => $this->sender, 'to' => [$mobile], 'text' => $message],
'headers' => ['ApiKey' => $this->apiKey],
'json' => ['from' => $this->sender ?? '', 'to' => [$mobile], 'text' => $message],
'headers' => ['ApiKey' => $this->apiKey ?? ''],
'timeout' => 10,
]);
return $resp->getStatusCode() === 200;