- 19 May, 2026 10 commits
-
-
Mahmoud Aglan authored
- TKT-003: Fix facility create view accessing array as object ($disc->id → $disc['id']) - TKT-004: Disable autoTrackAuthor on FacilityUnit model (table lacks updated_by column) - TKT-004: Fix facility edit view same array-as-object bug - TKT-005: Add national_id validation in coach registration (reject invalid IDs) - TKT-006: Skip NID validation for member-type players, auto-fill from member record - TKT-007: Fix program edit form action URL (/update suffix removed to match route) - TKT-008: Add season start/end date validation in group store and update - TKT-009: Catch duplicate schedule entry PDOException gracefully (skip duplicates) - TKT-010/011: Add "Generate Training Sessions" button+route to group show page Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Members paying via installments (down_payment) now enter 'pending_cheques' status instead of being immediately activated - Membership number is only assigned after ALL cheques are uploaded (1 cheque per installment month) - Dependents (spouses/children) are NOT auto-included in installment payments — they must pay addition_fee separately - New installment_cheques table stores serial, bank, date, scan file - New ChequeController + ChequeService for upload flow - Employee uploads cheque scans from installment plan page - Member show page displays pending_cheques banner with upload link - Auto-activates member once all required cheques are submitted Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
- Added all tutorial module children to sidebar menu (was only 2, now 28) - Added 60px bottom padding to sidebar-nav to prevent debug bar overlap Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
- 18 May, 2026 16 commits
-
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
Pool is now a real 2D grid (rows × cols = squares). Admin sets dimensions, selects time slot from timeline strip above, then assigns squares to academies/groups/hourly/blocked/maintenance via drag selection. - New table: sa_pool_zone_bookings (zone_row × zone_col per time slot) - ALTER sa_facilities: add pool_grid_rows, pool_grid_cols - Rewritten PoolGridService with zone-based logic + copy-slot feature - Interactive view: timeline strip, 2D grid with drag/click/shift-rect select - API: state, assign, clear, update-grid, copy-slot - Seed: 4×6 grid with sample zone bookings - Fix mirror route mismatch (/sa/mirror/{id} now works) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Lanes × time slots grid with drag selection, bulk assign (training/blocked/maintenance), bulk clear, date navigation, and real-time AJAX state loading. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Seeds: discipline, facility (8 lanes), time brackets (5), pricing rules (80 rules across all lanes × brackets × group sizes), 4 coaches, 4 programs, 6 training groups with weekly schedules, 20 players enrolled across groups, training bookings for current week, hourly bookings, and a maintenance blackout date. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Column fixes across 13 controllers/models/views: - sa_coaches: name_ar → full_name_ar, status → is_active - sa_players: serial_number → registration_serial, code → registration_serial - sa_facility_units: removed non-existent is_archived references - sa_player_documents: title → file_name, original_name → file_name, uploaded_by → created_by - sa_blackout_dates: wrong table name sa_facility_blackouts → sa_blackout_dates - sa_disciplines: wrong table name disciplines → sa_disciplines - sa_attendance: added missing attendance_date, removed non-existent recorded_at - sa_player_documents: document_type medical → medical_cert, status → approval_status - card_status: not_issued → inactive, expired → revoked - player_type: removed invalid academy_player - academy_type: removed invalid partnership - gender_restriction: store NULL instead of 'mixed' - Added missing [] params to $db->select() calls Membership tutorials: 25 tutorial files covering all membership operations. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
Covers all use cases: setup, registration, academies, scheduling, financial operations, daily operations, and 3 full end-to-end scenarios (swimming pool, football academy, tennis courts). Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
- 17 May, 2026 3 commits
-
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
- Add payment_request.cancelled listener that reverts member/dependent to payment_pending when their payment is cancelled from the queue - Allow cancellation of completed payment requests (voids linked payment) - Add cancel button for completed items in queue UI - Fix self-healing logic to not re-activate dependents whose payment was intentionally cancelled (checks for cancelled requests without a valid completed replacement) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 16 May, 2026 2 commits
-
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 15 May, 2026 5 commits
-
-
Mahmoud Aglan authored
- MatchCenter: schedule/start/end matches, live pitch-side event entry - Events auto-increment score on goals, timeline view by minute - Dashboard shows live (pulsing), scheduled, and finished matches - News module: full CRUD with cover image upload, publish/unpublish toggle - Category-based filtering (match/facility/announcement/schedule/general) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Club level: total revenue, player demographics, discipline breakdown, utilization - Sport level: discipline-specific KPIs, coach performance, academy links - Facility level: bookings, revenue, utilization rate, popular time slots - Reusable time filter partial (day/week/month/year/3year/5year/custom) - PDF export via PdfExportService - DashboardMetricsService for centralized metric calculations Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Zone trainee assignment now validates player card_status and medical_status - Zone schedule creation validates coach/academy active registration - Academy contracts support PDF document upload on create/edit - New MedicalBoard module for board review of player medical certificates Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Fix payment void cascade, enhance death workflow, and transfer same-number with companion validation - Payment void now also voids linked payment_requests and reverts frozen/suspended members - Death case requires full form fill for spouse, charges 570+annual, supports secondary wives as separate memberships - Transfers keep the SAME membership number, archive source, charge surcharge for extra companions Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Divorce requests now go through board review before payment - Board sets fee percentage based on qualification + divorce certificate - Total fee = (percentage × membership value) + 570 form fee + annual subscription - New member page shows old/new membership number transfer link - Full workflow: submit → board_review → board_approved → payment → complete Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 14 May, 2026 4 commits
-
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
1. Payment void now reverts entity status: added payment.voided listener that sets dependents back to pending_payment (or reverts member to payment_pending if membership payment is voided with no other valid payment) 2. Added join_date column to children and temporary_members tables (migration), set on activation. Display in family tree tables. 3. Removed stepchild (ابن/ابنة الزوج) from children relationship dropdown 4. Form fee (570) now includes annual subscription on post-activation additions (restored bcadd with getAnnualSubscriptionForAddition) 5. Added join_date to Child and TemporaryMember model fillables Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Replace unsupported DROP INDEX IF EXISTS with information_schema check. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Gender: strictly enforce male/female only in member, spouse, child, temporary creation (validated from NID or manual input) - Spouse classification: under 21 = عضو تابع (dependent), 21+ = عضو عامل (working) - Post-activation lock: after membership payment (membership_number assigned), all member/dependent data becomes non-editable except by super admin - Locks: create, edit, update, archive on spouses, children, temporaries - Locks: edit, fill-form, update on member itself - UI: hides add/edit buttons when locked, shows lock indicator - Marriage rules already enforced: male→4 females max, female→1 male max (via Spouse::getMaxSpouses and gender cross-check from NID) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-