academy/resources/views/admin/adminresults.blade.php

307 lines
18 KiB
PHP

@extends('layouts.adminnav')
@section('title', 'Exam Results Management - Admin Panel')
@section('content')
<div class="container-fluid">
<div class="d-flex justify-content-between align-items-center mb-4">
<h3 class="fw-bold text-navy">
<i class="fa-solid fa-square-poll-vertical me-2"></i>Exam Results Management
</h3>
<div>
<!-- Import Excel Button -->
<button class="btn btn-success me-2" data-bs-toggle="modal" data-bs-target="#importExcelModal">
<i class="fa-solid fa-file-excel me-1"></i> Import Excel
</button>
<!-- Add Single Result Button -->
<button class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#addResultModal">
<i class="fa-solid fa-plus me-1"></i> Add New Result
</button>
</div>
</div>
@if(session('success'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
<i class="fa-solid fa-circle-check me-2"></i>{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
@if($errors->any())
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<i class="fa-solid fa-triangle-exclamation me-2"></i>
<strong>Please fix the following errors:</strong>
<ul class="mb-0 mt-1">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<!-- Filter & Search Section -->
<div class="card border-0 shadow-sm rounded-3 mb-4">
<div class="card-body">
<form action="{{ route('admin.results.index') }}" method="GET">
<div class="row g-3 align-items-end">
<!-- Search Box -->
<div class="col-md-4">
<label class="form-label fw-bold small text-secondary">Search</label>
<div class="input-group">
<span class="input-group-text bg-white"><i class="fa-solid fa-magnifying-glass text-muted"></i></span>
<input type="text" name="search" class="form-control" placeholder="Student ID, Module Code/Name..." value="{{ request('search') }}">
</div>
</div>
<!-- Academic Year Filter -->
<div class="col-md-3">
<label class="form-label fw-bold small text-secondary">Academic Year</label>
<input type="text" name="academic_year" class="form-control" placeholder="e.g. 2025/2026" value="{{ request('academic_year') }}">
</div>
<!-- Status Filter -->
<div class="col-md-3">
<label class="form-label fw-bold small text-secondary">Status</label>
<select name="status" class="form-select">
<option value="">All Statuses</option>
<option value="Pass" {{ request('status') == 'Pass' ? 'selected' : '' }}>Pass</option>
<option value="Fail" {{ request('status') == 'Fail' ? 'selected' : '' }}>Fail</option>
</select>
</div>
<!-- Filter & Reset Buttons -->
<div class="col-md-2 d-flex gap-2">
<button type="submit" class="btn btn-navy text-white w-100" style="background-color: #0a192f;">
<i class="fa-solid fa-filter me-1"></i> Filter
</button>
<a href="{{ route('admin.results.index') }}" class="btn btn-outline-secondary" title="Reset Filters">
<i class="fa-solid fa-rotate-left"></i>
</a>
</div>
</div>
</form>
</div>
</div>
<!-- Results Table -->
<div class="card border-0 shadow-sm rounded-3">
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-dark">
<tr>
<th>ID</th>
<th>Student Log ID</th>
<th>Module Code</th>
<th>Module Name</th>
<th>Academic Year</th>
<th>Semester</th>
<th>Marks</th>
<th>Grade</th>
<th>Status</th>
<th class="text-center">Actions</th>
</tr>
</thead>
<tbody>
@forelse($results as $result)
<tr>
<td>{{ $result->id }}</td>
<td><span class="badge bg-secondary">{{ $result->student_log_id }}</span></td>
<td><strong>{{ $result->module_code }}</strong></td>
<td>{{ $result->module_name }}</td>
<td>{{ $result->academic_year }}</td>
<td>{{ $result->semester }}</td>
<td><span class="fw-bold">{{ $result->marks }}</span></td>
<td>
<span class="badge bg-primary fs-6">{{ $result->grade }}</span>
</td>
<td>
@if(strtolower($result->status) == 'pass')
<span class="badge bg-success">Pass</span>
@else
<span class="badge bg-danger">Fail</span>
@endif
</td>
<td class="text-center">
<!-- Edit Button -->
<button class="btn btn-sm btn-outline-primary me-1"
data-bs-toggle="modal"
data-bs-target="#editResultModal{{ $result->id }}">
<i class="fa-solid fa-pen-to-square"></i>
</button>
<!-- Delete Button -->
<form action="{{ route('admin.results.delete', $result->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to delete this result?');">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-outline-danger">
<i class="fa-solid fa-trash-can"></i>
</button>
</form>
</td>
</tr>
<!-- Edit Result Modal -->
<div class="modal fade" id="editResultModal{{ $result->id }}" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-navy text-white">
<h5 class="modal-title"><i class="fa-solid fa-pen-to-square me-2"></i>Edit Student Result</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form action="{{ route('admin.results.update', $result->id) }}" method="POST">
@csrf
@method('PUT')
<div class="modal-body text-start">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label fw-bold">Student Log ID</label>
<input type="text" name="student_log_id" class="form-control" value="{{ $result->student_log_id }}" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Module Code</label>
<input type="text" name="module_code" class="form-control" value="{{ $result->module_code }}" required>
</div>
<div class="col-md-12">
<label class="form-label fw-bold">Module Name</label>
<input type="text" name="module_name" class="form-control" value="{{ $result->module_name }}" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Academic Year</label>
<input type="text" name="academic_year" class="form-control" value="{{ $result->academic_year }}" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Semester</label>
<input type="text" name="semester" class="form-control" value="{{ $result->semester }}" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Marks</label>
<input type="number" step="0.01" name="marks" class="form-control" value="{{ $result->marks }}" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Grade</label>
<input type="text" name="grade" class="form-control" value="{{ $result->grade }}" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Status</label>
<select name="status" class="form-select" required>
<option value="Pass" {{ $result->status == 'Pass' ? 'selected' : '' }}>Pass</option>
<option value="Fail" {{ $result->status == 'Fail' ? 'selected' : '' }}>Fail</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Update Result</button>
</div>
</form>
</div>
</div>
</div>
@empty
<tr>
<td colspan="10" class="text-center py-4 text-muted">No examination results found.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Import Excel Modal -->
<div class="modal fade" id="importExcelModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-success text-white">
<h5 class="modal-title"><i class="fa-solid fa-file-excel me-2"></i>Import Results Excel File</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form action="{{ route('admin.results.import') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="modal-body">
<div class="mb-3">
<label class="form-label fw-bold">Choose Excel File (.xlsx, .xls, .csv)</label>
<input type="file" name="excel_file" class="form-control" accept=".xlsx, .xls, .csv" required>
</div>
<div class="alert alert-info py-2 small mb-0">
<i class="fa-solid fa-circle-info me-1"></i>This Excel <strong>Headers</strong>that should be included in the file for successful import:
<br><code>student_log_id</code>, <code>module_code</code>, <code>module_name</code>, <code>academic_year</code>, <code>semester</code>, <code>marks</code>, <code>grade</code>, <code>status</code>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-success"><i class="fa-solid fa-upload me-1"></i> Upload & Process</button>
</div>
</form>
</div>
</div>
</div>
<!-- Add Result Modal -->
<div class="modal fade" id="addResultModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-navy text-white">
<h5 class="modal-title"><i class="fa-solid fa-plus-circle me-2"></i>Add New Examination Result</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form action="{{ route('admin.results.store') }}" method="POST">
@csrf
<div class="modal-body">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label fw-bold">Student Log ID</label>
<input type="text" name="student_log_id" class="form-control" placeholder="e.g. ST1001" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Module Code</label>
<input type="text" name="module_code" class="form-control" placeholder="e.g. AME201" required>
</div>
<div class="col-md-12">
<label class="form-label fw-bold">Module Name</label>
<input type="text" name="module_name" class="form-control" placeholder="e.g. Automobile Technology II" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Academic Year</label>
<input type="text" name="academic_year" class="form-control" placeholder="e.g. 2025/2026" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold">Semester</label>
<input type="text" name="semester" class="form-control" placeholder="e.g. Semester 1" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Marks</label>
<input type="number" step="0.01" name="marks" class="form-control" placeholder="0 - 100" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Grade</label>
<input type="text" name="grade" class="form-control" placeholder="e.g. A+, B, C" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">Status</label>
<select name="status" class="form-select" required>
<option value="Pass">Pass</option>
<option value="Fail">Fail</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-success"><i class="fa-solid fa-floppy-disk me-1"></i> Save Result</button>
</div>
</form>
</div>
</div>
</div>
@endsection