100 lines
3.3 KiB
PHP
100 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Result;
|
|
use App\Imports\ResultsImport;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
class AdminResultsController extends Controller
|
|
{
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$query = Result::query();
|
|
|
|
|
|
if ($request->filled('search')) {
|
|
$search = $request->search;
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('student_log_id', 'like', "%{$search}%")
|
|
->orWhere('module_code', 'like', "%{$search}%")
|
|
->orWhere('module_name', 'like', "%{$search}%");
|
|
});
|
|
}
|
|
|
|
|
|
if ($request->filled('academic_year')) {
|
|
$query->where('academic_year', 'like', "%{$request->academic_year}%");
|
|
}
|
|
|
|
|
|
if ($request->filled('status')) {
|
|
$query->where('status', $request->status);
|
|
}
|
|
|
|
|
|
$results = $query->orderBy('id', 'desc')->paginate(15)->withQueryString();
|
|
|
|
return view('admin.adminresults', compact('results'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'student_log_id' => 'required|string|max:255',
|
|
'module_code' => 'required|string|max:255',
|
|
'module_name' => 'required|string|max:255',
|
|
'academic_year' => 'required|string|max:255',
|
|
'semester' => 'required|string|max:255',
|
|
'marks' => 'required|numeric|min:0|max:100',
|
|
'grade' => 'required|string|max:10',
|
|
'status' => 'required|in:Pass,Fail',
|
|
]);
|
|
|
|
Result::create($validated);
|
|
|
|
return redirect()->route('admin.results')->with('success', 'Exam result added successfully.');
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$validated = $request->validate([
|
|
'student_log_id' => 'required|string|max:255',
|
|
'module_code' => 'required|string|max:255',
|
|
'module_name' => 'required|string|max:255',
|
|
'academic_year' => 'required|string|max:255',
|
|
'semester' => 'required|string|max:255',
|
|
'marks' => 'required|numeric|min:0|max:100',
|
|
'grade' => 'required|string|max:10',
|
|
'status' => 'required|in:Pass,Fail',
|
|
]);
|
|
|
|
$result = Result::findOrFail($id);
|
|
$result->update($validated);
|
|
|
|
return redirect()->route('admin.results')->with('success', 'Exam result updated successfully.');
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$result = Result::findOrFail($id);
|
|
$result->delete();
|
|
|
|
return redirect()->route('admin.results')->with('success', 'Exam result deleted successfully.');
|
|
}
|
|
|
|
public function import(Request $request)
|
|
{
|
|
$request->validate([
|
|
'excel_file' => 'required|mimes:xlsx,xls,csv|max:2048'
|
|
]);
|
|
|
|
|
|
Excel::import(new ResultsImport, $request->file('excel_file'));
|
|
|
|
|
|
return redirect()->route('admin.results')->with('success', 'Excel file imported successfully!');
|
|
}
|
|
} |