1. 05 Aug, 2026 3 commits
  2. 04 Aug, 2026 6 commits
  3. 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
  4. 02 Aug, 2026 17 commits
  5. 01 Aug, 2026 4 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
    • Mahmoud Aglan's avatar
      Show orphan schedules on facility grid + cancel support · b2a36e89
      Mahmoud Aglan authored
      The grid now also displays training_schedules that have no matching
      space_reservation (orphan schedules). These appear on the grid so users
      can see and cancel them. The cancelReservation method now accepts both
      reservationId and scheduleId to handle both cases.
      
      Also added cancel button column to the FacilityShow reservations tab.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      b2a36e89
    • Mahmoud Aglan's avatar
      Add reservation cancel button to facility show page · 18ced3e7
      Mahmoud Aglan authored
      Users can now cancel reservations directly from the reservations tab
      inside the facility show page via a cancel button with confirmation.
      Previously reservations were display-only with no way to modify them.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      18ced3e7
  6. 29 Jul, 2026 7 commits
  7. 28 Jul, 2026 2 commits