- 31 May, 2026 2 commits
-
-
Mahmoud Aglan authored
- spouses: add spouse_order, gender, classification, fallback date_of_birth - children: add child_order, relationship, classification, fallback date_of_birth - temporary_members: fallback date_of_birth, gender - members: phone_mobile defaults to placeholder, date_of_birth fallback - installment_plans: down_payment_receipt cast to string (VARCHAR column) - All dates go through safeDate() — rejects garbage, parses valid formats - All timestamps go through safeTimestamp() — never produces invalid datetime - financial_year '2020/2021' extracted correctly for created_at - bccomp amounts always cast to string to avoid type errors - Null-safe on every optional field — zero room for SQL errors Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- phone_mobile column is NOT NULL; pass empty string instead of null - financial_year '2020/2021' was used directly in created_at datetime; extract first year - Add client-side step validation with red border highlights instead of alert() popups Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 30 May, 2026 3 commits
-
-
Mahmoud Aglan authored
Run: php cli.php seed:run Phase_88_001_seed_tournament_bot_players Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The members table has date_of_birth as NOT NULL, but the wizard passed null when no explicit DOB was entered. Now NationalIdParser extracts DOB and gender from the 14-digit national ID for the main member, spouses, children, and temporary members. If no NID and no DOB provided, returns a clear validation error instead of letting the DB constraint violation propagate. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Fix 5 support ticket bugs: AJAX errors, capacity validation, audit export, player lookup, fee display TKT-59: ExceptionHandler now returns JSON for AJAX/XHR requests instead of HTML error pages. Booking wizard JS improved to show actual error messages. TKT-57: Pricing rule creation now validates group_size_max against the facility unit's max_capacity, preventing over-capacity rules. TKT-46: Added audit log CSV export with all current filters applied. New route GET /audit/export and export button in the filter bar. TKT-55: Player registration member lookup now uses only the DB id (set by AJAX member lookup) instead of ambiguous membership_number/id fallback. National ID field locked when auto-filled from member record. TKT-50: Fee breakdown text now shows base amount and development fee separately (e.g. "اشتراك سنوي: 222.00 + تنمية: 35.00 = 257.00") instead of just the combined total. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 24 May, 2026 15 commits
-
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The old calculator applied a flat percentage by position (oldest=10%, next=50%, next=100%). The correct model: each year's penalty escalates based on how long THAT SPECIFIC year has been overdue: - Same year past grace (3 months): 10% - 1 year overdue: 50% - 2 years overdue: 100% - 3 years overdue: 200% - 4 years overdue: 300% - 5+ years: membership dropped Also adds: - Grace period rule (SUB_GRACE_MONTHS = 3, extended = 4 with trustees approval) - YEAR_4 (200%) and YEAR_5 (300%) rules in DB - canReinstate() method for 12-month reinstatement window - expireReinstatements() for permanent drop after window expires Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
collectBookData() was only extracting steps for 3 hardcoded sections (membership, sports-activity, treasury) using regex on view files. All other sections (45 of 48) were passed without steps, rendering only subtitle text in the PDF. Now calls TutorialRegistry::getSteps() for every tutorial in every section. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Every tutorial now has 3-7 explicit steps with consistent format: - Navigation step first (how to get to the page) - Action steps in the middle (what to fill/click) - Confirmation/result step last (with success/warning callouts) Sections fixed: parents, medical-board, access-matrix, rules, dashboard, family, transfers-waivers, trainer-portal, parent-portal Also fixed forms.print-form (was 2 steps, now 3). Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Add 84 sub-page screenshots for tutorials (accounting, HR, inventory, procurement, sales, system pages) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
- 23 May, 2026 20 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
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-