diff --git a/app/Http/Controllers/Admin/AboutUsController.php b/app/Http/Controllers/Admin/AboutUsController.php index 05d70c5..782df72 100644 --- a/app/Http/Controllers/Admin/AboutUsController.php +++ b/app/Http/Controllers/Admin/AboutUsController.php @@ -12,4 +12,22 @@ class AboutUsController extends Controller return view('Admin.pages.manage_cms.manage_aboutus.manage_aboutsus'); } + + public function edit($id) + { + + + + + try { + $edit_service = Aboutus::find($id)->toArray(); + $about_us_cat = AboutUsCategory::all()->toArray(); + $edit_service['thumbnail_image'] = ListingImageUrl('about_images', $edit_service['thumbnail_image']); + + return view('admin.pages.manage_cms.manage_about_us_edit', compact('edit_service', 'about_us_cat')); + } catch (Exception $e) { + Log::error("edit voucher Page Load Failed " . $e->getMessage()); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + } + } } diff --git a/app/Http/Controllers/Admin/ManageNewsAndArticlesController.php b/app/Http/Controllers/Admin/ManageNewsAndArticlesController.php index bdb59e7..cb9275b 100644 --- a/app/Http/Controllers/Admin/ManageNewsAndArticlesController.php +++ b/app/Http/Controllers/Admin/ManageNewsAndArticlesController.php @@ -1,15 +1,247 @@ latest()->get()->toArray(); + return view('Admin.pages.manage_cms.manage_new.manage_news', compact('news_article')); + } catch (Exception $e) { + Log::error("Manage Article Page Not Load: " . $e->getMessage()); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + } } + + + public function change_news_article_Status(Request $request) + { + + + try { + $status = NewsArticle::find($request->program_id); + + if (!$status) { + return response()->json(['error' => 'Aboutus entry not found.'], 404); + } + + $status->is_active = $request->status; + $status->save(); + + return response()->json(['success' => 'Status change successfully.']); + } catch (\Exception $e) { + // Log the exception or handle it in a way that makes sense for your application + return response()->json(['error' => 'An error occurred while changing the status.'], 500); + } + } + + + public function edit($id) + { + + try { + $news_article_data = NewsArticle::find($id); + $news_categories = NewsArticleCategory::all()->toArray(); + return view('Admin.pages.manage_cms.manage_new.manage_news_edit', compact('news_article_data','news_categories')); + } catch (\Exception $e) { + // Handle the exception, you can log it or return an error response + return response()->json(['success' => false, 'error' => $e->getMessage(), 'status' => 500]); + } + } + + // public function update(Request $request) + // { + // try { + + + // $update_news_article = NewsArticle::find($request->article_id); + // $update_news_article->name = $request->input('article_name'); + // // dd( $update_news_article->name); + // $update_news_article->description = $request->input('article_dis'); + // // dd($update_news_article->description); + + // // if ($request->hasFile('article_image')) { + // // if ($update_news_article->image) { + // // Storage::disk('public')->delete($update_news_article->image); + // // } + + // // $uploadedFile = $request->file('article_image'); + // // $extension = $uploadedFile->getClientOriginalExtension(); + // // $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + // // $path = $uploadedFile->storeAs('uploads/news_article', $filename, 'public'); + // // $update_news_article->image = $path; + // // } + + // if ($request->hasFile('article_thmb')) { + // if ($update_news_article->image) { + // Storage::disk('public')->delete($update_news_article->thumbnail_image); + // } + + // $uploadedFile = $request->file('article_thmb'); + // $extension = $uploadedFile->getClientOriginalExtension(); + // $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + // $path = $uploadedFile->storeAs('uploads/news_article_thumb', $filename, 'public'); + // $update_news_article->thumbnail_image = $path; + // } + + // $update_news_article->save(); + // // dd( $update_news_article); + // return response()->json(['success' => true,'status'=>200]); + // } catch (\Exception $e) { + // return response()->json(['success' => false, 'error' => $e->getMessage(), 'status' => 500]); + // } + // } + public function update(Request $request) +{ + try { + $update_news_article = NewsArticle::find($request->article_id); + $update_news_article->name = $request->input('article_name'); + $update_news_article->description = $request->input('article_dis'); + + + + + if ($request->hasFile('article_thmb')) { + if ($update_news_article->image) { + Storage::disk('public')->delete($update_news_article->thumbnail_image); + } + + $uploadedFile = $request->file('article_thmb'); + $extension = $uploadedFile->getClientOriginalExtension(); + $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + $path = $uploadedFile->storeAs('uploads/news_article_thumb', $filename, 'public'); + $update_news_article->thumbnail_image = $path; + } + + $update_news_article->save(); + + return response()->json(['success' => true, 'status' => 200]); + } catch (\Exception $e) { + return response()->json(['success' => false, 'error' => $e->getMessage(), 'status' => 500]); + } +} + +public function delete_newsarticle($id) +{ + + try { + $blog = NewsArticle::find($id); + + if (!$blog) { + return response()->json(['error' => 'Aboutus entry not found.'], 404); + } + + $blog->delete(); + + return response()->json(['success' => 'Aboutus entry deleted successfully.']); + } catch (\Exception $e) { + // Log the exception or handle it in a way that makes sense for your application + return response()->json(['error' => 'An error occurred while deleting the Aboutus entry.'], 500); + } + +} + public function add() + { + $news_categories = NewsArticleCategory::all()->toArray(); + return view('Admin.pages.manage_cms.manage_new.manage_news_add', compact('news_categories')); + } + + // public function insert(Request $request) + // { + + // try { + // $blog = new NewsArticle; + // $blog->name = $request->input('article_name'); + // $blog->description = $request->input('article_des'); + // $blog->news_articles_category_xid = $request->input('category'); + + // // if ($request->hasFile('article_image')) { + // // $uploadedFile = $request->file('article_image'); + // // $extension = $uploadedFile->getClientOriginalExtension(); + // // $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + // // // Move the uploaded file to the storage folder + // // $path = $uploadedFile->storeAs('uploads/news_article', $filename, 'public'); + // // // Store the file path in the database + // // $blog->image = $path; + // // } + // // upload blog single image + // if ($request->hasFile('article_thmb')) { + // $uploadedFile = $request->file('article_thmb'); + // $extension = $uploadedFile->getClientOriginalExtension(); + // $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + // $path = $uploadedFile->storeAs('uploads/news_article_thumb', $filename, 'public'); + // $blog->thumbnail_image = $path; + // } + // $blog->save(); + // return response()->json(['success' => true,'status'=>200]); + // } catch (\Exception $e) { + // // Handle the exception, you can log it or return an error response + // return response()->json(['success' => false, 'error' => $e->getMessage(), 'status' => 500]); + // } + // } + public function insert(Request $request) + { + try { + // Validate the incoming request + // $request->validate([ + // // 'article_name' => 'required|string', + // // 'article_des' => 'required|string', + // 'article_thmb' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', + // 'category' => 'required|string', // Assuming 'category' is the field for category selection + // ]); + + DB::beginTransaction(); + + // Handle thumbnail image upload + if ($request->hasFile('article_thmb')) { + $uploadedFile = $request->file('article_thmb'); + $filename = date('YmdHi') . '_' . str_replace(' ', '', $uploadedFile->getClientOriginalName()); + $path = $uploadedFile->storeAs('uploads/news_article_thumb', $filename, 'public'); + } + + // Create a new instance of NewsArticle model and populate it with data + $blog = NewsArticle::create([ + 'name' => $request->input('article_name'), + 'description' => $request->input('article_des'), + 'news_articles_category_xid' => $request->input('category'), + 'thumbnail_image' => $path // Set thumbnail image path + ]); + // dd( $blog); + + DB::commit(); + + return response()->json([ + 'success' => true, + 'status' => 200, + 'message' => 'News article added successfully', + ]); + } catch (\Exception $exception) { + DB::rollBack(); + // Log the exception for further analysis + Log::error('Error in insert method: ' . $exception->getMessage() . ' at ' . $exception->getFile() . ':' . $exception->getLine()); + + // Return an error response + return response()->json(['error' => 'Failed to add news article'], 500); + } + } + + + } diff --git a/app/Models/NewsArticle.php b/app/Models/NewsArticle.php index 3fd2036..88bd5c9 100644 --- a/app/Models/NewsArticle.php +++ b/app/Models/NewsArticle.php @@ -6,11 +6,25 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; + class NewsArticle extends Model { use HasFactory; + protected $table = 'news_articles'; use SoftDeletes; + protected $fillable=[ + 'id ', + 'news_articles_category_xid', + 'name', + 'description', + 'thumbnail_image', + 'image', + 'is_active', + 'deleted_at', + 'created_at', + 'updated_at', + ]; public function category() { return $this->belongsTo(NewsArticleCategory::class,'news_articles_category_xid','id'); diff --git a/composer.lock b/composer.lock index 7261bf4..9e34d98 100644 --- a/composer.lock +++ b/composer.lock @@ -8930,5 +8930,5 @@ "php": "^8.2" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/database/migrations/2024_05_23_101202_create_news_article_categories_table.php b/database/migrations/2024_05_23_101202_create_news_article_categories_table.php new file mode 100644 index 0000000..791e10e --- /dev/null +++ b/database/migrations/2024_05_23_101202_create_news_article_categories_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('news_article_categories'); + } +}; diff --git a/database/migrations/2024_05_23_102003_create_news_articles_table.php b/database/migrations/2024_05_23_102003_create_news_articles_table.php new file mode 100644 index 0000000..3135cb8 --- /dev/null +++ b/database/migrations/2024_05_23_102003_create_news_articles_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger('news_articles_category_xid'); + $table->foreign('news_articles_category_xid')->references('id')->on('news_article_categories'); + $table->string('name'); + $table->longText('description'); + $table->string('thumbnail_image'); + $table->string('image'); + $table->enum('is_active',['0','1'])->comment('0 = Active, 1 = Inactive'); + $table->softDeletes(); + $table->timestamps(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('news_articles'); + } +}; diff --git a/public/assets/js/admin/manage_cms/manage_news/add_news.js b/public/assets/js/admin/manage_cms/manage_news/add_news.js index 667deeb..804e1bd 100644 --- a/public/assets/js/admin/manage_cms/manage_news/add_news.js +++ b/public/assets/js/admin/manage_cms/manage_news/add_news.js @@ -1,95 +1,95 @@ -$('#add_newsletter').on("click", function (e) { +// $('#add_newsletter').on("click", function (e) { - $.validator.addMethod("quillNotEmpty", function(value, element) { - var quill = new Quill('#news-quill-add'); - return quill.getText().trim().length > 0; - }, "Please enter description "); +// $.validator.addMethod("quillNotEmpty", function(value, element) { +// var quill = new Quill('#news-quill-add'); +// return quill.getText().trim().length > 0; +// }, "Please enter description "); - $('#add_blog_form').validate({ - ignore: [], - debug: false, - rules: { - article_name: { - required: true - }, - article_dis: { - required: true, - quillNotEmpty: true - }, - article_image: { - required: true - }, - article_thmb: { - required: true - }, - category: { - required: true - }, - }, - messages: { - article_name: { - required: "Please Enter Article name" - }, - article_dis: { - required: "Please Enter Description" - }, - article_image: { - required: "Please Select Image" - }, - category: { - required: "Please Select Article Category" - }, - }, - errorClass: 'error-message', - submitHandler: function (form) { - let base_url = url_path; - var formData = new FormData(form); - $('#add_newsletter').text('Please wait...').attr('disabled', true); +// $('#add_blog_form').validate({ +// ignore: [], +// debug: false, +// rules: { +// article_name: { +// required: true +// }, +// article_dis: { +// required: true, +// quillNotEmpty: true +// }, +// article_image: { +// required: true +// }, +// article_thmb: { +// required: true +// }, +// category: { +// required: true +// }, +// }, +// messages: { +// article_name: { +// required: "Please Enter Article name" +// }, +// article_dis: { +// required: "Please Enter Description" +// }, +// article_image: { +// required: "Please Select Image" +// }, +// category: { +// required: "Please Select Article Category" +// }, +// }, +// errorClass: 'error-message', +// submitHandler: function (form) { +// let base_url = url_path; +// var formData = new FormData(form); +// $('#add_newsletter').text('Please wait...').attr('disabled', true); - $.ajaxSetup({ - headers: { - "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), - }, - }); +// $.ajaxSetup({ +// headers: { +// "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), +// }, +// }); - $.ajax({ - url: base_url + '/manage_insert_news', - type: 'POST', - data: formData, - processData: false, - contentType: false, - success: function (response) { - if (response.status == 200) { - toastr.success('News and Article Added Successfully'); - setTimeout(function () { - window.location.href = base_url + "/manage_news"; - }, 1000); - } else { - toastr.error("Something went wrong"); - } - $('#add_newsletter').attr('disabled', false).text('Submit'); - }, - }); - } - }); -}); +// $.ajax({ +// url: base_url + '/manage_insert_news', +// type: 'POST', +// data: formData, +// processData: false, +// contentType: false, +// success: function (response) { +// if (response.status == 200) { +// toastr.success('News and Article Added Successfully'); +// setTimeout(function () { +// window.location.href = base_url + "/manage_news"; +// }, 1000); +// } else { +// toastr.error("Something went wrong"); +// } +// $('#add_newsletter').attr('disabled', false).text('Submit'); +// }, +// }); +// } +// }); +// }); -selectThumbnailImage.onchange = evt => { - preview = document.getElementById('previewthumbnailimage'); - preview.style.display = 'block'; - const [file] = selectThumbnailImage.files - if (file) { - preview.src = URL.createObjectURL(file) - } -} +// selectThumbnailImage.onchange = evt => { +// preview = document.getElementById('previewthumbnailimage'); +// preview.style.display = 'block'; +// const [file] = selectThumbnailImage.files +// if (file) { +// preview.src = URL.createObjectURL(file) +// } +// } -selectImage.onchange = evt => { - preview = document.getElementById('preview'); - preview.style.display = 'block'; - const [file] = selectImage.files - if (file) { - preview.src = URL.createObjectURL(file) - } -} \ No newline at end of file +// selectImage.onchange = evt => { +// preview = document.getElementById('preview'); +// preview.style.display = 'block'; +// const [file] = selectImage.files +// if (file) { +// preview.src = URL.createObjectURL(file) +// } +// } \ No newline at end of file diff --git a/public/assets/js/admin/manage_cms/manage_news/edit_news.js b/public/assets/js/admin/manage_cms/manage_news/edit_news.js index ebd72bc..340026a 100644 --- a/public/assets/js/admin/manage_cms/manage_news/edit_news.js +++ b/public/assets/js/admin/manage_cms/manage_news/edit_news.js @@ -1,107 +1,109 @@ -$('#update_news_btn').on("click", function (e) { - $('#update_news').validate({ - ignore: [], - debug: false, - rules: { - article_name: { - required: true - }, - article_dis: { - required: true - }, - category: { - required: true - }, - }, - messages: { - article_name: { - required: "Please Enter Article name" - }, - article_dis: { - required: "Please Enter Description" - }, - category: { - required: "Please Select Article Category" - }, - }, - errorClass: 'error-message', - submitHandler: function (form) { - let base_url = url_path; - var formData = new FormData(form); - $('#update_news_btn').text('Please wait...'); - $('#update_news_btn').attr('disabled', true); - $.ajaxSetup({ - headers: { - "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), - }, - }); - $.ajax({ - url: base_url + '/manage_update_news', - type: 'POST', - data: formData, - processData: false, - contentType: false, - success: function (response) { - if (response.status == 200) { - toastr.success('News and Article Updated Successfully'); - setTimeout(function () { - window.location.href = base_url + "/manage_news"; - }, 1000); - } else if (response.status == 204) { - toastr.error(response.error); - } else { - toastr.error("Something went wrong"); - } - $('#update_news_btn').attr('disabled', false); - $('#update_news_btn').text('Submit'); - }, - }); - } - }); -}); +// $('#update_news_btn').on("click", function (e) { +// alert('dbjhgdj'); +// $('#update_news').validate({ + +// ignore: [], +// debug: false, +// rules: { +// article_name: { +// required: true +// }, +// article_dis: { +// required: true +// }, +// category: { +// required: true +// }, +// }, +// messages: { +// article_name: { +// required: "Please Enter Article name" +// }, +// article_dis: { +// required: "Please Enter Description" +// }, +// category: { +// required: "Please Select Article Category" +// }, +// }, +// errorClass: 'error-message', +// submitHandler: function (form) { +// let base_url = url_path; +// var formData = new FormData(form); +// $('#update_news_btn').text('Please wait...'); +// $('#update_news_btn').attr('disabled', true); +// $.ajaxSetup({ +// headers: { +// "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"), +// }, +// }); +// $.ajax({ +// url: base_url + '/manage_update_news', +// type: 'POST', +// data: formData, +// processData: false, +// contentType: false, +// success: function (response) { +// if (response.status == 200) { +// toastr.success('News and Article Updated Successfully'); +// setTimeout(function () { +// window.location.href = base_url + "/manage_news"; +// }, 1000); +// } else if (response.status == 204) { +// toastr.error(response.error); +// } else { +// toastr.error("Something went wrong"); +// } +// $('#update_news_btn').attr('disabled', false); +// $('#update_news_btn').text('Submit'); +// }, +// }); +// } +// }); +// }); - const imageInputEdit = document.getElementById('imageInputNormal'); - const imagePreviewEdit = document.getElementById('imageInputPreviewNormal'); +// const imageInputEdit = document.getElementById('imageInputNormal'); +// const imagePreviewEdit = document.getElementById('imageInputPreviewNormal'); - imageInputEdit.addEventListener('change', function() { - const file = this.files[0]; - if (file) { - const reader = new FileReader(); - reader.onload = function(event) { - const img = document.createElement('img'); - img.src = event.target.result; - img.style.maxWidth = '200px'; - img.style.maxHeight = '200px'; - imagePreviewEdit.innerHTML = ''; - imagePreviewEdit.appendChild(img); - }; - reader.readAsDataURL(file); - } else { - imagePreviewEdit.innerHTML = ''; - } - }); +// imageInputEdit.addEventListener('change', function() { +// const file = this.files[0]; +// if (file) { +// const reader = new FileReader(); +// reader.onload = function(event) { +// const img = document.createElement('img'); +// img.src = event.target.result; +// img.style.maxWidth = '200px'; +// img.style.maxHeight = '200px'; +// imagePreviewEdit.innerHTML = ''; +// imagePreviewEdit.appendChild(img); +// }; +// reader.readAsDataURL(file); +// } else { +// imagePreviewEdit.innerHTML = ''; +// } +// }); - const imageInput = document.getElementById('imageInputThumb'); - const imagePreview = document.getElementById('imagePreviewThumb'); +// const imageInput = document.getElementById('imageInputThumb'); +// const imagePreview = document.getElementById('imagePreviewThumb'); - imageInput.addEventListener('change', function() { - console.log("in change kjbck"); - const file = this.files[0]; - if (file) { - const reader = new FileReader(); - reader.onload = function(event) { - const img = document.createElement('img'); - img.src = event.target.result; - img.style.maxWidth = '200px'; - img.style.maxHeight = '200px'; - imagePreview.innerHTML = ''; - imagePreview.appendChild(img); - }; - reader.readAsDataURL(file); - } else { - imagePreview.innerHTML = ''; - } - }); \ No newline at end of file +// imageInput.addEventListener('change', function() { +// console.log("in change kjbck"); +// const file = this.files[0]; +// if (file) { +// const reader = new FileReader(); +// reader.onload = function(event) { +// const img = document.createElement('img'); +// img.src = event.target.result; +// img.style.maxWidth = '200px'; +// img.style.maxHeight = '200px'; +// imagePreview.innerHTML = ''; +// imagePreview.appendChild(img); +// }; +// reader.readAsDataURL(file); +// } else { +// imagePreview.innerHTML = ''; +// } +// }); \ No newline at end of file diff --git a/public/assets/js/admin/manage_cms/manage_news/main.js b/public/assets/js/admin/manage_cms/manage_news/main.js index 0b5d61a..0379371 100644 --- a/public/assets/js/admin/manage_cms/manage_news/main.js +++ b/public/assets/js/admin/manage_cms/manage_news/main.js @@ -16,30 +16,30 @@ $('#zero-config').DataTable({ }); -$(".news_letter_table").on("change", ".active_newsletter", function () { - let base_url = url_path; - var status = $(this).prop("checked") == true ? 1 : 0; - var program_id = $(this).data("id"); - $.ajax({ - type: "GET", - dataType: "json", - url: base_url + '/change_article_Status', - data: { - status: status, - program_id: program_id, - }, - success: function (data) { - if (status == 1) { - toastr.options = { - "timeOut": 500 - } - toastr.success("Status Activate successfully. !!"); - } else { - toastr.error("Status Deactivate successfully. !!"); - } - }, - }); -}); +// $(".news_letter_table").on("change", ".active_newsletter", function () { +// let base_url = url_path; +// var status = $(this).prop("checked") == true ? 1 : 0; +// var program_id = $(this).data("id"); +// $.ajax({ +// type: "GET", +// dataType: "json", +// url: base_url + '/change_article_Status', +// data: { +// status: status, +// program_id: program_id, +// }, +// success: function (data) { +// if (status == 1) { +// toastr.options = { +// "timeOut": 500 +// } +// toastr.success("Status Activate successfully. !!"); +// } else { +// toastr.error("Status Deactivate successfully. !!"); +// } +// }, +// }); +// }); $(document).on("click", ".delete_news", function () { var delete_id = $(this).data('id'); diff --git a/resources/views/Admin/common-modal.blade.php b/resources/views/Admin/common-modal.blade.php new file mode 100644 index 0000000..01e48cd --- /dev/null +++ b/resources/views/Admin/common-modal.blade.php @@ -0,0 +1,774 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/Admin/header.blade.php b/resources/views/Admin/header.blade.php index 429f089..44a0eb6 100644 --- a/resources/views/Admin/header.blade.php +++ b/resources/views/Admin/header.blade.php @@ -31,7 +31,7 @@ - + diff --git a/resources/views/Admin/layouts/master.blade.php b/resources/views/Admin/layouts/master.blade.php index a65c768..0ce60f0 100644 --- a/resources/views/Admin/layouts/master.blade.php +++ b/resources/views/Admin/layouts/master.blade.php @@ -36,7 +36,7 @@
+
+