1. 09 Aug, 2026 9 commits
  2. 08 Aug, 2026 1 commit
  3. 06 Aug, 2026 1 commit
  4. 05 Aug, 2026 3 commits
  5. 04 Aug, 2026 6 commits
  6. 03 Aug, 2026 1 commit
    • Mahmoud Aglan's avatar
      Financial overview: detailed revenue breakdown + unpaid highlight in attendance · 3a69923d
      Mahmoud Aglan authored
      1. Financial Overview: add subscription vs product revenue split, top programs
         by revenue, per-product totals, and 12 key financial metrics (churn rate,
         avg revenue per participant, profit margin, avg days to collect, etc.)
         All respect the existing period + branch filters.
      
      2. Attendance views (TakeAttendance + QuickAttendance): detect participants
         with unpaid invoices or overdue renewals and highlight them in red with
         "غير مدفوع" badge so trainers can see payment status at a glance.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      3a69923d
  7. 02 Aug, 2026 17 commits
  8. 01 Aug, 2026 2 commits
    • Mahmoud Aglan's avatar
      Fix: guard null participant in enrollment list to prevent route error · 32f5e059
      Mahmoud Aglan authored
      Soft-deleted participants return null from the relationship, causing
      route('participants.show', null) to throw a missing parameter exception.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      32f5e059
    • Mahmoud Aglan's avatar
      Fix all non-existent database column references across codebase · d66d0f07
      Mahmoud Aglan authored
      - TrainerShow: period_start→date, total_amount→amount, status 'pending'→'active'
      - trainer-show.blade: period_start→date, sessions_count→quantity, total_amount→amount
      - AttendanceResource: actual_check_in→check_in_at, date→session.session_date
      - InvoiceResource: invoice_number→number, balance_due→due_amount, remove description_ar
      - ReportService: paid_amount→status check, cancellation_reason→withdrawal_reason,
        wallet status→is_active, remove frozen_amount
      - SendDailySummary: Organization→Academy, is_active→status='active'
      - SendParentWeeklyReport: fix morph type + join through session_date
      - DeactivateExpiredEnrollments: expiry_date→end_date
      - CertificateController + NotifyGuardianOfAbsence + RemoveAttendanceRecords:
        morph type 'participant'→Participant::class
      - SendInvoiceCancelledNotification: cancellation_reason→notes
      - DeleteParticipant: remove phantom refunded_amount reference
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      d66d0f07