Commit Graph

14 Commits

Author SHA1 Message Date
Kazem Alghasi
e5cc6a9d15 fix(bridge): resolve corrupted PDF downloads and improve token handling
Relocate PDF and commitment form download logic from shortcode execution
to the `template_redirect` hook to prevent HTML output from corrupting
binary streams.

Key improvements:
- Moved download interception to `template_redirect` to ensure clean
  headers and prevent partial file downloads caused by early buffer
  output.
- Replaced direct `get_user_meta` calls with `IFNEX_User_Bridge::get_user_token`
  to support automatic token renewal and improved authentication reliability.
- Added PDF signature validation (`%PDF` header check) to ensure
  integrity of remote file responses.
- Updated Laravel base controller to include standard `AuthorizesRequests`
  and `ValidatesRequests` traits.
2026-10-03 18:15:46 +03:30
Kazem Alghasi
d6f9ce5553 feat(bridge): implement commitment form management and update auth tokens
Integrate commitment form functionality into the WordPress bridge and update authentication logic to use the Laravel-specific token.

- Add AJAX functionality to fetch and display commitment forms in the order shortcode.
- Implement client-side file upload handling for signed commitment forms.
- Update `user-bridge.php` to use `ifnex_laravel_token` instead of `ifnex_api_token` for secure API requests.
- Add Laravel migration to make file fields nullable in commitment forms to support incremental uploads.
2026-10-03 01:45:06 +03:30
Kazem Alghasi
61a2643dd0 feat(api): implement shipment review and resubmission workflow
Introduces a complete shipment review system allowing staff to request
changes to customer orders and customers to resubmit corrected orders.

- Add `ReviewState` enum and `ShipmentReview` model to track review history.
- Implement `ShipmentReviewService` to handle approval and change
  request logic.
- Add `resubmit` endpoint for customers to update orders when
  `changes_requested` state is active.
- Add `request-changes` endpoint for staff to flag orders for correction.
- Update `ShipmentResource` in Filament to display review states and
  manage approvals.
- Implement WordPress bridge support for fetching and resubmitting
  orders via AJAX.
- Add database migrations for `shipment_reviews` table and `review_state`
  column on shipments.
- Add `StaffApiMiddleware` to secure staff-specific API routes.
2026-09-27 01:00:26 +03:30
Kazem Alghasi
7a8ff49baa feat(api): implement shipment commitment forms and document downloads
Introduce a complete workflow for managing shipment-related documents
and mandatory commitment forms between the Laravel backend and
WordPress frontend.

- Laravel:
  - Add `ShipmentCommitmentForm` model and migration to track signed
    forms per shipment.
  - Implement `CommitmentFormController` to handle fetching available
    forms and uploading signed documents.
  - Add PDF download endpoints for AWB, labels, and invoices via
    `ShipmentPdfController`.
  - Extend `User` model with notification management methods.
  - Add `FinanceOverviewWidget` for Filament dashboard.

- WordPress:
  - Implement AJAX handlers in `user-bridge.php` for PDF downloads and
    commitment form management.
  - Update `shortcodes.php` to display document download grid and
    dynamic commitment form upload interface in order details.
  - Add styling for document buttons and form status indicators in
    `ifnex-orders.css`.
2026-09-09 13:08:22 +03:30
Kazem Alghasi
b25bfda597 feat(core): enhance order processing and bridge integration
Refactor the order and shipment lifecycle across WordPress and Laravel,
improving multi-package handling, payment automation, and frontend
reliability.

- Laravel:
  - Rename `package_number` to `package_no` and `description` to
    `content_description` in `ShipmentPackage` model and controller.
  - Update `PaymentController` to automatically transition approved
    shipments to `Processed` status upon successful payment.
  - Adjust `OrderPaymentService` to validate against `Approved` status
    instead of `PendingPayment`.
  - Expose `/countries` endpoint as a public route (unauthenticated).
  - Remove obsolete `read_excel.php` utility.

- WordPress (Bridge Plugin & Theme):
  - Implement AJAX handler for wallet-based order payments.
  - Update `ifnex-order-form.js` to support multi-package input names
    and auto-select Iran based on shipment direction.
  - Improve error handling and feedback in the order form and country
    loading logic.
  - Add automatic tracking submission when an `awb` parameter is
    present in the URL.
  - Update CSS with `!important` flags to ensure correct visibility
    of form steps and dashboard elements.
  - Implement cache-busting for plugin assets and prevent OPcache
    stale files via header controls.
  - Optimize theme logo loading with eager loading and explicit
    dimensions.
2026-09-09 12:03:58 +03:30
Kazem Alghasi
a1a6dbdd8a feat(core): complete phase 3 integration and enhance country/phone features
This commit marks the completion of Phase 3 (Integration and Improvements) and updates the project status to reflect that Phases 0 through 3 are finished.

Key changes include:
- **Laravel (Backend):**
  - Added `calling_code` column to `countries` table via new migration.
  - Added scripts to update calling codes for all countries.
  - Updated `CustomerOrderController` to include `calling_code` in country data.
  - Registered `api_key` middleware alias in `bootstrap/app.php`.
  - Improved error handling to return JSON 401 for API authentication failures.
  - Updated `README.md` with detailed architecture and feature descriptions.
- **WordPress (Frontend/Bridge):**
  - Added `ifnex_wallet_charge` shortcode and AJAX handler for wallet top-ups.
  - Implemented auto-fill for calling codes in the order form based on selected country.
  - Added real-time phone number validation (digits, +, spaces only).
  - Added English-only validation for name, city, and address fields with UI warnings.
  - Updated asset enqueuing logic and versioning for CSS/JS.
- **Documentation:**
  - Updated `IFNEX_File_Map.md`, `IFNEX_Phase0_Checklist.md`, and `IFNEX_Roadmap.md` to reflect completed phases and new features.
  - Updated `DEPLOYMENT.md` with new environment variables (`IFNEX_BRIDGE_API_KEY`) and required WordPress pages.
  - Updated project `README.md` with comprehensive feature list and system architecture.
2026-08-29 04:38:28 +03:30
Kazem Alghasi
98181abc45 feat(api): expose notification endpoints for customer dashboard
Implement backend support for the user notification system by adding
endpoints to retrieve and manage notifications.

- Add `notifications` and `markNotificationRead` methods to
  `CustomerOrderController`
- Register notification routes under the `v1` API prefix
- Update `IFNEX_User_Bridge` in WordPress to support fetching
  notifications and marking them as read via API calls
2026-08-24 05:13:22 +03:30
Kazem Alghasi
fc1c2f023d feat(ui): implement user notification system in customer dashboard
Integrate a new notification module into the customer dashboard to allow users to view and manage alerts.

- Add `get_notifications` and `mark_notification_read` methods to `IFNEX_User_Bridge` to interface with the API
- Introduce a new 'notifications' tab in the customer dashboard shortcode
- Implement notification badge logic to display unread counts in the sidebar menu
- Add new SVG icon for notifications
- Add comprehensive CSS styles for notification items, badges, and unread states
2026-08-24 04:48:08 +03:30
Kazem Alghasi
1c2ff9941e feat(order): add English address detection warning in order form
Implement a real-time language detection mechanism for sender and
receiver address fields to warn users when they enter addresses
exclusively in English.

- Add JavaScript logic to detect non-Arabic/Persian characters in address inputs
- Implement a warning UI component with specific styling for address alerts
- Update order form shortcode to include warning containers
- Increment CSS asset versions to ensure style updates are applied
2026-08-24 04:16:06 +03:30
Kazem Alghasi
c0a50acaef style(ui): modernize transaction list styling and update plugin version
Update the transaction interface with a modern design including improved
typography, card-based layouts, and color-coded status badges.

- Add comprehensive CSS for transaction items, types, and statuses
- Implement responsive styles for mobile transaction views
- Update transaction shortcode to include pagination limit
- Increment plugin asset version to 1.5.0
2026-08-24 04:04:29 +03:30
Kazem Alghasi
f08981da31 feat(ui): implement modern customer dashboard
Implement a new, modern customer dashboard interface including:
- A new `[ifnex_customer_dashboard]` shortcode.
- A redesigned sidebar with user profile information and navigation.
- A statistics overview section with icon-based cards.
- Modern SVG icon system (Heroicons style) for dashboard elements.
- Updated CSS with a modern design language (gradients, shadows, and flexbox layouts).
- Global asset enqueuing to ensure consistent styling and AJAX availability across all plugin-related pages.
2026-08-12 03:52:35 +03:30
Kazem Alghasi
bac2a7bb25 feat: Complete WordPress customer portal 2026-08-10 13:08:53 +03:30
Kazem Alghasi
4ee1d27d44 feat: Complete customer ordering system (Phase 3)
Laravel Backend:
- Add AuthController for Sanctum token login/logout
- Add CustomerOrderController with 6 endpoints
  (profile, countries, orders CRUD, cancel)
- Extend ShipmentStatus enum with pending_payment/cancelled
- Add SampleShippingRatesSeeder (10 zones, 3 service types)
- Zone-assign 232 countries (Gulf=1, Asia=2, EU=3, East=4, US=5)
- Add migration to extend shipments.status enum
- Add test-api.php automated test suite (5 tests)

WordPress Frontend:
- Add [ifnex_order_form] multi-step wizard (4 steps)
- Add [ifnex_orders_list] with status filter & cancel action
- Add [ifnex_user_profile] with wallet & stats
- Add ifnex-orders.css (RTL-ready, IFNEX theme)
- Add ifnex-order-form.js (step navigation + AJAX)
- Add AJAX handlers (countries, calculate, submit, cancel)
- Fix plugin asset paths with dirname(__FILE__)
2026-08-10 06:09:56 +03:30
Kazem Alghasi
b605b689fd feat(wp-plugin): expand IFNEX Bridge with wallet and transaction support
Extend the WordPress bridge plugin to provide seamless integration with
the backend wallet system. This update introduces user-specific
functionality via shortcodes and AJAX.

- feat(bridge): implement `IFNEX_User_Bridge` for Sanctum token management
- feat(bridge): add `[ifnex_wallet_balance]` shortcode for balance display
- feat(bridge): add `[ifnex_transactions]` shortcode for transaction history
- feat(bridge): implement AJAX handlers for real-time balance and transaction updates
- feat(bridge): add plugin-specific CSS assets and enqueueing logic
- docs: update project status with new bridge capabilities
- chore: add plugin testing utility and asset directory structure
2026-08-08 03:49:46 +03:30