From 2339e48b288baa3e6665bcb57db52a54f5b32873 Mon Sep 17 00:00:00 2001 From: Subash Date: Tue, 8 Jul 2025 17:53:06 +0545 Subject: [PATCH] Added CRUD routes for benefits, success stories, and visa grants Landing registration page completed except design --- app/Helpers/CCMS.php | 65 +- app/Http/Controllers/BenefitsController.php | 228 +++ app/Http/Controllers/FormsController.php | 5 +- .../Controllers/Success_storiesController.php | 228 +++ .../Controllers/Visa_grantsController.php | 198 ++ app/Http/Controllers/WebsiteController.php | 71 +- app/Models/Benefits.php | 51 + app/Models/Enquiries.php | 14 +- app/Models/Success_stories.php | 51 + app/Models/Visa_grants.php | 51 + resources/views/backend/sidebar.blade.php | 6 +- .../crud/generated/benefits/create.blade.php | 167 ++ .../crud/generated/benefits/edit.blade.php | 233 +++ .../crud/generated/benefits/index.blade.php | 231 +++ .../crud/generated/benefits/show.blade.php | 29 + .../success_stories/create.blade.php | 167 ++ .../generated/success_stories/edit.blade.php | 233 +++ .../generated/success_stories/index.blade.php | 231 +++ .../generated/success_stories/show.blade.php | 29 + .../generated/visa_grants/create.blade.php | 168 ++ .../crud/generated/visa_grants/edit.blade.php | 234 +++ .../generated/visa_grants/index.blade.php | 231 +++ .../crud/generated/visa_grants/show.blade.php | 29 + resources/views/landing/index.blade.php | 1649 ++++++++--------- routes/CRUDgenerated/route.benefits.php | 15 + .../CRUDgenerated/route.success_stories.php | 15 + routes/CRUDgenerated/route.visa_grants.php | 15 + routes/web.php | 4 +- storage/app/public/files/1/success-1.png | Bin 0 -> 18071 bytes 29 files changed, 3722 insertions(+), 926 deletions(-) create mode 100644 app/Http/Controllers/BenefitsController.php create mode 100644 app/Http/Controllers/Success_storiesController.php create mode 100644 app/Http/Controllers/Visa_grantsController.php create mode 100644 app/Models/Benefits.php create mode 100644 app/Models/Success_stories.php create mode 100644 app/Models/Visa_grants.php create mode 100644 resources/views/crud/generated/benefits/create.blade.php create mode 100644 resources/views/crud/generated/benefits/edit.blade.php create mode 100644 resources/views/crud/generated/benefits/index.blade.php create mode 100644 resources/views/crud/generated/benefits/show.blade.php create mode 100644 resources/views/crud/generated/success_stories/create.blade.php create mode 100644 resources/views/crud/generated/success_stories/edit.blade.php create mode 100644 resources/views/crud/generated/success_stories/index.blade.php create mode 100644 resources/views/crud/generated/success_stories/show.blade.php create mode 100644 resources/views/crud/generated/visa_grants/create.blade.php create mode 100644 resources/views/crud/generated/visa_grants/edit.blade.php create mode 100644 resources/views/crud/generated/visa_grants/index.blade.php create mode 100644 resources/views/crud/generated/visa_grants/show.blade.php create mode 100644 routes/CRUDgenerated/route.benefits.php create mode 100644 routes/CRUDgenerated/route.success_stories.php create mode 100644 routes/CRUDgenerated/route.visa_grants.php create mode 100644 storage/app/public/files/1/success-1.png diff --git a/app/Helpers/CCMS.php b/app/Helpers/CCMS.php index 6285753..586b6a9 100644 --- a/app/Helpers/CCMS.php +++ b/app/Helpers/CCMS.php @@ -275,14 +275,14 @@ class CCMS { $isActive = request()->fullUrl() == $URL; $activeClass = $isActive ? 'active' : ''; - ?> +?>
  • - + ?> - first())) { DB::statement("INSERT INTO `tbl_users` (`id`, `name`, `email`, `username`, `email_verified_at`, `status`, `password`, `is_admin`, `remember_token`, `created_at`, `updated_at`) VALUES (1, 'Prajwal Adhikari', 'prajwalbro@hotmail.com', 'prajwalbro@hotmail.com', '2024-04-18 09:59:01', 1, '$2y$10$3zlF9VeXexzWKRDPZuDio.W7RZIC3tU.cjwMoLzG8ki8bVwAQn1WW', 1, NULL, '2024-04-18 09:58:39', '2024-04-18 09:58:46');"); @@ -1471,7 +1522,7 @@ CREATE TABLE IF NOT EXISTS `tbl_visagrantposts` ( if (!(DB::table('settings')->first())) { DB::statement("INSERT INTO `tbl_settings` (`title`, `description`, `status`) values ('Bibhuti LMS', '', '1');"); } - + if (!Schema::hasColumn('testimonials', 'rating')) { Schema::table('testimonials', function (Blueprint $table) { $table->integer('rating')->nullable(); diff --git a/app/Http/Controllers/BenefitsController.php b/app/Http/Controllers/BenefitsController.php new file mode 100644 index 0000000..c7b245b --- /dev/null +++ b/app/Http/Controllers/BenefitsController.php @@ -0,0 +1,228 @@ +modelService = new CommonModelService($model); + } + public function index(Request $request) + { + createActivityLog(BenefitsController::class, 'index', ' Benefits index'); + $data = Benefits::where('status', '<>', -1)->orderBy('display_order')->get(); + + return view("crud.generated.benefits.index", compact('data')); + } + + public function create(Request $request) + { + createActivityLog(BenefitsController::class, 'create', ' Benefits create'); + $TableData = Benefits::where('status', '<>', -1)->orderBy('display_order')->get(); + return view("crud.generated.benefits.create", compact('TableData')); + } + + public function store(Request $request) + { + createActivityLog(BenefitsController::class, 'store', ' Benefits store'); + $validator = Validator::make($request->all(), [ + //ADD REQUIRED FIELDS FOR VALIDATION + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ], 500); + } + $request->request->add(['alias' => slugify($request->title)]); + $request->request->add(['display_order' => getDisplayOrder('tbl_benefits')]); + $requestData = $request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL') . '/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + if (isset($request->fieldTitles)) { + $fieldTitles = $request->fieldTitles; + $fieldHeader = $request->fieldHeader; + $fieldDescriptions = $request->fieldDescriptions; + $fieldData = []; + // Loop through the arrays and create an associative array for each field + for ($i = 0; $i < count($fieldTitles); $i++) { + $fieldData[] = [ + 'fieldTitle' => $fieldTitles[$i], + 'fieldHeader' => $fieldHeader[$i], + 'fieldDescriptions' => $fieldDescriptions[$i], + ]; + } + // Convert the field data array to JSON string + $requestData["extra_content"] = json_encode($fieldData); + } + DB::beginTransaction(); + try { + $operationNumber = getOperationNumber(); + $this->modelService->create($operationNumber, $operationNumber, null, $requestData); + } catch (\Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(BenefitsController::class, 'store', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Benefits Created Successfully.'], 200); + } + return redirect()->route('benefits.index')->with('success', 'The Benefits created Successfully.'); + } + + public function sort(Request $request) + { + $idOrder = $request->input('id_order'); + + foreach ($idOrder as $index => $id) { + $companyArticle = Benefits::find($id); + $companyArticle->display_order = $index + 1; + $companyArticle->save(); + } + + return response()->json(['status' => true, 'content' => 'The articles sorted successfully.'], 200); + } + public function updatealias(Request $request) + { + + $articleId = $request->input('articleId'); + $newAlias = $request->input('newAlias'); + $companyArticle = Benefits::find($articleId); + if (!$companyArticle) { + return response()->json(['status' => false, 'content' => 'Company article not found.'], 404); + } + $companyArticle->alias = $newAlias; + $companyArticle->save(); + return response()->json(['status' => true, 'content' => 'Alias updated successfully.'], 200); + } + + + + + public function show(Request $request, $id) + { + createActivityLog(BenefitsController::class, 'show', ' Benefits show'); + $data = Benefits::findOrFail($id); + + return view("crud.generated.benefits.show", compact('data')); + } + + + public function edit(Request $request, $id) + { + createActivityLog(BenefitsController::class, 'edit', ' Benefits edit'); + $TableData = Benefits::where('status', '<>', -1)->orderBy('display_order')->get(); + $data = Benefits::findOrFail($id); + if ($request->ajax()) { + $html = view("crud.generated.benefits.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + return view("crud.generated.benefits.edit", compact('data', 'TableData')); + } + + + public function update(Request $request, $id) + { + createActivityLog(BenefitsController::class, 'update', ' Benefits update'); + $validator = Validator::make($request->all(), [ + //ADD VALIDATION FOR REQIRED FIELDS + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ], 500); + } + $requestData = $request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL') . '/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + if (isset($request->fieldTitles)) { + $fieldTitles = $request->fieldTitles; + $fieldHeader = $request->fieldHeader; + $fieldDescriptions = $request->fieldDescriptions; + $fieldData = []; + // Loop through the arrays and create an associative array for each field + for ($i = 0; $i < count($fieldTitles); $i++) { + $fieldData[] = [ + 'fieldTitle' => $fieldTitles[$i], + 'fieldHeader' => $fieldHeader[$i], + 'fieldDescriptions' => $fieldDescriptions[$i], + ]; + } + // Convert the field data array to JSON string + $requestData["extra_content"] = json_encode($fieldData); + } + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $request->input('benefit_id')); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(BenefitsController::class, 'update', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Benefits updated Successfully.'], 200); + } + // return redirect()->route('benefits.index')->with('success','The Benefits updated Successfully.'); + return redirect()->back()->with('success', 'The Benefits updated successfully.'); + } + + public function destroy(Request $request, $id) + { + createActivityLog(BenefitsController::class, 'destroy', ' Benefits destroy'); + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->destroy($OperationNumber, $OperationNumber, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(BenefitsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Benefits Deleted Successfully.'], 200); + } + public function toggle(Request $request, $id) + { + createActivityLog(BenefitsController::class, 'destroy', ' Benefits destroy'); + $data = Benefits::findOrFail($id); + $requestData = ['status' => ($data->status == 1) ? 0 : 1]; + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(BenefitsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Benefits Deleted Successfully.'], 200); + } +} diff --git a/app/Http/Controllers/FormsController.php b/app/Http/Controllers/FormsController.php index 0ee37aa..cc16f12 100644 --- a/app/Http/Controllers/FormsController.php +++ b/app/Http/Controllers/FormsController.php @@ -280,7 +280,6 @@ class FormsController extends Controller 'name' => 'required', 'email' => 'required|email', 'phone' => 'required', - 'message' => 'required', ]; if ($setting->recaptcha_secret_key) { @@ -320,8 +319,6 @@ class FormsController extends Controller "name" => $r->input('name'), "email" => $r->input('email'), "phone" => $r->input('phone'), - "message" => $r->input('message'), - "service_id" => $r->input('service_id'), ]; Enquiries::create($FormData); @@ -329,7 +326,7 @@ class FormsController extends Controller return response()->json([ 'success' => true, 'status' => 200, - 'message' => 'Thank you for your enquiry. We will get back to you soon.', + 'message' => 'Thank you. We will get back to you soon.', ], 200); } diff --git a/app/Http/Controllers/Success_storiesController.php b/app/Http/Controllers/Success_storiesController.php new file mode 100644 index 0000000..9eaa715 --- /dev/null +++ b/app/Http/Controllers/Success_storiesController.php @@ -0,0 +1,228 @@ +modelService = new CommonModelService($model); + } + public function index(Request $request) + { + createActivityLog(Success_storiesController::class, 'index', ' Success_stories index'); + $data = Success_stories::where('status', '<>', -1)->orderBy('display_order')->get(); + + return view("crud.generated.success_stories.index", compact('data')); + } + + public function create(Request $request) + { + createActivityLog(Success_storiesController::class, 'create', ' Success_stories create'); + $TableData = Success_stories::where('status', '<>', -1)->orderBy('display_order')->get(); + return view("crud.generated.success_stories.create", compact('TableData')); + } + + public function store(Request $request) + { + createActivityLog(Success_storiesController::class, 'store', ' Success_stories store'); + $validator = Validator::make($request->all(), [ + //ADD REQUIRED FIELDS FOR VALIDATION + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ], 500); + } + $request->request->add(['alias' => slugify($request->title)]); + $request->request->add(['display_order' => getDisplayOrder('tbl_success_stories')]); + $requestData = $request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL') . '/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + if (isset($request->fieldTitles)) { + $fieldTitles = $request->fieldTitles; + $fieldHeader = $request->fieldHeader; + $fieldDescriptions = $request->fieldDescriptions; + $fieldData = []; + // Loop through the arrays and create an associative array for each field + for ($i = 0; $i < count($fieldTitles); $i++) { + $fieldData[] = [ + 'fieldTitle' => $fieldTitles[$i], + 'fieldHeader' => $fieldHeader[$i], + 'fieldDescriptions' => $fieldDescriptions[$i], + ]; + } + // Convert the field data array to JSON string + $requestData["extra_content"] = json_encode($fieldData); + } + DB::beginTransaction(); + try { + $operationNumber = getOperationNumber(); + $this->modelService->create($operationNumber, $operationNumber, null, $requestData); + } catch (\Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Success_storiesController::class, 'store', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Success_stories Created Successfully.'], 200); + } + return redirect()->route('success_stories.index')->with('success', 'The Success_stories created Successfully.'); + } + + public function sort(Request $request) + { + $idOrder = $request->input('id_order'); + + foreach ($idOrder as $index => $id) { + $companyArticle = Success_stories::find($id); + $companyArticle->display_order = $index + 1; + $companyArticle->save(); + } + + return response()->json(['status' => true, 'content' => 'The articles sorted successfully.'], 200); + } + public function updatealias(Request $request) + { + + $articleId = $request->input('articleId'); + $newAlias = $request->input('newAlias'); + $companyArticle = Success_stories::find($articleId); + if (!$companyArticle) { + return response()->json(['status' => false, 'content' => 'Company article not found.'], 404); + } + $companyArticle->alias = $newAlias; + $companyArticle->save(); + return response()->json(['status' => true, 'content' => 'Alias updated successfully.'], 200); + } + + + + + public function show(Request $request, $id) + { + createActivityLog(Success_storiesController::class, 'show', ' Success_stories show'); + $data = Success_stories::findOrFail($id); + + return view("crud.generated.success_stories.show", compact('data')); + } + + + public function edit(Request $request, $id) + { + createActivityLog(Success_storiesController::class, 'edit', ' Success_stories edit'); + $TableData = Success_stories::where('status', '<>', -1)->orderBy('display_order')->get(); + $data = Success_stories::findOrFail($id); + if ($request->ajax()) { + $html = view("crud.generated.success_stories.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + return view("crud.generated.success_stories.edit", compact('data', 'TableData')); + } + + + public function update(Request $request, $id) + { + createActivityLog(Success_storiesController::class, 'update', ' Success_stories update'); + $validator = Validator::make($request->all(), [ + //ADD VALIDATION FOR REQIRED FIELDS + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ], 500); + } + $requestData = $request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL') . '/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + if (isset($request->fieldTitles)) { + $fieldTitles = $request->fieldTitles; + $fieldHeader = $request->fieldHeader; + $fieldDescriptions = $request->fieldDescriptions; + $fieldData = []; + // Loop through the arrays and create an associative array for each field + for ($i = 0; $i < count($fieldTitles); $i++) { + $fieldData[] = [ + 'fieldTitle' => $fieldTitles[$i], + 'fieldHeader' => $fieldHeader[$i], + 'fieldDescriptions' => $fieldDescriptions[$i], + ]; + } + // Convert the field data array to JSON string + $requestData["extra_content"] = json_encode($fieldData); + } + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $request->input('stories_id')); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Success_storiesController::class, 'update', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Success_stories updated Successfully.'], 200); + } + // return redirect()->route('success_stories.index')->with('success','The Success_stories updated Successfully.'); + return redirect()->back()->with('success', 'The Success_stories updated successfully.'); + } + + public function destroy(Request $request, $id) + { + createActivityLog(Success_storiesController::class, 'destroy', ' Success_stories destroy'); + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->destroy($OperationNumber, $OperationNumber, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Success_storiesController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Success_stories Deleted Successfully.'], 200); + } + public function toggle(Request $request, $id) + { + createActivityLog(Success_storiesController::class, 'destroy', ' Success_stories destroy'); + $data = Success_stories::findOrFail($id); + $requestData = ['status' => ($data->status == 1) ? 0 : 1]; + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Success_storiesController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status' => true, 'message' => 'The Success_stories Deleted Successfully.'], 200); + } +} diff --git a/app/Http/Controllers/Visa_grantsController.php b/app/Http/Controllers/Visa_grantsController.php new file mode 100644 index 0000000..1e12345 --- /dev/null +++ b/app/Http/Controllers/Visa_grantsController.php @@ -0,0 +1,198 @@ +modelService = new CommonModelService($model); + } + public function index(Request $request) + { + createActivityLog(Visa_grantsController::class, 'index', ' Visa_grants index'); + $data = Visa_grants::where('status','<>',-1)->orderBy('display_order')->get(); + + return view("crud.generated.visa_grants.index", compact('data')); + } + + public function create(Request $request) + { + createActivityLog(Visa_grantsController::class, 'create', ' Visa_grants create'); + $TableData = Visa_grants::where('status','<>',-1)->orderBy('display_order')->get(); + return view("crud.generated.visa_grants.create",compact('TableData')); + } + + public function store(Request $request) + { + createActivityLog(Visa_grantsController::class, 'store', ' Visa_grants store'); + $validator = Validator::make($request->all(), [ + //ADD REQUIRED FIELDS FOR VALIDATION + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ],500); + } + $request->request->add(['alias' => slugify($request->title)]); + $request->request->add(['display_order' => getDisplayOrder('tbl_visa_grants')]); + $requestData=$request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL').'/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + DB::beginTransaction(); + try { + $operationNumber = getOperationNumber(); + $this->modelService->create($operationNumber, $operationNumber, null, $requestData); + } catch (\Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Visa_grantsController::class, 'store', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Visa_grants Created Successfully.'], 200); + } + return redirect()->route('visa_grants.index')->with('success','The Visa_grants created Successfully.'); + } + + public function sort(Request $request) + { + $idOrder = $request->input('id_order'); + + foreach ($idOrder as $index => $id) { + $companyArticle = Visa_grants::find($id); + $companyArticle->display_order = $index + 1; + $companyArticle->save(); + } + + return response()->json(['status' => true, 'content' => 'The articles sorted successfully.'], 200); + } + public function updatealias(Request $request) + { + + $articleId = $request->input('articleId'); + $newAlias = $request->input('newAlias'); + $companyArticle = Visa_grants::find($articleId); + if (!$companyArticle) { + return response()->json(['status' => false, 'content' => 'Company article not found.'], 404); + } + $companyArticle->alias = $newAlias; + $companyArticle->save(); + return response()->json(['status' => true, 'content' => 'Alias updated successfully.'], 200); + } + + + + + public function show(Request $request, $id) + { + createActivityLog(Visa_grantsController::class, 'show', ' Visa_grants show'); + $data = Visa_grants::findOrFail($id); + + return view("crud.generated.visa_grants.show", compact('data')); + } + + + public function edit(Request $request, $id) + { + createActivityLog(Visa_grantsController::class, 'edit', ' Visa_grants edit'); + $TableData = Visa_grants::where('status','<>',-1)->orderBy('display_order')->get(); + $data = Visa_grants::findOrFail($id); + if ($request->ajax()) { + $html = view("crud.generated.visa_grants.ajax.edit", compact('data'))->render(); + return response()->json(['status' => true, 'content' => $html], 200); + } + return view("crud.generated.visa_grants.edit", compact('data','TableData')); + } + + + public function update(Request $request, $id) + { + createActivityLog(Visa_grantsController::class, 'update', ' Visa_grants update'); + $validator = Validator::make($request->all(), [ + //ADD VALIDATION FOR REQIRED FIELDS + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => $validator->errors(), + ],500); + } + $requestData=$request->all(); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL').'/', '', $value); + }); + array_walk_recursive($requestData, function (&$value) { + $value = str_replace(env('APP_URL'), '', $value); + }); + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $request->input('visa_id')); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Visa_grantsController::class, 'update', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + if ($request->ajax()) { + return response()->json(['status' => true, 'message' => 'The Visa_grants updated Successfully.'], 200); + } + // return redirect()->route('visa_grants.index')->with('success','The Visa_grants updated Successfully.'); + return redirect()->back()->with('success', 'The Visa_grants updated successfully.'); + } + + public function destroy(Request $request,$id) + { + createActivityLog(Visa_grantsController::class, 'destroy', ' Visa_grants destroy'); + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->destroy($OperationNumber, $OperationNumber, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Visa_grantsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status'=>true,'message'=>'The Visa_grants Deleted Successfully.'],200); + } + public function toggle(Request $request,$id) + { + createActivityLog(Visa_grantsController::class, 'destroy', ' Visa_grants destroy'); + $data = Visa_grants::findOrFail($id); + $requestData=['status'=>($data->status==1)?0:1]; + DB::beginTransaction(); + try { + $OperationNumber = getOperationNumber(); + $this->modelService->update($OperationNumber, $OperationNumber, null, $requestData, $id); + } catch (Exception $e) { + DB::rollBack(); + Log::info($e->getMessage()); + createErrorLog(Visa_grantsController::class, 'destroy', $e->getMessage()); + return response()->json(['status' => false, 'message' => $e->getMessage()], 500); + } + DB::commit(); + return response()->json(['status'=>true,'message'=>'The Visa_grants Deleted Successfully.'],200); + } + + + + } + \ No newline at end of file diff --git a/app/Http/Controllers/WebsiteController.php b/app/Http/Controllers/WebsiteController.php index 0750347..42a4115 100644 --- a/app/Http/Controllers/WebsiteController.php +++ b/app/Http/Controllers/WebsiteController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Articles; +use App\Models\Benefits; use App\Models\Blogs; use App\Models\Countries; use App\Models\Faqs; @@ -15,8 +16,10 @@ use App\Models\Preparationclassoffers; use App\Models\Quicklinks; use App\Models\Services; use App\Models\Settings; +use App\Models\Success_stories; use App\Models\Teams; use App\Models\Testimonials; +use App\Models\Visa_grants; use App\Models\Visagrantposts; use CCMS; use Illuminate\Http\Request; // Import the Request class @@ -39,12 +42,16 @@ class WebsiteController extends Controller public function home() { - - return view("bibhuti.landing"); + return view('landing.index', [ + 'benefits' => Benefits::get(), + 'success_stories' => Success_stories::get(), + 'visa_grants' => Visa_grants::get(), + ]); } - public function showTeam(){ - $teamList = Teams::orderBy('display_order','asc')->get(); + public function showTeam() + { + $teamList = Teams::orderBy('display_order', 'asc')->get(); return view("$this->path.pages.team", compact('teamList')); } @@ -79,15 +86,15 @@ class WebsiteController extends Controller $contact = DB::table("contacts")->where("contact_id", $menuItem->ref)->get()[0]; return view("client.jupiter.inside.contact", compact('contact')); - // break; + // break; case 'tbl_countries': - //$countries=DB::table("countries")->where("article_id",$menuItem->ref)->get()[0]; - //return view("client.jupiter.inside.article",compact('article')); - //break; + //$countries=DB::table("countries")->where("article_id",$menuItem->ref)->get()[0]; + //return view("client.jupiter.inside.article",compact('article')); + //break; case 'tbl_articles': $article = DB::table("articles")->where("article_id", $menuItem->ref)->get()[0]; return view("client.jupiter.inside.article", compact('article')); - //break; + //break; case '': default: // echo $menuItem->alias;die; @@ -98,7 +105,6 @@ class WebsiteController extends Controller } else { return view("client.jupiter.inside" . ltrim($menuItem->ref)); } - } } @@ -133,9 +139,9 @@ class WebsiteController extends Controller public function showDestination($alias = null, $subalias = null) { - if($alias){ - $destination = Countries::where('alias',$alias)->with(['articles','institutions'])->first(); - if(!$destination){ + if ($alias) { + $destination = Countries::where('alias', $alias)->with(['articles', 'institutions'])->first(); + if (!$destination) { return view("$this->path.pages.404"); } return view("$this->path.pages.destination", compact('destination')); @@ -203,13 +209,13 @@ class WebsiteController extends Controller public function showBlogs($alias = null) { - if($alias){ - $blog = Blogs::where('alias',$alias)->first(); - if(!$blog){ + if ($alias) { + $blog = Blogs::where('alias', $alias)->first(); + if (!$blog) { return view("$this->path.pages.404"); } - return view("$this->path.pages.blog-single",compact('blog')); - }else{ + return view("$this->path.pages.blog-single", compact('blog')); + } else { $blogList = Blogs::latest()->paginate(6); return view("$this->path.pages.blog-list", compact('blogList')); } @@ -218,21 +224,21 @@ class WebsiteController extends Controller public function showFaqs() { $faqs = Faqs::latest()->get(); - return view("$this->path.pages.faq",compact('faqs')); + return view("$this->path.pages.faq", compact('faqs')); } public function showServices($alias = null) { - if($alias){ - $service = Services::where('alias',$alias)->first(); - if(!$service){ + if ($alias) { + $service = Services::where('alias', $alias)->first(); + if (!$service) { return view("$this->path.pages.404"); } - return view("$this->path.pages.service-single",compact('service')); - }else{ + return view("$this->path.pages.service-single", compact('service')); + } else { - $serviceList = Services::orderBy('display_order','asc')->take(15)->get(); - return view("$this->path.pages.service-list",compact('serviceList')); + $serviceList = Services::orderBy('display_order', 'asc')->take(15)->get(); + return view("$this->path.pages.service-list", compact('serviceList')); } } @@ -240,12 +246,11 @@ class WebsiteController extends Controller { if ($alias) { $data = Articles::where("alias", $alias)->where('status', 1)->with('children')->first(); - if(!$data){ + if (!$data) { return view("$this->path.pages.404"); } return view("$this->path.pages.$alias", compact('data')); } - } public function showevents(Request $r, $alias = null, $subalias = null) @@ -376,15 +381,15 @@ class WebsiteController extends Controller public function showGalleries($alias = null) { - if($alias){ + if ($alias) { $gallery = Galleries::where('alias', $alias)->first(); - if(!$gallery){ + if (!$gallery) { return view("$this->path.pages.404"); } return view("$this->path.pages.gallery-single", compact('gallery')); - }else{ - $galleryList = Galleries::where('status', 1)->latest()->select(['title', 'alias', 'thumb'])->paginate(12); - return view("$this->path.pages.gallery-list", compact('galleryList')); + } else { + $galleryList = Galleries::where('status', 1)->latest()->select(['title', 'alias', 'thumb'])->paginate(12); + return view("$this->path.pages.gallery-list", compact('galleryList')); } } diff --git a/app/Models/Benefits.php b/app/Models/Benefits.php new file mode 100644 index 0000000..b4aa7bc --- /dev/null +++ b/app/Models/Benefits.php @@ -0,0 +1,51 @@ +status == 1 ? ' Active ' : 'Inactive'; + } + + protected function createdBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + + protected function updatedBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + } \ No newline at end of file diff --git a/app/Models/Enquiries.php b/app/Models/Enquiries.php index be8b64b..427e8ca 100644 --- a/app/Models/Enquiries.php +++ b/app/Models/Enquiries.php @@ -11,17 +11,5 @@ class Enquiries extends Model protected $primaryKey = 'enquiry_id'; public $timestamps = true; - protected $fillable = [ - 'name', - 'phone', - 'email', - 'is_read', - 'message', - 'service_id', - ]; - - public function service() - { - return $this->belongsTo(Services::class, 'service_id', 'service_id'); - } + protected $guarded = []; } diff --git a/app/Models/Success_stories.php b/app/Models/Success_stories.php new file mode 100644 index 0000000..8ea7778 --- /dev/null +++ b/app/Models/Success_stories.php @@ -0,0 +1,51 @@ +status == 1 ? ' Active ' : 'Inactive'; + } + + protected function createdBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + + protected function updatedBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + } \ No newline at end of file diff --git a/app/Models/Visa_grants.php b/app/Models/Visa_grants.php new file mode 100644 index 0000000..5684290 --- /dev/null +++ b/app/Models/Visa_grants.php @@ -0,0 +1,51 @@ +status == 1 ? ' Active ' : 'Inactive'; + } + + protected function createdBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + + protected function updatedBy(): Attribute + { + return Attribute::make( + get: fn ($value) => User::find($value) ? User::find($value)->name : '', + ); + } + } \ No newline at end of file diff --git a/resources/views/backend/sidebar.blade.php b/resources/views/backend/sidebar.blade.php index 2899109..393dc8e 100644 --- a/resources/views/backend/sidebar.blade.php +++ b/resources/views/backend/sidebar.blade.php @@ -75,9 +75,11 @@ - {{ CCMS::createMenuLink('Page', route('articles.index')) }} - {{ CCMS::createMenuLink('Services', route('services.index')) }} {{ CCMS::createMenuLink('Enquiries', route('enquiries-list')) }} + {{ CCMS::createMenuLink('Testimonials', route('success_stories.index')) }} + {{ CCMS::createMenuLink('Benefits', route('benefits.index')) }} + {{ CCMS::createMenuLink('Success Stories', route('visa_grants.index')) }} + diff --git a/resources/views/crud/generated/benefits/create.blade.php b/resources/views/crud/generated/benefits/create.blade.php new file mode 100644 index 0000000..d10d6d1 --- /dev/null +++ b/resources/views/crud/generated/benefits/create.blade.php @@ -0,0 +1,167 @@ +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Add Benefits

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title') }} +
    +
    +
    {{ createTextarea('text', 'text ckeditor-classic', 'Description') }} +
    +
    +
    +

    Custom Details

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    {{ createImageInput('cover', 'Cover Photo') }} +
    +
    +
    {{ createImageInput('image_thumb', 'Image Thumb') }} +
    +
    +
    + + +
    +
    + +
    +@endsection +@push('js') + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/benefits/edit.blade.php b/resources/views/crud/generated/benefits/edit.blade.php new file mode 100644 index 0000000..0587ec0 --- /dev/null +++ b/resources/views/crud/generated/benefits/edit.blade.php @@ -0,0 +1,233 @@ +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Edit Benefits

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title', '', $data->title) }} +
    +
    +
    + {{ createTextarea('text', 'text ckeditor-classic', 'Description', $data->text) }} +
    +
    +
    + @if ($data->extra_content) + @foreach (json_decode($data->extra_content) as $content) +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + @endforeach + @else +
    Additional Content
    +
    +
    + @endif +
    +
    +
    +
    +
    +

    SEO

    +
    +
    +
    {{ createText('seo_title', 'seo_title', 'Seo Title', '', $data->sec_title) }} +
    +
    + {{ createPlainTextArea('seo_keywords', 'seo_keywords ', 'Seo Keywords', $data->seo_keywords) }} +
    +
    + {{ createPlainTextArea('seo_descriptions', 'seo_descriptions ', 'Seo Descriptions', '', $data->seo_descriptions) }} +
    +
    + {{ createPlainTextArea('og_tags', 'og_tags ', 'Og Tags', '', $data->og_tags) }} +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    + {{ createImageInput('cover', 'Cover Photo', '', $data->cover_photo) }} +
    +
    +
    + {{ createImageInput('image_thumb', 'Image Thumb', '', $data->image_thumb) }} +
    +
    +
    + + +
    +
    + +
    +@endsection + +@push('js') + + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/benefits/index.blade.php b/resources/views/crud/generated/benefits/index.blade.php new file mode 100644 index 0000000..c379c67 --- /dev/null +++ b/resources/views/crud/generated/benefits/index.blade.php @@ -0,0 +1,231 @@ +@extends('backend.template') +@section('content') +
    +
    +

    {{ label("Benefits List") }}

    + {{label("Create New")}} +
    +
    + + + + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + "> + + + + + + + + @endforeach + + +
    {{label("Sn.")}}{{ label("display") }}{{ label("title") }}{{ label("extra_content") }}{{ label("cover") }}{{ label("Action") }} +
    {{ $i++ }}{{ $item->display }}{{ $item->title }}{{ $item->extra_content }}{{ showImageThumb($item->cover) }} + + + +
    + + +
    +
    + + @endsection + +@push("css") + + +@endpush +@push("js") + + + + + + + + + + + + +@endpush + \ No newline at end of file diff --git a/resources/views/crud/generated/benefits/show.blade.php b/resources/views/crud/generated/benefits/show.blade.php new file mode 100644 index 0000000..e425ccc --- /dev/null +++ b/resources/views/crud/generated/benefits/show.blade.php @@ -0,0 +1,29 @@ +@extends('backend.template') + @section('content') +
    +
    +

    + + +
    +
    + + + +

    Display :     {{$data->display}}

    Title :     {{$data->title}}

    Text :     {{$data->text}}

    Extra Content :     {{$data->extra_content}}

    Cover :     {{$data->cover}}

    Display Order :     {{$data->display_order}}

    Status :     {{$data->status == 1 ? 'Active' : 'Inactive'}}

    Createdby :     {{$data->createdby}}

    Updatedby :     {{$data->updatedby}}

    +
    +

    Created On :   {{$data->created_at}}

    +

    Created By :   {{$data->createdBy}}

    +
    +
    +

    Updated On :   {{$data->updated_at}}

    +

    Updated By :   {{$data->updatedBy}}

    + +
    +
    + +
    +
    + +@endSection \ No newline at end of file diff --git a/resources/views/crud/generated/success_stories/create.blade.php b/resources/views/crud/generated/success_stories/create.blade.php new file mode 100644 index 0000000..9387f8c --- /dev/null +++ b/resources/views/crud/generated/success_stories/create.blade.php @@ -0,0 +1,167 @@ +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Add Success Stories

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title') }} +
    +
    +
    {{ createTextarea('text', 'text ckeditor-classic', 'Description') }} +
    +
    +
    +

    Custom Details

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    {{ createImageInput('cover', 'Cover Photo') }} +
    +
    +
    {{ createImageInput('image_thumb', 'Image Thumb') }} +
    +
    +
    + + +
    +
    + +
    +@endsection +@push('js') + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/success_stories/edit.blade.php b/resources/views/crud/generated/success_stories/edit.blade.php new file mode 100644 index 0000000..66fea90 --- /dev/null +++ b/resources/views/crud/generated/success_stories/edit.blade.php @@ -0,0 +1,233 @@ +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Edit Success Stories

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title', '', $data->title) }} +
    +
    +
    + {{ createTextarea('text', 'text ckeditor-classic', 'Description', $data->text) }} +
    +
    +
    + @if ($data->extra_content) + @foreach (json_decode($data->extra_content) as $content) +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + @endforeach + @else +
    Additional Content
    +
    +
    + @endif +
    +
    +
    +
    +
    +

    SEO

    +
    +
    +
    {{ createText('seo_title', 'seo_title', 'Seo Title', '', $data->sec_title) }} +
    +
    + {{ createPlainTextArea('seo_keywords', 'seo_keywords ', 'Seo Keywords', $data->seo_keywords) }} +
    +
    + {{ createPlainTextArea('seo_descriptions', 'seo_descriptions ', 'Seo Descriptions', '', $data->seo_descriptions) }} +
    +
    + {{ createPlainTextArea('og_tags', 'og_tags ', 'Og Tags', '', $data->og_tags) }} +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    + {{ createImageInput('cover', 'Cover Photo', '', $data->cover_photo) }} +
    +
    +
    + {{ createImageInput('image_thumb', 'Image Thumb', '', $data->image_thumb) }} +
    +
    +
    + + +
    +
    + +
    +@endsection + +@push('js') + + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/success_stories/index.blade.php b/resources/views/crud/generated/success_stories/index.blade.php new file mode 100644 index 0000000..456fbb8 --- /dev/null +++ b/resources/views/crud/generated/success_stories/index.blade.php @@ -0,0 +1,231 @@ +@extends('backend.template') +@section('content') +
    +
    +

    {{ label("Success_stories List") }}

    + {{label("Create New")}} +
    +
    + + + + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + "> + + + + + + + + @endforeach + + +
    {{label("Sn.")}}{{ label("display") }}{{ label("title") }}{{ label("extra_content") }}{{ label("cover") }}{{ label("Action") }} +
    {{ $i++ }}{{ $item->display }}{{ $item->title }}{{ $item->extra_content }}{{ showImageThumb($item->cover) }} + + + +
    + + +
    +
    + + @endsection + +@push("css") + + +@endpush +@push("js") + + + + + + + + + + + + +@endpush + \ No newline at end of file diff --git a/resources/views/crud/generated/success_stories/show.blade.php b/resources/views/crud/generated/success_stories/show.blade.php new file mode 100644 index 0000000..2c6173d --- /dev/null +++ b/resources/views/crud/generated/success_stories/show.blade.php @@ -0,0 +1,29 @@ +@extends('backend.template') + @section('content') +
    +
    +

    + + +
    +
    + + + +

    Display :     {{$data->display}}

    Title :     {{$data->title}}

    Text :     {{$data->text}}

    Extra Content :     {{$data->extra_content}}

    Cover :     {{$data->cover}}

    Display Order :     {{$data->display_order}}

    Status :     {{$data->status == 1 ? 'Active' : 'Inactive'}}

    Createdby :     {{$data->createdby}}

    Updatedby :     {{$data->updatedby}}

    +
    +

    Created On :   {{$data->created_at}}

    +

    Created By :   {{$data->createdBy}}

    +
    +
    +

    Updated On :   {{$data->updated_at}}

    +

    Updated By :   {{$data->updatedBy}}

    + +
    +
    + +
    +
    + +@endSection \ No newline at end of file diff --git a/resources/views/crud/generated/visa_grants/create.blade.php b/resources/views/crud/generated/visa_grants/create.blade.php new file mode 100644 index 0000000..0c6e0e6 --- /dev/null +++ b/resources/views/crud/generated/visa_grants/create.blade.php @@ -0,0 +1,168 @@ +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Add Visa Grants

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title') }} +
    +
    +
    {{ createTextarea('text', 'text ckeditor-classic', 'Description') }} +
    +
    +
    +

    Custom Details

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    {{ createImageInput('cover', 'Cover Photo') }} +
    +
    +
    {{ createImageInput('image_thumb', 'Image Thumb') }} +
    +
    +
    + + + +
    +
    + +
    +@endsection +@push('js') + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/visa_grants/edit.blade.php b/resources/views/crud/generated/visa_grants/edit.blade.php new file mode 100644 index 0000000..8643db7 --- /dev/null +++ b/resources/views/crud/generated/visa_grants/edit.blade.php @@ -0,0 +1,234 @@ + +@extends('backend.template') +@section('content') + +
    +
    +
    +

    Edit Visa Grants

    + + +
    + +
    + +
    +
    +
    + +
    + @csrf +
    +
    +
    +
    +
    {{ createText('title', 'title', 'Title', '', $data->title) }} +
    +
    +
    + {{ createTextarea('text', 'text ckeditor-classic', 'Description', $data->text) }} +
    +
    +
    + @if ($data->extra_content) + @foreach (json_decode($data->extra_content) as $content) +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + @endforeach + @else +
    Additional Content
    +
    +
    + @endif +
    +
    +
    +
    +
    +

    SEO

    +
    +
    +
    {{ createText('seo_title', 'seo_title', 'Seo Title', '', $data->sec_title) }} +
    +
    + {{ createPlainTextArea('seo_keywords', 'seo_keywords ', 'Seo Keywords', $data->seo_keywords) }} +
    +
    + {{ createPlainTextArea('seo_descriptions', 'seo_descriptions ', 'Seo Descriptions', '', $data->seo_descriptions) }} +
    +
    + {{ createPlainTextArea('og_tags', 'og_tags ', 'Og Tags', '', $data->og_tags) }} +
    +
    +
    + + +
    +
    +
    +
    +

    + Images +

    +
    +
    +
    + {{ createImageInput('cover', 'Cover Photo', '', $data->cover) }} +
    +
    +
    + {{ createImageInput('image_thumb', 'Image Thumb', '', $data->image_thumb) }} +
    +
    +
    + + +
    +
    + +
    +@endsection + +@push('js') + + + + + + + + + + + +@endpush diff --git a/resources/views/crud/generated/visa_grants/index.blade.php b/resources/views/crud/generated/visa_grants/index.blade.php new file mode 100644 index 0000000..d70d8d7 --- /dev/null +++ b/resources/views/crud/generated/visa_grants/index.blade.php @@ -0,0 +1,231 @@ +@extends('backend.template') +@section('content') +
    +
    +

    {{ label("Visa_grants List") }}

    + {{label("Create New")}} +
    +
    + + + + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($data as $item) + + "> + + + + + + + + @endforeach + + +
    {{label("Sn.")}}{{ label("display") }}{{ label("title") }}{{ label("extra_content") }}{{ label("cover") }}{{ label("Action") }} +
    {{ $i++ }}{{ $item->display }}{{ $item->title }}{{ $item->extra_content }}{{ showImageThumb($item->cover) }} + + + +
    + + +
    +
    + + @endsection + +@push("css") + + +@endpush +@push("js") + + + + + + + + + + + + +@endpush + \ No newline at end of file diff --git a/resources/views/crud/generated/visa_grants/show.blade.php b/resources/views/crud/generated/visa_grants/show.blade.php new file mode 100644 index 0000000..50dad93 --- /dev/null +++ b/resources/views/crud/generated/visa_grants/show.blade.php @@ -0,0 +1,29 @@ +@extends('backend.template') + @section('content') +
    +
    +

    + + +
    +
    + + + +

    Display :     {{$data->display}}

    Title :     {{$data->title}}

    Text :     {{$data->text}}

    Extra Content :     {{$data->extra_content}}

    Cover :     {{$data->cover}}

    Display Order :     {{$data->display_order}}

    Status :     {{$data->status == 1 ? 'Active' : 'Inactive'}}

    Createdby :     {{$data->createdby}}

    Updatedby :     {{$data->updatedby}}

    +
    +

    Created On :   {{$data->created_at}}

    +

    Created By :   {{$data->createdBy}}

    +
    +
    +

    Updated On :   {{$data->updated_at}}

    +

    Updated By :   {{$data->updatedBy}}

    + +
    +
    + +
    +
    + +@endSection \ No newline at end of file diff --git a/resources/views/landing/index.blade.php b/resources/views/landing/index.blade.php index 467557c..361d4f5 100644 --- a/resources/views/landing/index.blade.php +++ b/resources/views/landing/index.blade.php @@ -4,7 +4,7 @@ - Transform Your Business - Bibhuti Solutions + Landing Page @@ -13,693 +13,801 @@ - - .footer-right { - flex: 1; - text-align: right; - } - } +
    +
    +
    +
    + Landing Image +
    - @media (min-width: 1024px) { - .services-grid { - grid-template-columns: repeat(3, 1fr); - } - - .hero-title { - font-size: 4rem; - } - - .cta-title { - font-size: 3.5rem; - } - } - - /* Touch improvements */ - @media (hover: none) and (pointer: coarse) { - .btn-primary:hover::before { - left: 0; - } - - .service-card:hover { - transform: none; - box-shadow: none; - } - - .service-card:hover::before { - opacity: 0; - } - } - - /* Animations */ - @keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - - to { - opacity: 1; - transform: translateY(0); - } - } - - .animate-fade-in-up { - animation: fadeInUp 0.8s ease forwards; - } - - - - - - -
    -
    -
    -
    +
    +
    -

    Get Your Free IT Consultation

    -

    Fill out the form below and our experts will contact you within 24 - hours

    - +

    Registration Form

    @csrf
    @@ -724,22 +832,32 @@
    - - + + + + +
    - - + +
    +
    + + +
    + + @if ($setting->recaptcha_site_key)
    - - Get Free Consultation + Register
    -
    - - Your information is 100% secure and confidential -
    +
    +
    +
    +
    - -
    -
    - -

    - Transform Your Business with Expert IT Solutions -

    -

    - Get professional web development, digital marketing, and IT support that drives real - results. Join 500+ successful businesses who trust Bibhuti Solutions. -

    -
    -
    -
    - -
    - Free Consultation -
    -
    -
    - -
    - 24/7 Support -
    -
    -
    - -
    - Proven Results +
    +
    +

    + Testimonials +

    +
    + @foreach ($success_stories as $story) +
    +
    + @foreach (json_decode($story->extra_content) as $content) + + @endforeach +
    +
    + @endforeach +
    +
    +
    + + +
    +
    +

    + Benefits +

    +
    + + @foreach ($benefits as $tef) + @foreach (json_decode($tef->extra_content) as $content) +
    +
    +
    + {{ $content->fieldHeader }}
    +
    {{ $tef->title }}
    +

    + {!! $tef->text !!} +

    -
    -
    + @endforeach + @endforeach
    -
    + + - -
    -
    -
    -

    Our Expert Services

    -

    Comprehensive IT solutions tailored to accelerate your business growth and - digital transformation

    -
    - -
    -
    -
    - +
    +
    +

    + Success Stories +

    +
    + @foreach ($visa_grants as $visas) +
    +
    +
    -

    Website Development

    -

    Custom websites that convert visitors into customers. Responsive, - fast, and SEO-optimized solutions built with modern technologies.

    - -
    -
    - -
    -

    Digital Marketing

    -

    Facebook & Google Ads that drive qualified leads and maximize your - ROI. Data-driven campaigns that deliver measurable results.

    -
    - -
    -
    - -
    -

    IT Solutions

    -

    Complete IT support and solutions to keep your business running - smoothly. From infrastructure to security, we've got you covered.

    -
    - -
    -
    - -
    -

    Website Updates

    -

    Keep your website fresh and secure with regular updates and - maintenance. Ongoing support to ensure peak performance.

    -
    - -
    -
    - -
    -

    24/7 Support

    -

    Round-the-clock online support to ensure your business never stops. - Expert assistance whenever you need it most.

    -
    - -
    -
    - -
    -

    Business Growth

    -

    Strategic consulting to scale your business with technology. - Transform your operations and accelerate growth.

    -
    -
    + @endforeach
    -
    +
    +
    - -
    -
    -
    -

    Ready to Transform Your Business?

    -

    Join hundreds of successful businesses who trust Bibhuti Solutions for their - digital transformation journey.

    - -
    -
    -
    - - - - - - - - - - - - - diff --git a/routes/CRUDgenerated/route.benefits.php b/routes/CRUDgenerated/route.benefits.php new file mode 100644 index 0000000..16977aa --- /dev/null +++ b/routes/CRUDgenerated/route.benefits.php @@ -0,0 +1,15 @@ +group(function () { + Route::get('/', [BenefitsController::class, 'index'])->name('benefits.index'); + Route::get('/create', [BenefitsController::class, 'create'])->name('benefits.create'); + Route::post('/store', [BenefitsController::class, 'store'])->name('benefits.store'); + Route::post('/sort', [BenefitsController::class, 'sort'])->name('benefits.sort'); + Route::post('/updatealias', [BenefitsController::class, 'updatealias'])->name('benefits.updatealias'); + Route::get('/show/{id}', [BenefitsController::class, 'show'])->name('benefits.show'); + Route::get('/edit/{id}', [BenefitsController::class, 'edit'])->name('benefits.edit') ; + Route::post('/update/{id}', [BenefitsController::class, 'update'])->name('benefits.update'); + Route::delete('/destroy/{id}', [BenefitsController::class, 'destroy'])->name('benefits.destroy'); + Route::get('/toggle/{id}', [BenefitsController::class, 'toggle'])->name('benefits.toggle'); + }); \ No newline at end of file diff --git a/routes/CRUDgenerated/route.success_stories.php b/routes/CRUDgenerated/route.success_stories.php new file mode 100644 index 0000000..1b80f9f --- /dev/null +++ b/routes/CRUDgenerated/route.success_stories.php @@ -0,0 +1,15 @@ +group(function () { + Route::get('/', [Success_storiesController::class, 'index'])->name('success_stories.index'); + Route::get('/create', [Success_storiesController::class, 'create'])->name('success_stories.create'); + Route::post('/store', [Success_storiesController::class, 'store'])->name('success_stories.store'); + Route::post('/sort', [Success_storiesController::class, 'sort'])->name('success_stories.sort'); + Route::post('/updatealias', [Success_storiesController::class, 'updatealias'])->name('success_stories.updatealias'); + Route::get('/show/{id}', [Success_storiesController::class, 'show'])->name('success_stories.show'); + Route::get('/edit/{id}', [Success_storiesController::class, 'edit'])->name('success_stories.edit') ; + Route::post('/update/{id}', [Success_storiesController::class, 'update'])->name('success_stories.update'); + Route::delete('/destroy/{id}', [Success_storiesController::class, 'destroy'])->name('success_stories.destroy'); + Route::get('/toggle/{id}', [Success_storiesController::class, 'toggle'])->name('success_stories.toggle'); + }); \ No newline at end of file diff --git a/routes/CRUDgenerated/route.visa_grants.php b/routes/CRUDgenerated/route.visa_grants.php new file mode 100644 index 0000000..6c52c57 --- /dev/null +++ b/routes/CRUDgenerated/route.visa_grants.php @@ -0,0 +1,15 @@ +group(function () { + Route::get('/', [Visa_grantsController::class, 'index'])->name('visa_grants.index'); + Route::get('/create', [Visa_grantsController::class, 'create'])->name('visa_grants.create'); + Route::post('/store', [Visa_grantsController::class, 'store'])->name('visa_grants.store'); + Route::post('/sort', [Visa_grantsController::class, 'sort'])->name('visa_grants.sort'); + Route::post('/updatealias', [Visa_grantsController::class, 'updatealias'])->name('visa_grants.updatealias'); + Route::get('/show/{id}', [Visa_grantsController::class, 'show'])->name('visa_grants.show'); + Route::get('/edit/{id}', [Visa_grantsController::class, 'edit'])->name('visa_grants.edit') ; + Route::post('/update/{id}', [Visa_grantsController::class, 'update'])->name('visa_grants.update'); + Route::delete('/destroy/{id}', [Visa_grantsController::class, 'destroy'])->name('visa_grants.destroy'); + Route::get('/toggle/{id}', [Visa_grantsController::class, 'toggle'])->name('visa_grants.toggle'); + }); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 1c68052..e4066c5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -73,7 +73,6 @@ Route::middleware('auth')->group(function () { // Provide the download link for the backup file return response()->download($backupPath)->deleteFileAfterSend(true); - })->name('backup.db'); }); Route::prefix("form")->group(function () { @@ -149,5 +148,8 @@ Route::middleware('auth')->group(function () { require __DIR__ . '/route.preparationclasstestimonials.php'; require __DIR__ . '/route.visagrantposts.php'; require __DIR__ . '/route.features.php'; + require __DIR__ . '/CRUDgenerated/route.success_stories.php'; + require __DIR__ . '/CRUDgenerated/route.benefits.php'; + require __DIR__ . '/CRUDgenerated/route.visa_grants.php'; }); require __DIR__ . '/route.client.php'; diff --git a/storage/app/public/files/1/success-1.png b/storage/app/public/files/1/success-1.png new file mode 100644 index 0000000000000000000000000000000000000000..32dce2d994aa026aed3fbe338d71ee4e5189c576 GIT binary patch literal 18071 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