Commit Graph
337 Commits
Author SHA1 Message Date
hamed a2c809b7de Add SmsServiceLookupOnlyTest AST and migration for template_code in sms_logs
- Created a new AST JSON file for SmsServiceLookupOnlyTest.php, detailing nodes, edges, and raw calls for better code analysis.
- Added a new migration (Version20260707202553) to alter the sms_logs table by adding a nullable template_code column.
2026-07-08 00:03:33 +03:30
hamed 2982eaa7e3 update compose 2026-07-07 15:07:34 +03:30
hamed 87f4d1695f Add CorsRegexEnvProcessor and corresponding tests
- Implemented CorsRegexEnvProcessor to build CORS origin regex from a comma-separated host list (ALLOWED_FRONTEND_HOSTS).
- Added tests for CorsRegexEnvProcessor to validate regex generation and matching behavior.
- Created JSON files for AST representation of the new classes and tests.
2026-07-07 14:58:41 +03:30
hamed 4ee1524f31 Add AST JSON files for NotificationMobileController and manifest.json; create SmsServiceLookupOnlyTest for SMS service functionality 2026-07-07 14:41:22 +03:30
hamed 57d081246f feat: update scheduler_default transport to disable retries for transient failures 2026-07-07 13:00:42 +03:30
hamed adbf401ed8 feat: update cancel mutation to set appointment status to 'cancelled_by_doctor' 2026-07-07 11:47:43 +03:30
hamed fd553b2c4f feat: add promotional video script for Clinic Pro motion graphics 2026-07-05 15:25:53 +03:30
hamed a21b0ee4ab feat: update SMS templates and logic to ensure required tokens are present for Kavenegar integration 2026-07-05 11:54:12 +03:30
hamed 87d94801f8 feat: add Kavenegar template guide and update PreRegistrationController to use appUrl 2026-07-05 11:27:10 +03:30
hamed 969dc9651f Refactor SMS sending to use KavehNegar VerifyLookup templates
- Removed SmsTextResolver dependency from multiple services and controllers.
- Introduced dispatchTemplate method in SmsService to handle SMS sending with templates.
- Updated existing SMS sending logic across various services (OtpService, PreRegistrationController, ClinicInvitationService, PaymentManager, SecretaryController, RepresentationActionController) to utilize the new dispatchTemplate method.
- Enhanced SmsMessageTemplate entity to include kavenegar_template and token_map fields.
- Created migration to add new fields to the sms_message_templates table and populate them with existing data.
- Updated SeedSmsMessageTemplatesCommand to handle new template structure.
- Added documentation for the new SMS template structure and usage.
2026-07-05 11:20:53 +03:30
hamed 828e3552c0 feat(subscription): implement effective plan logic and update free plan features 2026-07-05 10:46:31 +03:30
hamed f3ca6d844f feat: implement Portal component and refactor modals to use it for improved positioning 2026-07-04 22:05:27 +03:30
hamed ae1e40aeee feat: enable portal rendering for ImageCropModal component 2026-07-04 21:55:14 +03:30
hamed 6ade17a5b4 feat: implement OTP sending via Kavenegar VerifyLookup and add image cropping modal
- Added support for sending OTP messages using Kavenegar's VerifyLookup method, ensuring compliance with specified token formatting and template usage.
- Updated OtpService to handle new template parameters and fallback mechanisms.
- Introduced ImageCropModal component for cropping images with a user-friendly interface.
- Created utility function for cropping images and generating downloadable files.
2026-07-04 21:50:55 +03:30
hamed 1bb9cedd22 feat(auth): add optional domain parameter to send OTP code for site personalization 2026-07-04 11:01:54 +03:30
hamed 8df7b2f2e0 Implement feature X to enhance user experience and optimize performance 2026-07-03 12:42:16 +03:30
hamed 426cc500cc feat(cities): update site name for نوبت 724 to remove redundancy 2026-07-03 12:30:03 +03:30
hamed 9cabdb33e8 feat(assets): replace logo image with SVG format and update favicon; adjust theme color in manifest 2026-07-03 12:00:52 +03:30
hamed 913a8c4bfa chore(logo): remove unused logo image file 2026-07-03 12:00:48 +03:30
hamed 2a420f5899 feat(cities): update site name for نوبت 724 and add new cities (دهدشت, بهبهان) with relevant details 2026-07-03 11:37:48 +03:30
hamed 6dbbeb1c70 feat(currency): update currency display to toman in admin panel; implement conversion functions for rial to toman and vice versa 2026-07-03 10:31:17 +03:30
hamed 34d521434f feat(payment): implement expiration handling for appointment payments 2026-07-03 09:53:55 +03:30
hamed ab83a64d9d Refactor code structure for improved readability and maintainability 2026-07-02 21:40:32 +03:30
hamed 1c81c6f2e5 Add JSON files for Payment Gateway Interface and API documentation updates
- Created a new JSON file for the PaymentGatewayInterface.php, detailing its methods and return types.
- Added a JSON file for payment.md, documenting various API endpoints and their parameters, responses, and errors.
- Introduced a JSON file for fix-admin-modal-and-calendar.md, outlining issues and solutions related to admin modal and calendar functionalities.
2026-07-02 21:22:14 +03:30
hamed 1804b4215d feat(sms): add doctor appointment notification SMS for paid appointments 2026-07-02 21:11:17 +03:30
hamedandClaude Opus 4.8 10be1728ff fix(payment): skip Shaparak IP allowlist for browser-redirect gateways (mellat/sep)
Mellat/SEP return the result via a user-browser redirect (POST/GET), so the
received IP is the user's, not Shaparak's. The IP allowlist therefore rejected
every real callback — including user cancel — with 'forbidden'. Security is
provided by the tamper check (RefId/SaleOrderId) and server-side verify.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 20:33:35 +03:30
hamed 27b2d66afa feat(payment): enhance Mellat gateway with sandbox support and WSDL configuration 2026-07-02 20:15:41 +03:30
hamed 1b171a82f4 feat(payment): add refund and reversal functionality to payment gateways
- Implemented `refund` and `reverse` methods in `PaymentGatewayInterface`.
- Added `PaymentRefundResult` class to handle refund operation results.
- Enhanced `MockGateway` and `SepGateway` to support refund and reversal operations.
- Updated `PaymentManager` to include `refundPayment` and `reversePayment` methods for handling refunds and reversals in transactions.
- Modified `ClinicSubscriptionRepository` and `SubscriptionService` to manage subscriptions during refunds.
- Added admin API endpoints for processing refunds and reversals.
- Updated security headers to allow form actions to the sandbox environment.
- Documented the new refund and reversal features in the API documentation.
2026-07-02 18:45:34 +03:30
hamed 6bb47d343d feat(payment): update Mellat gateway implementation and enhance security checks 2026-07-02 17:51:50 +03:30
hamed e487f7437a feat(sms-wallet): add display for SMS price with Banknotes icon 2026-07-02 17:12:50 +03:30
hamed 7f5c65129c feat(payment): unify payment flow with new pure redirect entry and update related endpoints 2026-07-02 17:08:50 +03:30
hamed c247ac2c80 feat(payment): implement PaymentManager for handling payment logic and callbacks
- Refactor PaymentController to delegate payment processing to PaymentManager.
- Add findByOrderIdForUpdate method in PaymentRepository for pessimistic locking.
- Create PaymentLog entity and repository for auditing payment actions.
- Implement startGatewayHandoff and processCallback methods in PaymentManager.
- Introduce transaction handling and logging for payment verification.
- Update payment flow to ensure idempotency and prevent race conditions.
- Enhance security by logging sensitive actions without exposing credentials.
- Update database schema with migration for payment_logs table.
- Document changes in payment flow architecture.
2026-07-02 15:36:08 +03:30
hamed ca71c49451 feat(payment): add payment detail endpoint and update payment model with order_id and patient_name
feat(appointment): enhance appointment detail page with time formatting and additional info
fix(payment): update payment query to fetch from the correct endpoint and adjust response structure
docs(api): add search parameter to payments API documentation and detail response structure
test(payment): add unit test for MellatGateway to verify null credentials handling
2026-07-02 15:10:15 +03:30
hamed 1e342a695f feat(payment): enhance payment flow with new pay endpoint and POST redirect method 2026-07-02 12:19:43 +03:30
hamed 02c34bac8e fix(modal): render Modal with React Portal to center it on the screen
fix(calendar): add type="button" to all buttons in PersianCalendar to prevent form submission
2026-07-02 11:48:34 +03:30
hamed 0a1e03d0ce feat(doctors): add activity start date field with Persian calendar in admin panel 2026-07-02 11:35:59 +03:30
hamed 4565f521c4 fix(doctors): correct city/state filters in doctor listing API 2026-07-02 11:13:16 +03:30
hamed fb90e447d8 change style css 2026-07-02 10:51:48 +03:30
hamed 6d594822bf Update SettingsPage.tsx metadata in manifest.json with new mtime and ast_hash 2026-07-02 10:27:41 +03:30
hamed 949fddc57a Add AST JSON representation for SiteConfigController.php with nodes and edges 2026-07-02 10:16:40 +03:30
hamed 70d280070b Add migration to include site_name column in cities table 2026-07-02 10:09:14 +03:30
hamed a7d5d17b9c feat(cors): update CORS settings for multi-domain production support 2026-07-01 22:57:16 +03:30
hamed cf38faff88 feat: add SmokeEndpointsCommand for endpoint health checks and logging
- Introduced SmokeEndpointsCommand to send HTTP requests to all /api and /oauth endpoints on the live site, ensuring logs are generated in the app_log table.
- Implemented non-destructive testing by using real IDs for GET requests and non-existent IDs for write operations.
- Added functionality to authenticate as an admin using a fixed OTP for development.
- Created tests for endpoint sweeps to verify that no 5xx errors occur during various conditions, including no-auth and wrong-role scenarios.
- Established RouteManifest for public success paths that should return 200 without requiring fixtures.
2026-07-01 22:37:53 +03:30
hamed 7814bcc0de feat(logging): implement log pruning functionality
- Add LogPruneService to handle the deletion of old logs based on retention settings.
- Create PruneLogsCommand to provide a console command for log pruning.
- Introduce PruneLogsMessage and PruneLogsHandler for message handling related to log pruning.
- Update the AST cache with new classes and their relationships.
2026-07-01 21:50:51 +03:30
hamed a31e8b4314 Add AST JSON files for doctor service, tag controller, and SMS log entities
- Created new AST JSON file for the doctor service API documentation, detailing endpoints, parameters, and responses.
- Added AST JSON file for the TagController, including methods and their relationships with imported classes.
- Introduced AST JSON file for the SmsLog entity, outlining its methods and dependencies.
2026-07-01 14:21:08 +03:30
hamed 3120132274 fix(footer): update copyright year in footer to 2024 2026-07-01 13:21:26 +03:30
hamed dfc86391c4 feat(payment): enhance payment configuration to include active gateways and update CORS settings 2026-07-01 12:45:18 +03:30
hamed e1eae1099c feat(audit): add comprehensive QA audit report for ClinicPro with findings and recommendations 2026-07-01 12:26:02 +03:30
hamed b366baa64c feat(sms): simplify SMS settings to use only KAVENEGAR_API_KEY from env, remove other SMS-related fields from config 2026-07-01 11:53:16 +03:30
hamed 9d8d1014f1 feat: update README to include category seeding instructions 2026-06-30 22:15:45 +03:30