<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>

<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>

## About Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).

Laravel is accessible, powerful, and provides tools required for large, robust applications.

## Learning Laravel

Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.

You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.

If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.

## Laravel Sponsors

We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).

### Premium Partners

- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
- **[Redberry](https://redberry.international/laravel-development/)**
- **[Active Logic](https://activelogic.com)**

## Contributing

Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).

## Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).

## Security Vulnerabilities

If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.

## License

The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

# Lively Stones SGS

A School Management System for Lively Stones Academy.

## Student Promotion System

### How Promotion Works

When a student is promoted to the next class:

1. **Student Record Update**: Only the student's `classroom_id` in the `students` table is updated to the new classroom.

2. **Historical Data Preservation**: All historical data remains intact:
   - **StudentScore records**: Individual subject scores remain unchanged with their original `student_id`, `subject_id`, `term_id`, and `session_year_id`
   - **Result records**: Aggregated results remain unchanged with their original `classroom_id`, `term_id`, and `session_year_id`

3. **Fresh Start in New Class**: The promoted student starts with no scores or results in their new class until new data is added.

### Data Filtering

The system properly filters data based on classroom context:

- **Current Students**: Shows only results and scores that belong to the current classroom
- **Historical Students**: Shows students who were previously in this classroom but have been promoted to other classes
- **Historical Data**: When viewing old classes, shows students who had results in that specific classroom
- **Student Results**: When viewing individual student results, shows data from the appropriate classroom context

### Key Features

- Students can be promoted individually or in batches
- Historical academic records are preserved and accessible
- Data is properly segregated by classroom, term, and session year
- The system maintains data integrity during promotion

### Testing the Promotion System

To test that the promotion system is working correctly:

1. **Create Test Data**:
   - Create at least 2 classrooms (e.g., JSS1, JSS2)
   - Add students to the first classroom
   - Add some scores and results for those students
   - Set up terms and session years

2. **Promote Students**:
   - Go to the first classroom view
   - Select a term and session year
   - Check the students you want to promote
   - Click "Promote Students"

3. **Verify Historical Data**:
   - Go back to the first classroom
   - Select the same term and session year
   - You should see the promoted students in the "Historical Students (Previously in this class)" section
   - Click "View Result" to see their historical data from when they were in this class

4. **Verify Fresh Start**:
   - Go to the second classroom
   - The promoted students should be there with no existing data
   - Add new scores and results for the new class
