1. 09 Aug, 2026 3 commits
    • Mahmoud Aglan's avatar
      Fix: attendance marking suspending players + partial payment receipt display · 5fff9330
      Mahmoud Aglan authored
      Bug 1: Attendance threshold was counting 'expected' records in the
      denominator, causing any player with future sessions to have a low
      attendance rate and get auto-suspended. Fixed by excluding 'expected'
      status from rate calculation and requiring minimum 5 evaluated records
      before triggering threshold enforcement.
      
      Bug 2: Registration wizard and POS receipt always showed full amount
      as "paid" even for partial/deposit payments. Fixed to show actual
      paid_amount and due_amount from the invoice, with distinct badge for
      partial payment state.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      5fff9330
    • Mahmoud Aglan's avatar
      Add 4 dashboard/financial features: compact renewals, retroactive wizard fix,... · fb56f022
      Mahmoud Aglan authored
      Add 4 dashboard/financial features: compact renewals, retroactive wizard fix, club revenue, expense shortcuts
      
      - Compact overdue renewals alert into summary card with toggle detail list
      - Rewrite retroactive enrollment wizard to CREATE new participants (not search existing)
      - Add external revenue import form for club lump-sum payments
      - Add quick-action buttons to financial overview for expenses/revenue
      - Migration adds external_revenue to expenses category CHECK constraint
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      fb56f022
    • Mahmoud Aglan's avatar
      Upgrade permission matrix: editable roles, super admin fix, comparison feature · 172a4836
      Mahmoud Aglan authored
      - Fix super admin assignment: sync is_super_admin flag when assigning role
      - Replace is_system block with level-based guard (edit roles below your level)
      - Add role deletion for non-system custom roles
      - Allow editing system role permissions and metadata (name_ar, description)
      - Add role comparison page (/roles/compare) with differences-only filter
      - Add permissions:sync artisan command for syncing seeder to DB
      - Add events permissions to seeder, make getPermissionsList() static
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      172a4836
  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 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
  9. 29 Jul, 2026 4 commits