From 3262e279a8e584d4cc6d9600c80d5b179c8293bf Mon Sep 17 00:00:00 2001 From: Subash Date: Tue, 19 Aug 2025 13:44:14 +0545 Subject: [PATCH 1/5] Clean up unused variables and improve sidebar label for clarity --- app/Http/Controllers/WebsiteController.php | 17 +++++++---------- config/sidebar.php | 2 +- .../raffles/layouts/partials/header.blade.php | 4 +++- .../client/raffles/pages/cost-result.blade.php | 1 - .../pages/study-destination-template.blade.php | 8 ++++---- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/WebsiteController.php b/app/Http/Controllers/WebsiteController.php index 97fe477..f3f15ed 100644 --- a/app/Http/Controllers/WebsiteController.php +++ b/app/Http/Controllers/WebsiteController.php @@ -148,23 +148,20 @@ class WebsiteController extends Controller { $country = $data["page"] = Country::where('status', 1) ->where('slug', $alias) - ->with('institutions', function ($query) { - $query->where('status', 1); - }) ->first(); if (!$country) { return view("client.$this->path.errors.404"); } - $data['countryFAQs'] = getFAQsByCategory(limit: null, order: 'desc', category: $country->slug); - $data['countryInstitutions'] = $country->institutions; + // $data['countryFAQs'] = getFAQsByCategory(limit: null, order: 'desc', category: $country->slug); + // $data['countryInstitutions'] = $country->institutions; - $data['recentCountries'] = Country::where('status', 1) - ->where('id', '!=', $country->id) - ->inRandomOrder() - ->orderBy('created_at', 'desc') - ->take(5)->get(); + // $data['recentCountries'] = Country::where('status', 1) + // ->where('id', '!=', $country->id) + // ->inRandomOrder() + // ->orderBy('created_at', 'desc') + // ->take(5)->get(); return view("client.$this->path.pages.study-destination-template", $data); } diff --git a/config/sidebar.php b/config/sidebar.php index a956bac..aaa7545 100644 --- a/config/sidebar.php +++ b/config/sidebar.php @@ -245,7 +245,7 @@ return [ ], [ - 'text' => 'Documents', + 'text' => 'Free Resources', 'url' => 'admin/documents', 'icon' => 'ri-file-text-line', 'module' => 'Document', diff --git a/resources/views/client/raffles/layouts/partials/header.blade.php b/resources/views/client/raffles/layouts/partials/header.blade.php index b6f58ca..cfdd0f3 100644 --- a/resources/views/client/raffles/layouts/partials/header.blade.php +++ b/resources/views/client/raffles/layouts/partials/header.blade.php @@ -216,7 +216,9 @@ -

Estimated Cost Calculation For {{ $cost->country?->title ?? 'N/A' }} (children[0]; - @endphp + +

study uk
@@ -12,7 +11,8 @@

Study in {{ $page->title }}

- @if ($page->children->count() > 0) + + @if ($page->children)
From 6f16c1230fae2f875cfd8e29ee02ff458c57d952 Mon Sep 17 00:00:00 2001 From: Subash Date: Tue, 19 Aug 2025 17:28:23 +0545 Subject: [PATCH 2/5] feat: Implement Counselor management with CRUD functionality and associated views --- .../Http/Controllers/CounselorController.php | 117 ++++++++++++++++++ Modules/CCMS/app/Models/Counselor.php | 22 ++++ ...5_08_19_104522_create_counselors_table.php | 33 +++++ .../views/counselor/create.blade.php | 14 +++ .../counselor/datatable/action.blade.php | 10 ++ .../resources/views/counselor/edit.blade.php | 14 +++ .../resources/views/counselor/index.blade.php | 37 ++++++ .../views/counselor/partials/_form.blade.php | 71 +++++++++++ Modules/CCMS/routes/web.php | 7 +- .../client/raffles/layouts/app.blade.php | 40 +++++- .../client/raffles/parts/banner.blade.php | 5 +- .../raffles/parts/get-in-touch.blade.php | 11 +- 12 files changed, 369 insertions(+), 12 deletions(-) create mode 100644 Modules/CCMS/app/Http/Controllers/CounselorController.php create mode 100644 Modules/CCMS/app/Models/Counselor.php create mode 100644 Modules/CCMS/database/migrations/2025_08_19_104522_create_counselors_table.php create mode 100644 Modules/CCMS/resources/views/counselor/create.blade.php create mode 100644 Modules/CCMS/resources/views/counselor/datatable/action.blade.php create mode 100644 Modules/CCMS/resources/views/counselor/edit.blade.php create mode 100644 Modules/CCMS/resources/views/counselor/index.blade.php create mode 100644 Modules/CCMS/resources/views/counselor/partials/_form.blade.php diff --git a/Modules/CCMS/app/Http/Controllers/CounselorController.php b/Modules/CCMS/app/Http/Controllers/CounselorController.php new file mode 100644 index 0000000..9d8b588 --- /dev/null +++ b/Modules/CCMS/app/Http/Controllers/CounselorController.php @@ -0,0 +1,117 @@ +ajax()) { + $model = Counselor::query()->latest(); + return DataTables::eloquent($model) + ->addIndexColumn() + ->addColumn('action', 'ccms::counselor.datatable.action') + ->rawColumns(['action']) + ->toJson(); + } + return view('ccms::counselor.index', [ + 'title' => 'Counselor List', + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('ccms::create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + try { + $rules = [ + 'name' => 'required|string', + 'email' => 'required|email', + 'address' => 'required|string', + 'contact' => 'required|string', + 'test_score' => 'required|string', + 'qualification' => 'required|string', + ]; + + if (setting('enable_reCaptcha') == 1) { + $rules['g-recaptcha-response'] = ['required', new Recaptcha]; + } + + $messages = [ + 'email.email' => 'Must be a valid email address.', + 'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.', + 'g-recaptcha-response' => 'Invalid reCAPTCHA.', + ]; + + $validator = Validator::make($request->all(), $rules, $messages); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 422); + } + + Counselor::create($validator->validated()); + + return response()->json(['status' => 200, 'message' => "Thank you for reaching out! Your message has been received and we'll get back to you shortly."], 200); + } catch (\Exception $e) { + return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500); + } + } + + /** + * Show the specified resource. + */ + public function show($id) + { + return view('ccms::show'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + return view('ccms::edit'); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + $enquiry = Counselor::whereId($id)->first(); + if ($enquiry) { + $enquiry->delete(); + } + return response()->json(['status' => 200, 'message' => 'Counselor has been deleted!'], 200); + } catch (\Throwable $th) { + return redirect()->back()->with('error', $th->getMessage()); + } + } +} diff --git a/Modules/CCMS/app/Models/Counselor.php b/Modules/CCMS/app/Models/Counselor.php new file mode 100644 index 0000000..e917b76 --- /dev/null +++ b/Modules/CCMS/app/Models/Counselor.php @@ -0,0 +1,22 @@ +id(); + $table->string('name')->nullable(); + $table->text('address')->nullable(); + $table->string('email')->nullable(); + $table->string('contact')->nullable(); + $table->string('test_score')->nullable(); + $table->string('qualification')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('counselors'); + } +}; diff --git a/Modules/CCMS/resources/views/counselor/create.blade.php b/Modules/CCMS/resources/views/counselor/create.blade.php new file mode 100644 index 0000000..b386130 --- /dev/null +++ b/Modules/CCMS/resources/views/counselor/create.blade.php @@ -0,0 +1,14 @@ +@extends('layouts.app') +@section('content') +
+ + + + {{ html()->form('POST')->route('testimonial.store')->class(['needs-validation'])->attributes(['enctype' => 'multipart/form-data', 'novalidate'])->open() }} + + @include('ccms::testimonial.partials._form') + + {{ html()->form()->close() }} + +
+@endsection diff --git a/Modules/CCMS/resources/views/counselor/datatable/action.blade.php b/Modules/CCMS/resources/views/counselor/datatable/action.blade.php new file mode 100644 index 0000000..f8d5412 --- /dev/null +++ b/Modules/CCMS/resources/views/counselor/datatable/action.blade.php @@ -0,0 +1,10 @@ +
+ + + + + + + +
diff --git a/Modules/CCMS/resources/views/counselor/edit.blade.php b/Modules/CCMS/resources/views/counselor/edit.blade.php new file mode 100644 index 0000000..5d96439 --- /dev/null +++ b/Modules/CCMS/resources/views/counselor/edit.blade.php @@ -0,0 +1,14 @@ +@extends('layouts.app') +@section('content') +
+ + + + {{ html()->modelForm($testimonial, 'PUT')->route('testimonial.update', $testimonial->id)->class(['needs-validation'])->attributes(['novalidate'])->open() }} + + @include('ccms::testimonial.partials._form') + + {{ html()->form()->close() }} + +
+@endsection diff --git a/Modules/CCMS/resources/views/counselor/index.blade.php b/Modules/CCMS/resources/views/counselor/index.blade.php new file mode 100644 index 0000000..c6f1b0e --- /dev/null +++ b/Modules/CCMS/resources/views/counselor/index.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.app') +@section('content') +
+ +
+
+
{{ $title }}
+
+
+ @php + $columns = [ + [ + 'title' => 'S.N', + 'data' => 'DT_RowIndex', + 'name' => 'DT_RowIndex', + 'orderable' => false, + 'searchable' => false, + 'sortable' => false, + ], + ['title' => 'Name', 'data' => 'name', 'name' => 'name'], + ['title' => 'Email', 'data' => 'email', 'name' => 'email'], + ['title' => 'Contact', 'data' => 'contact', 'name' => 'contact'], + ['title' => 'Test Score', 'data' => 'test_score', 'name' => 'test_score'], + ['title' => 'Qualification', 'data' => 'qualification', 'name' => 'qualification'], + [ + 'title' => 'Action', + 'data' => 'action', + 'orderable' => false, + 'searchable' => false, + ], + ]; + @endphp + +
+
+
+@endsection diff --git a/Modules/CCMS/resources/views/counselor/partials/_form.blade.php b/Modules/CCMS/resources/views/counselor/partials/_form.blade.php new file mode 100644 index 0000000..d2b7a04 --- /dev/null +++ b/Modules/CCMS/resources/views/counselor/partials/_form.blade.php @@ -0,0 +1,71 @@ +
+
+
+
+
+
+ {{ html()->label('Name')->class('form-label') }} + {{ html()->span('*')->class('text-danger') }} + {{ html()->text('title')->class('form-control')->placeholder('Enter Name')->required() }} + {{ html()->div('Name is required')->class('invalid-feedback') }} +
+ +
+ {{ html()->label('Designation')->class('form-label') }} + {{ html()->text('designation')->class('form-control')->placeholder('Enter Designation') }} +
+ +
+ {{ html()->label('Company')->class('form-label') }} + {{ html()->text('company')->class('form-control')->placeholder('Enter Company') }} +
+ +
+ {{ html()->label('Branch')->class('form-label')->for('branch_id') }} + {{ html()->select('branch_id', $branchOptions)->class('form-select choices-select')->placeholder('Select') }} +
+ +
+ {{ html()->label('Comment')->class('form-label')->for('description') }} + {{ html()->span('*')->class('text-danger') }} + {{ html()->textarea('description')->class('form-control')->rows(10) }} +
+
+
+
+
+ +
+
+
+
Publish
+
+
+
+
+ {{ html()->select('status', config('constants.page_status_options'))->class('form-select choices-select ') }} +
+
+
+ + + +
+ + +
+ +
diff --git a/Modules/CCMS/routes/web.php b/Modules/CCMS/routes/web.php index b2125e5..bf7bfe3 100644 --- a/Modules/CCMS/routes/web.php +++ b/Modules/CCMS/routes/web.php @@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route; use Modules\CCMS\Http\Controllers\BlogController; use Modules\CCMS\Http\Controllers\BranchController; use Modules\CCMS\Http\Controllers\CategoryController; +use Modules\CCMS\Http\Controllers\CounselorController; use Modules\CCMS\Http\Controllers\CounterController; use Modules\CCMS\Http\Controllers\CountryController; use Modules\CCMS\Http\Controllers\EnquiryController; @@ -33,7 +34,7 @@ use Modules\CCMS\Http\Controllers\TestimonialController; | */ -Route::group(['middleware' => ['web', 'auth', 'permission'],'prefix' => 'admin/'], function () { +Route::group(['middleware' => ['web', 'auth', 'permission'], 'prefix' => 'admin/'], function () { Route::post('page/reorder', [PageController::class, 'reorder'])->name('page.reorder'); Route::get('page/toggle/{id}', [PageController::class, 'toggle'])->name('page.toggle'); @@ -122,6 +123,6 @@ Route::group(['middleware' => ['web', 'auth', 'permission'],'prefix' => 'admin/' Route::get('enquiry/mark-as-read/{id}', [EnquiryController::class, 'markAsRead'])->name('enquiry.markAsRead'); Route::resource('enquiry', EnquiryController::class)->names('enquiry')->only(['index', 'store', 'destroy']); + + Route::resource('counselor', CounselorController::class)->names('counselor')->only(['index', 'store', 'destroy']); }); - - diff --git a/resources/views/client/raffles/layouts/app.blade.php b/resources/views/client/raffles/layouts/app.blade.php index e546a73..400ab45 100644 --- a/resources/views/client/raffles/layouts/app.blade.php +++ b/resources/views/client/raffles/layouts/app.blade.php @@ -219,7 +219,45 @@ }); - + + - - +