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 @@ }); - + +