Refactor course finder and resources templates for improved readability and functionality

- Updated course finder form to use HTML helper methods for cleaner syntax.
- Enhanced form structure with better class management and attributes.
- Implemented AJAX pagination for course listings to improve user experience.
- Cleaned up resource template code for consistency and readability.
- Ensured proper indentation and spacing for better maintainability.
- Added missing target="_blank" attribute for external links in resource documents.
This commit is contained in:
2025-08-03 18:01:22 +05:45
parent 5e4cb2767c
commit afc7c61f86
5 changed files with 582 additions and 450 deletions

View File

@@ -93,7 +93,6 @@ class ProgramController extends Controller
$program->tests()->sync($attachData);
flash()->success('Program has been created!');
});
return redirect()->route('program.index');
@@ -148,7 +147,6 @@ class ProgramController extends Controller
}
$program->tests()->sync($attachData);
});
flash()->success('program has been updated!');
@@ -166,12 +164,10 @@ class ProgramController extends Controller
$program->delete();
flash()->success('Program has been deleted!');
} catch (\Throwable $th) {
flash()->error($th->getMessage());
}
return response()->json(['status' => 200, 'message' => 'Program has been deleted!'], 200);
}
public function getProgramByInstitution(Request $request)
@@ -190,7 +186,6 @@ class ProgramController extends Controller
'status' => false,
'msg' => $th->getMessage(),
], 500);
}
}
@@ -206,4 +201,62 @@ class ProgramController extends Controller
return redirect()->back()->with('error', $th->getMessage());
}
}
public function getCoursesList(Request $request)
{
$data['intakes'] = Program::INTAKE;
$query = Program::query();
if ($request->filled('countries_id')) {
$query->whereRelation('institution', 'countries_id', $request->countries_id);
}
if ($request->filled('institution_id')) {
$query->where('institutions_id', $request->institution_id);
}
if ($request->filled('search')) {
$query->where(function ($q) use ($request) {
$q->where('keywords', 'like', "%{$request->search}%")
->orWhere('title', 'like', "%{$request->search}%");
});
}
if ($request->filled('programlevels_id')) {
$query->where('programlevels_id', $request->programlevels_id);
}
if ($request->filled('intake_id')) {
$query->whereJsonContains('intakes', $request->intake_id);
}
if ($request->filled('preffered_location')) {
$query->where('location', 'like', "%{$request->preffered_location}%");
}
if ($request->filled('service_id')) {
$query->whereRelation('services', 'service_id', '=', $request->service_id);
if ($request->filled('min_score')) {
$query->whereRelation('services', 'min_score', '<=', $request->min_score);
}
if ($request->filled('max_score')) {
$query->whereRelation('services', 'band_score', '<=', $request->max_score);
}
}
$data['courses'] = $query
->orderBy('title', 'asc')
->paginate(10)
->withQueryString();
$queryCount = $data['courses']->total();
if ($request->ajax()) {
$view = view('client.raffles.pages.course.list', $data)->render();
return response()->json(['html' => $view, 'queryCount' => $queryCount]);
}
}
}

View File

@@ -188,45 +188,46 @@
</div>
<div id="myModal" class="modal fade" tabindex="-1" aria-labelledby="myModalLabel" aria-hidden="false"
style="display: none;">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel">Program Import</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"> </button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<form action="{{ route('program.import') }}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<div class="form-control-wrap mb-1">
<input class="form-control" id="formFileLg" type="file" name="file"
accept=".xlsx, .xls, .csv" required>
</div>
style="display: none;">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel">Program Import</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"> </button>
</div>
<button type="submit" class="btn btn-primary btn-md float-right mt-3">Upload</button>
</form>
</div>
<div class="col-lg-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Sample Sheet</h5>
<p class="card-text text-danger">Note: Do not change sheet header.
</p>
<a href="{{ asset('samples/CourseSample.xlsx') }}" class="btn btn-secondary btn-md">Download
Sample</a>
</div>
</div>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<form action="{{ route('program.import') }}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<div class="form-control-wrap mb-1">
<input class="form-control" id="formFileLg" type="file" name="file"
accept=".xlsx, .xls, .csv" required>
</div>
</div>
<button type="submit" class="btn btn-primary btn-md float-right mt-3">Upload</button>
</form>
</div>
<div class="col-lg-6">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Sample Sheet</h5>
<p class="card-text text-danger">Note: Do not change sheet header.
</p>
<a href="{{ asset('samples/CourseSample.xlsx') }}"
class="btn btn-secondary btn-md">Download
Sample</a>
</div>
</div>
</div>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
@endsection
@push('js')
<script>