1. 05 Jul, 2026 2 commits
    • Mahmoud Aglan's avatar
      Fix layout path: components.layouts.app → layouts.app in 11 Livewire components · f9fa8862
      Mahmoud Aglan authored
      The layout file lives at resources/views/layouts/app.blade.php, so the
      correct Livewire attribute is Layout('layouts.app'). 11 components had
      the wrong path 'components.layouts.app' causing MissingLayoutException.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      f9fa8862
    • Mahmoud Aglan's avatar
      Overhaul setup wizard: 12 steps, 30+ business improvements, zero schema mismatches · 1959e8e0
      Mahmoud Aglan authored
      Expanded from 10 shallow steps to 12 deep steps covering ALL organization data:
      - Academy profile: phone, email, address, type, website, WhatsApp
      - Branches: working days (inline toggles), email, city, manager name
      - Programs: age range (age_min/age_max columns), sessions_per_week, registration fee (separate BasePrice), payment frequency
      - Facilities: branch selection per facility, visual grid preview
      - Groups: structured schedule (day + start/end time repeater), segment selection
      - Participants: classification (on Person), skill_level (on Participant), national_id, medical_notes, collapsible extras
      - Staff: phone, specialization (creates linked Person for trainers)
      - NEW Step 9: Financial (tax, invoice/receipt prefix, payment methods, wallet, discounts, family discount, trial period)
      - NEW Step 10: Policies (attendance grace periods, auto-absent, suspension threshold, medical/guardian requirements, waitlist, freeze days, email/SMS toggles)
      - Step 11: General settings (currency, timezone, week start, date/time format, pagination)
      - Step 12: Summary dashboard with stats cards
      
      Schema alignment verified: Branch uses operating_hours (not metadata), Person owns classification/medical_notes, Participant owns skill_level, TrainingProgram uses age_min/age_max/sessions_per_week columns directly, all SettingsService keys match SystemSettings schema exactly.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      1959e8e0
  2. 03 Jul, 2026 4 commits
    • Mahmoud Aglan's avatar
      Add messaging update: 78 notification templates, 14 event listeners, public document links · d3e3030e
      Mahmoud Aglan authored
      - Seed 78 notification templates (26 events × 3 channels: in_app, email, sms) in Arabic
      - Create 14 new listeners for previously unwired events (invoice sent/cancelled, wallet deposit/frozen, cash session closed, enrollment completed, session completed, participant registered/status changed/suspended/frozen, evaluation shared, POS receipt)
      - Wire all listeners in EventServiceProvider
      - Add PublicDocumentController with signed URL routes for invoices, receipts, and POS receipts
      - Add PublicLinkHelper for generating 30-day signed URLs
      - Add 3 standalone RTL Arabic public views (invoice, receipt, pos-receipt)
      - Update existing listeners (SendInvoiceNotification, SendOverdueReminder, SendPaymentConfirmation) to include public_link/receipt_link variables
      - Align all listener variable names with template placeholders
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      d3e3030e
    • Mahmoud Aglan's avatar
      Fix dashboard security: redirect roles + hide financial data · e11ab21d
      Mahmoud Aglan authored
      - Trainers/head trainers redirect to /trainer dashboard on login
      - Receptionists redirect to /receptionist dashboard
      - Guardians (parents) redirect to /guardian dashboard
      - Financial data (revenue, invoices, payments) only queried if user
        has 'invoices.list' permission — returns null/empty otherwise
      - Blade sections wrapped in @can('invoices.list') so even direct
        URL access shows no sensitive financial info to unauthorized roles
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      e11ab21d
    • Mahmoud Aglan's avatar
      Enhance setup wizard: grid builder, groups, participants import · 38768a29
      Mahmoud Aglan authored
      Setup wizard now covers 10 steps (was 8):
      - Facilities step includes visual grid layout builder (rows×columns)
      - New Groups step: create groups with interactive segment multi-select
      - New Participants step: import existing players with guardian data
      - completeSetup() creates SpaceLayout + SpaceSegments for each facility grid
      - Hint encourages max division for scheduling flexibility
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      38768a29
    • Mahmoud Aglan's avatar
      Add document management system + 10 feature wizards · 0c8f5bdb
      Mahmoud Aglan authored
      Document system: polymorphic documents table, upload/approve/reject workflow,
      medical certificate tracking with expiry, system settings toggles, daily expire job.
      
      Feature wizards: Employee, Trainer, Program, Group, Facility, Invoice, Product,
      PricingRule, TransferParticipant, StockAdjustment — all with Arabic UI, step-by-step
      guided creation, and delegation to existing services.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      0c8f5bdb
  3. 02 Jul, 2026 3 commits
  4. 01 Jul, 2026 31 commits