1. 05 Aug, 2026 2 commits
    • Mahmoud Aglan's avatar
      Add retroactive enrollment wizard for backdating participant registrations · 59719212
      Mahmoud Aglan authored
      New wizard at /receptionist/retroactive-enrollment lets staff enroll
      participants who started in previous months. Flow: select participant →
      choose program → set actual start date → mark each month as unpaid or
      paid-outside-system → optionally pay all outstanding now. Creates
      individual invoices per month with proper metadata. Supports admin price
      override for the total. Accessible from receptionist dashboard with
      enrollments.create permission.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      59719212
    • Mahmoud Aglan's avatar
      Add permission matrix page for visual role-permission management · c15edf88
      Mahmoud Aglan authored
      New /roles/matrix page shows all permissions as rows grouped by module
      with Arabic labels, all roles as columns, and color-coded scope badges
      (own/branch/academy/all). Includes module and role filtering, stats
      per role, and click-to-cycle scope for custom roles. System roles are
      read-only. Accessible from the roles list page via "المصفوفة" button.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      c15edf88
  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
  8. 27 Jul, 2026 1 commit