# CMM School – Old to New Project Upgradation Summary

**Scope:** CI3 (cmmschoolold) → CI4 (cmmschoolupgrade), from scratch to current state.

---

## Summary counts

| Item        | Count | Notes                                      |
|------------|-------|--------------------------------------------|
| **Routes** | **80**| 1 default + 78 under `tp` + 1 under `admin` |
| **Controllers** | **12** | 1 base + 1 home + 1 My404 + 8 in `Tp` + 1 in `Admin` |
| **Views**  | **52**| Application views (excl. CI default errors) |

---

## 1. Routes (80 total)

### Default (2)
| Route | Method | Target | Description |
|-------|--------|--------|-------------|
| `/` | GET | Home::index | Site home page. |
| 404 override | - | My404::index | Custom 404 page. |

### TP group – Teacher (te) – 6 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/te/login | GET | Teacher login form. |
| tp/te/login | POST | Teacher login submit. |
| tp/te/logout | GET | Teacher logout. |
| tp/te/forgotPassword | GET/POST | Teacher forgot password. |
| tp/te/newPassword/(:segment) | GET/POST | Teacher set new password from token. |

### TP group – Unified role (ur) – 7 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/ur | GET/POST | Ur index (school/class selection). |
| tp/ur/chooseSchool | GET | Load school list for selection. |
| tp/ur/getClass/(:num) | GET | Load classes for selected school. |
| tp/ur/signin_out | GET/POST | Sign out. |
| tp/ur/dashboard | GET/POST | Parent/teacher dashboard. |

### TP group – Dashboard JSON (ur) – 18 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/ur/adminAnnouncementLast72HoursData | POST | Last 72h admin announcements (JSON). |
| tp/ur/programAnnouncementLast72HoursData | POST | Last 72h program announcements (JSON). |
| tp/ur/notificationLast72HoursData | POST | Last 72h notifications (JSON). |
| tp/ur/dailyReportLast72HoursData | POST | Last 72h daily reports (JSON). |
| tp/ur/montessoriRecordkeepingLast72HoursData | POST | Last 72h montessori records (JSON). |
| tp/ur/teacherMessageLast72HoursData | POST | Last 72h teacher messages (JSON). |
| tp/ur/newsLetterLast72HoursData | POST | Last 72h newsletters (JSON). |
| tp/ur/documentLast72HoursData | POST | Last 72h documents (JSON). |
| tp/ur/messagesLast72HoursData | POST | Last 72h internal messages (JSON). |
| tp/ur/adminLatestAnnouncement | POST | Latest admin announcement (JSON). |
| tp/ur/latestProgramAnnouncement | POST | Latest program announcement (JSON). |
| tp/ur/latestNotification | POST | Latest notification (JSON). |
| tp/ur/studentWorkTab | POST | Student work tab data (JSON). |
| tp/ur/latestNewsLetter | POST | Latest newsletter (JSON). |
| tp/ur/latestDocument | POST | Latest document (JSON). |
| tp/ur/latestMessages | POST | Latest messages list (JSON). |
| tp/ur/getFilterData | POST | Calendar events (JSON). |
| tp/ur/viewEvents | POST | Event detail HTML for modal. |

### TP group – Rosters (Check In/Out) – 8 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/rosters/index | POST | Roster page / student list AJAX. |
| tp/rosters/addNotes/(:num) | GET/POST | Add notes (date param). |
| tp/rosters/addNotes/(:num)/(:num) | GET/POST | Add notes (date + student). |
| tp/rosters/getStudentDetails/(:num) | GET | Student detail popup HTML. |
| tp/rosters/addInOutAbs/(:num) | POST | Check in/out or absent. |
| tp/rosters/addStudentDailyActivity/(:num) | POST | Add daily activity. |

### TP group – Internal messages – 13 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/internalMessage/index | GET | Inbox listing. |
| tp/internalMessage | GET | Inbox (alias). |
| tp/internalMessage/compose | GET/POST | Compose message. |
| tp/internalMessage/sent_items | GET | Sent items. |
| tp/internalMessage/description/(:segment) | GET | View message (1 segment). |
| tp/internalMessage/description/(:segment)/(:segment)/(:segment) | GET | View message (id/type/context). |
| tp/internalMessage/delete_inbox_items | POST | Delete inbox items. |
| tp/internalMessage/delete_sent_items | POST | Delete sent items. |
| tp/internalMessage/reply/... | GET/POST | Reply to message. |
| tp/internalMessage/forward/... | GET/POST | Forward message. |

### TP group – Parent (pa) – 6 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/pa/login | GET/POST | Parent login. |
| tp/pa/logout | GET | Parent logout. |
| tp/pa/forgotPassword | GET/POST | Parent forgot password. |
| tp/pa/newPassword/(:segment) | GET/POST | Parent new password from token. |

### TP group – Parent portal (pp) – 14 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/pp/login | GET | Parent portal login. |
| tp/pp/loginiframe | GET | Parent login in iframe. |
| tp/pp/chooseSchool | GET | Choose school. |
| tp/pp/getClass/(:num) | GET | Get classes for school. |
| tp/pp/logout | GET | Parent portal logout. |
| tp/pp/forgotPassword | GET | Forgot password. |
| tp/pp/forgotPasswordiframe | GET/POST | Forgot password in iframe. |
| tp/pp/newPassword/(:segment) | GET/POST | New password from token. |
| tp/pp/changePassword | GET/POST | Change password (logged in). |
| tp/pp/dashboard | GET/POST | Parent dashboard. |

### TP group – Student enrollment – 3 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/studentEnrollment | GET | Enrollment list page. |
| tp/studentEnrollment/ajaxData/(:any)/(:any) | GET/POST | Enrollment list AJAX. |

### TP group – Student assessment (st) – 3 routes
| Route | Method | Description |
|-------|--------|-------------|
| tp/st/stAssessment | GET/POST | Student assessment. |
| tp/st/readinessAssessmentListing/(:any) | GET | Readiness assessment listing. |

### Admin group – 1 route
| Route | Method | Description |
|-------|--------|-------------|
| admin/home/dashboard | GET | Admin dashboard. |

---

## 2. Controllers (12 total)

| Controller | Path | One-line description |
|------------|------|----------------------|
| BaseController | App\Controllers\BaseController | Base controller for app (no route). |
| Home | App\Controllers\Home | Home page and default landing. |
| My404 | App\Controllers\My404 | Custom 404 handler. |
| Te | App\Controllers\Tp\Te | Teacher login, logout, forgot/new password. |
| Ur | App\Controllers\Tp\Ur | Unified role: school/class selection, dashboard, all dashboard JSON (feed, messages, calendar), viewEvents. |
| Rosters | App\Controllers\Tp\Rosters | Check In/Out roster, student list, notes, in/out/absent, daily activity. |
| InternalMessage | App\Controllers\Tp\InternalMessage | Inbox, compose, sent, description, reply, forward, delete. |
| Pa | App\Controllers\Tp\Pa | Parent (pa) login, logout, forgot/new password. |
| Pp | App\Controllers\Tp\Pp | Parent portal (pp): login, choose school/class, dashboard, change/forgot/new password. |
| StudentEnrollment | App\Controllers\Tp\StudentEnrollment | Student enrollment list and AJAX data. |
| St | App\Controllers\Tp\St | Student assessment and readiness listing. |
| Admin\Home | App\Controllers\Admin\Home | Admin dashboard. |

---

## 3. Views (52 total)

### TP – common / roster
| View | One-line description |
|------|------------------------|
| tp/viewEvent.php | Event detail modal (calendar popup). |
| tp/ajaxStudentList.php | Roster student list fragment (AJAX). |
| tp/urRosternew.php | Roster page (new) with date nav and student list. |
| tp/urRoster.php | Roster page (alternate). |
| tp/urDashboard.php | Ur dashboard wrapper. |
| tp/urChoose.php | School/class selection (ur). |
| tp/urChooseSchool.php | School selection. |
| tp/include/headScripts.php | Common head scripts for tp. |

### TP – popups
| View | One-line description |
|------|------------------------|
| tp/popup/studentInfo.php | Student detail popup (roster). |
| tp/popup/addNotes.php | Add notes popup (roster). |

### TP – auth / forms
| View | One-line description |
|------|------------------------|
| tp/teLogin.php | Teacher login form. |
| tp/paLogin.php | Parent (pa) login form. |
| tp/forgotPassword.php | Forgot password form. |
| tp/newPassword.php | New password form (token). |

### TP – enrollment & assessment
| View | One-line description |
|------|------------------------|
| tp/studentEnrollmentList.php | Student enrollment list page. |
| tp/ajaxEnrollmentStudentList.php | Enrollment list AJAX fragment. |
| tp/stAssessment.php | Student assessment page. |
| tp/readinessAssessmentListing.php | Readiness assessment listing. |

### PP – dashboard & layout
| View | One-line description |
|------|------------------------|
| pp/newDashboard.php | Parent dashboard with center nav (feed, messages, calendar). |
| pp/dashboard.php | Parent dashboard wrapper. |
| pp/include/nav.php | Center tab nav (Latest Feed, Messages, Calendar, etc.). |
| pp/include/leftpanel.php | Left panel (links, messages button). |
| pp/include/rightpanel.php | Right panel. |
| pp/include/mobilenav.php | Mobile navigation. |
| pp/include/sub_header_msg.php | Sub-header message block. |

### PP – auth
| View | One-line description |
|------|------------------------|
| pp/ppLogin.php | Parent portal login. |
| pp/ppLoginiframe.php | Parent login in iframe. |
| pp/chooseSchool.php | Choose school (parent). |
| pp/forgotPassword.php | Forgot password. |
| pp/ppforgotPasswordiframe.php | Forgot password in iframe. |
| pp/newPassword.php | New password from token. |
| pp/changePassword.php | Change password (logged in). |

### PP – internal messages
| View | One-line description |
|------|------------------------|
| pp/internalmessage/inbox.php | Inbox listing. |
| pp/internalmessage/description.php | Message view (read). |
| pp/internalmessage/compose.php | Compose message. |
| pp/internalmessage/sent_items.php | Sent items list. |
| pp/internalmessage/sentitemdescription.php | Sent item view. |
| pp/internalmessage/reply.php | Reply form. |
| pp/internalmessage/inboxreply.php | Inbox reply form. |
| pp/internalmessage/forward.php | Forward form. |
| pp/internalmessage/sentforward.php | Sent forward form. |
| pp/internalmessage/inboxforward.php | Inbox forward form. |

### Common / errors
| View | One-line description |
|------|------------------------|
| pages/home.php | Home page content. |
| layouts/main.php | Main layout wrapper. |
| errors/cli/production.php | CLI production error. |
| errors/cli/error_404.php | CLI 404. |
| errors/cli/error_exception.php | CLI exception. |
| errors/html/production.php | HTML production error. |
| errors/html/error_400.php | HTML 400. |
| errors/html/error_404.php | HTML 404. |
| errors/html/error_exception.php | HTML exception. |

---

## 4. Notes

- **Routes:** All under `tp` use namespace `App\Controllers\Tp`; one `admin` route uses `App\Controllers\Admin`.
- **Dashboard:** Ur dashboard and all center-nav tabs (Latest Feed, Announcement/Notifications, Student Work, Newsletters, Other Documents, Messages, Calendar) are driven by the 18 JSON endpoints and newDashboard.php + newdashboard.js.
- **Messages/Calendar:** `latestMessages` and `messagesLast72HoursData` use role-specific receiver ID (parents.id / teachers.teacher_id); calendar uses `getFilterData` and `viewEvents` with session `tp_school_id` and `program_id`.
- **Rosters:** Check In/Out logic and UI (date nav, student list, popups) migrated from old project with same business rules.
