# CC Soccer D11 - Project Status Tracker

**Last Updated:** January 27, 2025

---

## Overall Status: ~90% Complete

Core functionality working. Remaining: Reports and automated features.

---

## COMPLETED ✅

### Core Entities & Data Model
- ✅ League entity
- ✅ Season entity  
- ✅ Tournament entity
- ✅ Team entity
- ✅ Game entity
- ✅ Credits entity
- ✅ Registration entity (extended from contrib)
- ✅ User entity (extended with custom fields)

### Registration System
- ✅ Season registration flow
- ✅ Tournament registration flow (captain + player join)
- ✅ Group invitation system
- ✅ Commerce checkout integration
- ✅ Jersey auto-add for first-time registrations
- ✅ Credits application during checkout
- ✅ Waiver handling
- ✅ Age/gender validation
- ✅ Permanent override system

### Team & Roster Management
- ✅ Roster builder with drag-drop UI
- ✅ Team balancing algorithm (skill/age/gender/goalie)
- ✅ Group placement (keeps groups together)
- ✅ Manual adjustments
- ✅ Team statistics display
- ✅ Roster locking after generation

### Schedule System
- ✅ Schedule builder with randomization
- ✅ Round-robin generation
- ✅ Time slot distribution
- ✅ Field assignment
- ✅ Skip days handling
- ✅ Manual game swapping

### Notification System
- ✅ Symfony Mailer integration
- ✅ MailHog for development
- ✅ Email notifications (all types)
- ✅ SMS notifications (Clickatell integration)
- ✅ Registration confirmations
- ✅ Group invitations
- ✅ Team assignments
- ✅ Schedule published
- ✅ Cancellation notifications (with refund details)

### Credits & Refunds
- ✅ Credit entity and tracking
- ✅ Credit application during checkout
- ✅ Credit expiration (1 year)
- ✅ Registration cancellation with pro-rata refund calculation
- ✅ Commerce refund processing (Authorize.net)
- ✅ Payment method extraction for notifications
- ✅ Rain cancellation credits (Andrew - COMPLETE)

### Waitlist & Overrides
- ✅ Waitlist system
- ✅ Reserved spots management
- ✅ Override creation/expiration
- ✅ Manual waitlist notifications
- ⚠️ NOT automated (staying manual per requirements)

### Tournament Management
- ✅ Tournament deposits
- ✅ Captain team creation
- ✅ Player team joining
- ✅ Deposit refund/forfeit system
- ✅ Team roster management

### Game Management
- ✅ Game status updates (Andrew - COMPLETE)
- ✅ Cancellation handling
- ✅ Auto-credits on cancellation (Andrew - COMPLETE)

### Admin Tools & Reports
- ✅ Jersey Report (COMPLETE)
- ✅ Pay City Report (COMPLETE)
- ✅ Tournament Deposits Report
- ✅ Season management interface
- ✅ Player management
- ✅ Registration management
- ✅ Override management
- ✅ Cancel registration form (with refund processing)

### Display & Export
- ✅ Schedule display (FullCalendar)
- ✅ PDF schedule export
- ✅ Team rosters display
- ✅ Views Data Export (CSV/Excel)

---

## IN PROGRESS / REMAINING 🚧

### Reports
- ⚠️ **Insurance Report** - Not yet defined
  - What data does insurance company need?
  - Player list with DOB/contacts?
  - Emergency contact info?
  - Export format?

### Automated Features
- ⚠️ **Schedule iCal Export** - Module installed, not working
  - Date iCal module present
  - Needs configuration/debugging
  - Per-player or per-team feeds?

- ⚠️ **Automated Registration Reminders**
  - 6 weeks before close
  - 2 weeks before close  
  - 1 week before close
  - Send to: Previous season players not yet registered
  - Exclude: Already registered
  - Needs: Cron job + queuing

- ⚠️ **Override Expiration Reminders**
  - 24 hours before expiration
  - Send to: Waitlist people with active overrides
  - Content: "Your priority registration expires tomorrow"
  - Needs: Daily cron check

### Optional Features (TBD)
- ❓ Team messaging (captains notify their teams)
- ❓ Auto-subtract jersey cost on late cancellations
- ❓ Bulk cancellation tools (entire season)
- ❓ Refund reporting (admin tracking)

---

## NOT DOING ⛔

- Automated waitlist progression (staying manual)
- Referee management (future consideration)
- Player statistics tracking (future consideration)
- Social features (messaging, profiles)

---

## Priority Ranking for Remaining Work

### HIGH PRIORITY
1. **Insurance Report** - Define requirements → implement
   - Likely needed for compliance
   - Should be straightforward once defined

2. **Schedule iCal Export** - Fix existing module
   - High user value
   - Module already installed
   - Just needs debugging

### MEDIUM PRIORITY  
3. **Automated Registration Reminders**
   - Reduces admin workload significantly
   - Complex (cron, queuing, filtering logic)
   - High ROI once built

### LOW PRIORITY
4. **Override Expiration Reminders**
   - Nice to have
   - Low frequency (only when waitlist active)
   - Can stay manual

5. **Optional Features**
   - Evaluate based on actual usage patterns
   - Add incrementally as needs arise

---

## Technical Debt / Known Issues

1. **Seeded test data** - Doesn't have real Commerce orders
   - Refund processing fails gracefully
   - Need real checkout flow to fully test

2. **Jersey cost deduction** - Currently manual
   - Could auto-subtract $25 on late cancellations
   - Admin adjusts manually for now

3. **Configuration management** - Some settings hardcoded
   - Should be admin-configurable
   - Examples: credit expiration period, reminder timing

4. **Error handling** - Some areas could be more robust
   - Payment gateway failures
   - Network issues with Clickatell

---

## Next Session Recommendation

**Start with: Insurance Report**

**Why:**
1. Need requirements definition first (quick discussion)
2. Likely straightforward implementation
3. May be compliance requirement
4. Gets it off the list

**Then: Schedule iCal Export**
- Debug existing Date iCal module
- High user value
- Clear scope

**After that: Automated Registration Reminders**
- Most complex remaining feature
- Highest ROI for admin time savings

---

## Questions to Clarify

1. **Insurance Report:**
   - What fields are required?
   - Export format (CSV/Excel/PDF)?
   - Frequency (per season? annual?)?
   - Include emergency contacts?

2. **Schedule iCal:**
   - Per-player feeds or per-team?
   - Include all games or just team's games?
   - Should subscription URL be unique/private?

3. **Registration Reminders:**
   - Email only or SMS too?
   - Timing adjustable by admin?
   - Include "early bird" discount promotions?

---

**Status:** ✅ System is functional and deployed. Remaining work is enhancements and reports.
