June 30 Transactions History Update Report

Updated files:
- app/Http/Controllers/Admin/TransactionsHistoryController.php
- app/TransactionsHistoryEntry.php
- resources/views/admin/transactions_history/index.blade.php
- routes/web.php
- database/migrations/2026_05_04_000001_create_transactions_history_entries_table.php

What was changed:
1. Encoding cleanup
   - Fixed broken currency display like (Â£) and Â£.
   - Currency now displays cleanly as £.
   - Fixed broken lock/diamond style characters in the Transactions History page.

2. Text/title changes
   - Total Amount changed to Available Balance.
   - Refund Amount changed to Transaction Fee.
   - Pending Transfers changed to Completed Transaction.

3. Add / Update Transaction Data form improved
   - Added clear labels above every field.
   - Fields are now easier to understand before entering data.
   - Existing page look, spacing, and card/table design were kept the same.

4. Reset / Deactivate verification
   - Added Reset Transaction Verification control in the Add / Update Transaction Data section.
   - This lets the allowed user deactivate a completed OTP verification for each transaction.
   - Reset changes the transaction back so the user can complete OTP verification again.

5. OTP button logic improved
   - Button now depends on otp_verified / otp_verified_at.
   - If verified, button shows TRANSACTION COMPLETED and is disabled.
   - If reset/deactivated, button returns to Complete Transaction.

6. OTP email improved
   - Subject changed to Secure Transaction Confirmation Code.
   - Email body is cleaner and more professional.

7. Database package included
   - JUNE30_TRANSACTION_UPDATE.sql: Run this if you want to keep existing database data and only update/fix the transactions table.
   - sfoseeax_vt_june30_clean.sql: Full cleaned database dump.

Testing performed:
- PHP syntax check passed for updated controller, route, model, migration, and blade file.
- Checked that route name for reset verification exists.
- Checked that Transactions History page references the new reset route correctly.
- Checked that no old broken currency text is displayed directly in the new blade output; old database values are cleaned while displaying and when saving new entries.

Install notes:
- Upload project files to cPanel.
- If you keep your current DB, run JUNE30_TRANSACTION_UPDATE.sql in phpMyAdmin.
- If you want to restore the full database, import sfoseeax_vt_june30_clean.sql instead.
- If Laravel cache causes old output, delete bootstrap/cache/config.php and clear browser cache / hard refresh.
