diff --git a/Modules/CCMS/app/Http/Controllers/VacancyController.php b/Modules/CCMS/app/Http/Controllers/VacancyController.php new file mode 100644 index 0000000..4dce270 --- /dev/null +++ b/Modules/CCMS/app/Http/Controllers/VacancyController.php @@ -0,0 +1,147 @@ +ajax()) { + $model = Vacancy::query()->latest(); + return DataTables::eloquent($model) + ->addIndexColumn() + // ->setRowClass(function (Vacancy $vacancy) { + // return $vacancy->is_read ? 'text-muted' : 'text-dark'; + // }) + // ->editColumn('class', function (Vacancy $vacancy) { + // return $vacancy->class ?? '-'; + // }) + // ->editColumn('subject', function (Vacancy $vacancy) { + // return $vacancy->subject ?? '-'; + // }) + // ->editColumn('message', function (Vacancy $vacancy) { + // return $vacancy->message ?? '-'; + // }) + ->addColumn('action', 'ccms::vacancy.datatable.action') + ->rawColumns(['action']) + ->toJson(); + } + return view('ccms::vacancy.index', [ + 'title' => 'Vacancy List', + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + try { + // $rules = [ + + + // ]; + + // 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()); + // if ($validator->fails()) { + // return response()->json(['errors' => $validator->errors()], 422); + // } + + $modelClass = "Modules\\CCMS\\Models\\Career"; + + $model = $modelClass::findOrFail($request->career_id); + foreach ($request->document as $file) { + $model->addToDocumentCollection(collectionName: 'uploads/document', file: $file, documentName: $request->first_name, referenceDocumentId: null); + } + + Vacancy::create($request->all()); + + 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) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + try { + $vacancy = Vacancy::whereId($id)->first(); + if ($vacancy) { + $vacancy->delete(); + } + return response()->json(['status' => 200, 'message' => 'Vacancy has been deleted!'], 200); + } catch (\Throwable $th) { + return redirect()->back()->with('error', $th->getMessage()); + } + } + + public function markAsRead($id) + { + try { + $vacancy = Vacancy::whereId($id)->first(); + if ($vacancy) { + $vacancy->update(['is_read' => 1]); + } + return response()->json(['status' => 200, 'message' => 'Vacancy has been marked as read!'], 200); + } catch (\Throwable $th) { + return redirect()->back()->with('error', $th->getMessage()); + } + } +} diff --git a/Modules/CCMS/app/Models/Vacancy.php b/Modules/CCMS/app/Models/Vacancy.php new file mode 100644 index 0000000..b8607f1 --- /dev/null +++ b/Modules/CCMS/app/Models/Vacancy.php @@ -0,0 +1,21 @@ +id(); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('email')->nullable(); + $table->string('phone')->nullable(); + $table->string('qualification')->nullable(); + $table->text('description')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('vacancies'); + } +}; diff --git a/Modules/User/routes/client.php b/Modules/User/routes/client.php index 599de34..5b37344 100644 --- a/Modules/User/routes/client.php +++ b/Modules/User/routes/client.php @@ -5,6 +5,7 @@ use Illuminate\Support\Facades\Route; use Modules\CCMS\Http\Controllers\EnquiryController; use Modules\CCMS\Http\Controllers\FranchiseController; use Modules\CCMS\Http\Controllers\NewsletterController; +use Modules\CCMS\Http\Controllers\VacancyController; use Modules\CCMS\Models\Franchise; use Modules\CourseFinder\Http\Controllers\CoopController; use Modules\CourseFinder\Http\Controllers\ProgramController; @@ -24,6 +25,7 @@ Route::get('getCoursesList', [ProgramController::class, 'getCoursesList'])->name Route::post('enquiry', [EnquiryController::class, 'store'])->name('enquiry.store'); Route::post('franchise', [FranchiseController::class, 'store'])->name('franchise.store'); Route::post('newsletter', [NewsletterController::class, 'store'])->name('newsletter.store'); +Route::post('vacancy', [VacancyController::class, 'store'])->name('vacancy.store'); Route::get('career/{id}', [WebsiteController::class, 'careerSingle'])->name('career.single'); diff --git a/app/Traits/AddToDocumentCollection.php b/app/Traits/AddToDocumentCollection.php index bff2a4b..e18cb10 100644 --- a/app/Traits/AddToDocumentCollection.php +++ b/app/Traits/AddToDocumentCollection.php @@ -11,6 +11,7 @@ trait AddToDocumentCollection { public function addToDocumentCollection(string $collectionName = 'uploads', string $file, ?string $documentName = null, ?int $referenceDocumentId = null) { + dd($documentName); if (!Storage::disk('public')->exists($collectionName)) { Storage::disk('public')->makeDirectory($collectionName); } diff --git a/resources/views/client/raffles/layouts/app.blade.php b/resources/views/client/raffles/layouts/app.blade.php index b6a868a..7fe92ee 100644 --- a/resources/views/client/raffles/layouts/app.blade.php +++ b/resources/views/client/raffles/layouts/app.blade.php @@ -219,7 +219,7 @@ }); - - + +