diff --git a/app/Http/Controllers/Admin/StudentController.php b/app/Http/Controllers/Admin/StudentController.php
index 9852104..16ef58d 100644
--- a/app/Http/Controllers/Admin/StudentController.php
+++ b/app/Http/Controllers/Admin/StudentController.php
@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
+use App\Models\Audition;
+use App\Models\School;
use App\Models\Student;
use App\Models\User;
use Illuminate\Http\Request;
@@ -18,4 +20,64 @@ class StudentController extends Controller
$students = Student::orderBy('last_name')->orderBy('first_name')->paginate(15);
return view('admin.students.index', ['students' => $students]);
}
+
+ public function create()
+ {
+ if (! Auth::user()->is_admin) abort(403);
+ $minGrade = Audition::min('minimum_grade');
+ $maxGrade = Audition::max('maximum_grade');
+ $schools = School::orderBy('name')->get();
+ return view('admin.students.create',['schools' => $schools, 'minGrade' => $minGrade, 'maxGrade' => $maxGrade]);
+ }
+
+ public function store()
+ {
+ if (! Auth::user()->is_admin) abort(403);
+ request()->validate([
+ 'first_name' => ['required'],
+ 'last_name' => ['required'],
+ 'grade' => ['required', 'integer'],
+ 'school_id' => ['required', 'exists:schools,id']
+ ]);
+
+ $student = Student::create([
+ 'first_name' => request('first_name'),
+ 'last_name' => request('last_name'),
+ 'grade' => request('grade'),
+ 'school_id' => request('school_id')
+ ]);
+
+ return redirect('/admin/students');
+ }
+
+ public function edit(Student $student)
+ {
+ if (! Auth::user()->is_admin) abort(403);
+ $minGrade = Audition::min('minimum_grade');
+ $maxGrade = Audition::max('maximum_grade');
+ $schools = School::orderBy('name')->get();
+ return view('admin.students.edit', ['student' => $student, 'schools' => $schools, 'minGrade' => $minGrade, 'maxGrade' => $maxGrade]);
+ }
+
+ public function update(Request $request, Student $student)
+ {
+ if (! Auth::user()->is_admin) abort(403);
+ request()->validate([
+ 'first_name' => ['required'],
+ 'last_name' => ['required'],
+ 'grade' => ['required', 'integer'],
+ 'school_id' => ['required', 'exists:schools,id']
+ ]);
+
+ $student->update([
+ 'first_name' => request('first_name'),
+ 'last_name' => request('last_name'),
+ 'grade' => request('grade'),
+ 'school_id' => request('school_id')
+ ]);
+
+ return redirect('/admin/students');
+
+// TODO if a students grade is changed, we need to be sure they are still eligible for the auditions in which they are entered.
+ }
}
diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php
index b46c5c8..be1b021 100644
--- a/app/Http/Controllers/StudentController.php
+++ b/app/Http/Controllers/StudentController.php
@@ -92,6 +92,9 @@ class StudentController extends Controller
'grade' => request('grade')
]);
+ // TODO if a students grade is changed, we need to be sure they are still eligible for the auditions in which they are entered.
+
+
return redirect('/students');
}
diff --git a/resources/views/admin/students/create.blade.php b/resources/views/admin/students/create.blade.php
new file mode 100644
index 0000000..40bca42
--- /dev/null
+++ b/resources/views/admin/students/create.blade.php
@@ -0,0 +1,30 @@
+
+
+ Create Student
+
+
+
+
+
+ Grade
+ @php($n = $minGrade)
+ @while($n <= $maxGrade)
+
+ @php($n++);
+ @endwhile
+
+
+ School
+ @foreach ($schools as $school)
+
+
+ @endforeach
+
+
+
+
+ Create Student
+
+
+
+
diff --git a/resources/views/admin/students/edit.blade.php b/resources/views/admin/students/edit.blade.php
new file mode 100644
index 0000000..7e3ae8a
--- /dev/null
+++ b/resources/views/admin/students/edit.blade.php
@@ -0,0 +1,30 @@
+
+
+ Edit Student
+
+
+
+
+
+ Grade
+ @php($n = $minGrade)
+ @while($n <= $maxGrade)
+
+ @php($n++);
+ @endwhile
+
+
+ School
+ @foreach ($schools as $school)
+
+
+ @endforeach
+
+
+
+
+ Ecit Student
+
+
+
+
diff --git a/resources/views/admin/students/index.blade.php b/resources/views/admin/students/index.blade.php
index c0f2ac0..9c40ddb 100644
--- a/resources/views/admin/students/index.blade.php
+++ b/resources/views/admin/students/index.blade.php
@@ -34,3 +34,4 @@
{{ $students->links('vendor.pagination.simple-audition') }}
+{{--TODO add options to filter the page--}}
diff --git a/resources/views/admin/users/create.blade.php b/resources/views/admin/users/create.blade.php
index 69d0f65..5e28ea4 100644
--- a/resources/views/admin/users/create.blade.php
+++ b/resources/views/admin/users/create.blade.php
@@ -1,6 +1,6 @@
- Edit User
+ Create User
@@ -19,7 +19,7 @@
- Update User
+ Create User
diff --git a/routes/web.php b/routes/web.php
index 7a70092..0bc9ff2 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -21,6 +21,10 @@ Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->gr
// Admin Student Routes
Route::prefix('students')->controller(\App\Http\Controllers\Admin\StudentController::class)->group(function() {
Route::get('/','index');
+ Route::get('/create','create');
+ Route::post('/','store');
+ Route::get('/{student}/edit','edit');
+ Route::patch('/{student}','update');
});
// Admin School Routes