1. 09 Jul, 2026 3 commits
    • Mahmoud Aglan's avatar
      Enforce role-based data scoping across all list components · 97db5304
      Mahmoud Aglan authored
      - Add branch_id accessor to User model (resolves from role_user pivot)
      - Create AppliesRoleScope trait for one-liner scope enforcement
      - Enhance PermissionService: include head_trainer_id in group lookup,
        add training_programs and invoices table support for own_groups scope
      - Apply AppliesRoleScope to 16 list components:
        ParticipantList, GroupList, EnrollmentList, AttendanceList,
        InvoiceList, ProgramList, EvaluationList, CashSessionList,
        WalletList, AssignmentList, PersonList, FacilityList,
        ProductList, PurchaseOrderList, KitList, StockCountList
      
      Now trainers only see their assigned groups/participants,
      branch managers only see their branch data, parents only
      see their children, and receptionists are branch-scoped.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      97db5304
    • Mahmoud Aglan's avatar
      Fix UserForm to detect existing entities and repair orphan role states · ecf6909c
      Mahmoud Aglan authored
      - Detect on mount if user already has Trainer/Employee/Guardian records
      - Show green notice when record exists, amber warning when role implies
        record but none exists (orphan state)
      - Allow entity creation on save even without role change when entities
        are missing (repair orphaned users from before the redesign)
      - Disable create toggles when record already exists to prevent duplicates
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      ecf6909c
    • Mahmoud Aglan's avatar
      Redesign all entity creation flows into integrated workflows · c000ea07
      Mahmoud Aglan authored
      - CreateTrainerWizard: 9-step flow with activities, user account creation,
        and initial group assignment (was 6 disconnected steps)
      - CreateProgramWizard: 7-step flow with head trainer, schedule template,
        initial group, BasePrice record, facility (was 4 steps, no group/trainer)
      - NewRegistrationWizard: add parent account creation step so guardians
        can log in to the Parent Portal immediately
      - UserForm: role-aware prompts — assigning trainer role creates
        Trainer+Employee records, parent role links Guardian, staff creates Employee
      - EnrollmentForm: 3-panel guided experience with group cards, capacity bars,
        live price preview from PricingService, and schedule conflict detection
      - TrainerCredentialsGenerated event for async email delivery
      
      Closes the "isolated CRUD screens" problem — every entity creation now
      handles the full business workflow in a single transaction.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      c000ea07
  2. 07 Jul, 2026 3 commits
  3. 06 Jul, 2026 1 commit
  4. 05 Jul, 2026 33 commits