Log student changes

Work on #61
This commit is contained in:
Matt Young 2024-08-06 11:27:16 -05:00
parent 78cc52c86e
commit ac12d6604a
2 changed files with 73 additions and 8 deletions

View File

@ -4,11 +4,14 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Audition; use App\Models\Audition;
use App\Models\AuditLogEntry;
use App\Models\School; use App\Models\School;
use App\Models\Student; use App\Models\Student;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use function abort; use function abort;
use function auth;
use function request;
use function to_route; use function to_route;
use function view; use function view;
@ -55,14 +58,24 @@ class StudentController extends Controller
return redirect('/admin/students/create')->with('error', 'This student already exists.'); return redirect('/admin/students/create')->with('error', 'This student already exists.');
} }
Student::create([ $student = Student::create([
'first_name' => request('first_name'), 'first_name' => request('first_name'),
'last_name' => request('last_name'), 'last_name' => request('last_name'),
'grade' => request('grade'), 'grade' => request('grade'),
'school_id' => request('school_id'), 'school_id' => request('school_id'),
]); ]);
$message = 'Created student #'.$student->id.' - '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
return redirect('/admin/students'); return redirect('/admin/students')->with('success', 'Created student successfully');
} }
public function edit(Student $student) public function edit(Student $student)
@ -103,7 +116,8 @@ class StudentController extends Controller
->where('school_id', request('school_id')) ->where('school_id', request('school_id'))
->where('id', '!=', $student->id) ->where('id', '!=', $student->id)
->exists()) { ->exists()) {
return redirect('/admin/students/'.$student->id.'/edit')->with('error', 'A student with that name already exists at that school'); return redirect('/admin/students/'.$student->id.'/edit')->with('error',
'A student with that name already exists at that school');
} }
$student->update([ $student->update([
@ -113,7 +127,18 @@ class StudentController extends Controller
'school_id' => request('school_id'), 'school_id' => request('school_id'),
]); ]);
return redirect('/admin/students'); $message = 'Updated student #'.$student->id.'<br>Name: '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
return redirect('/admin/students')->with('success', 'Student updated');
} }
@ -123,6 +148,16 @@ class StudentController extends Controller
return to_route('admin.students.index')->with('error', 'You cannot delete a student with entries.'); return to_route('admin.students.index')->with('error', 'You cannot delete a student with entries.');
} }
$name = $student->full_name(); $name = $student->full_name();
$message = 'Deleted student #'.$student->id.'<br>Name: '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
$student->delete(); $student->delete();
return to_route('admin.students.index')->with('success', 'Student '.$name.' deleted successfully.'); return to_route('admin.students.index')->with('success', 'Student '.$name.' deleted successfully.');

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Audition; use App\Models\Audition;
use App\Models\AuditLogEntry;
use App\Models\Student; use App\Models\Student;
use App\Rules\UniqueFullNameAtSchool; use App\Rules\UniqueFullNameAtSchool;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -58,10 +59,18 @@ class StudentController extends Controller
'grade' => request('grade'), 'grade' => request('grade'),
'school_id' => Auth::user()->school_id, 'school_id' => Auth::user()->school_id,
]); ]);
$message = 'Created student #'.$student->id.' - '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
$request->session()->put('auditionMessages', ['success', 'I did it again ma']); return redirect('/students')->with('success', 'Student Created');
return redirect('/students');
} }
/** /**
@ -104,7 +113,8 @@ class StudentController extends Controller
->where('school_id', Auth::user()->school_id) ->where('school_id', Auth::user()->school_id)
->where('id', '!=', $student->id) ->where('id', '!=', $student->id)
->exists()) { ->exists()) {
return redirect()->route('students.edit', $student)->with('error', 'A student with that name already exists at your school.'); return redirect()->route('students.edit', $student)->with('error',
'A student with that name already exists at your school.');
} }
$student->update([ $student->update([
@ -112,6 +122,16 @@ class StudentController extends Controller
'last_name' => request('last_name'), 'last_name' => request('last_name'),
'grade' => request('grade'), 'grade' => request('grade'),
]); ]);
$message = 'Updated student #'.$student->id.'<br>Name: '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
return redirect('/students')->with('success', 'Student updated successfully.'); return redirect('/students')->with('success', 'Student updated successfully.');
} }
@ -124,6 +144,16 @@ class StudentController extends Controller
if ($request->user()->cannot('delete', $student)) { if ($request->user()->cannot('delete', $student)) {
abort(403); abort(403);
} }
$message = 'Deleted student #'.$student->id.'<br>Name: '.$student->full_name().'<br>Grade: '.$student->grade.'<br>School: '.$student->school->name;
AuditLogEntry::create([
'user' => auth()->user()->email,
'ip_address' => request()->ip(),
'message' => $message,
'affected' => [
'students' => [$student->id],
'schools' => [$student->school_id],
],
]);
$student->delete(); $student->delete();
return redirect(route('students.index')); return redirect(route('students.index'));