100 lines
3.7 KiB
PHP
100 lines
3.7 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();
|
|
|
|
// 1. Student Log ID, Module Code, හෝ Module Name මගින් Search කිරීම
|
|
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}%");
|
|
});
|
|
}
|
|
|
|
// 2. Academic Year මගින් Filter කිරීම
|
|
if ($request->filled('academic_year')) {
|
|
$query->where('academic_year', 'like', "%{$request->academic_year}%");
|
|
}
|
|
|
|
// 3. Pass/Fail Status මගින් Filter කිරීම
|
|
if ($request->filled('status')) {
|
|
$query->where('status', $request->status);
|
|
}
|
|
|
|
// Filter වූ Data Pagination (පිටුවකට 15 බැගින්) සමග ලබා ගැනීම
|
|
// (Pagination අවශ්ය නැතිනම් ->paginate(15) වෙනුවට ->get() භාවිතා කරන්න)
|
|
$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 file එක Import කිරීම
|
|
Excel::import(new ResultsImport, $request->file('excel_file'));
|
|
|
|
// Upload වූ පසු කෙලින්ම Admin Results Table එකට Redirect කිරීම
|
|
return redirect()->route('admin.results')->with('success', 'Excel file imported successfully!');
|
|
}
|
|
} |