/home/kueuepay/public_html/app/Http/Controllers/Admin/SetupSectionsController.php
<?php
namespace App\Http\Controllers\Admin;
use Exception;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Constants\GlobalConst;
use App\Http\Helpers\Response;
use App\Models\Admin\Language;
use App\Constants\LanguageConst;
use App\Models\Admin\SiteSections;
use App\Constants\SiteSectionConst;
use App\Http\Controllers\Controller;
use App\Models\Frontend\Announcement;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Models\Frontend\AnnouncementCategory;
class SetupSectionsController extends Controller
{
protected $languages;
public function __construct()
{
$this->languages = Language::get();
}
/**
* Register Sections with their slug
* @param string $slug
* @param string $type
* @return string
*/
public function section($slug,$type) {
$sections = [
'banner' => [
'view' => "bannerView",
'update' => "bannerUpdate",
],
'security' => [
'view' => "securityView",
'update' => "securityUpdate",
'itemStore' => "securityItemStore",
'itemUpdate' => "securityItemUpdate",
'itemDelete' => "securityItemDelete",
],
'how-it-work' => [
'view' => "howItsWorkView",
'update' => "howItsWorkUpdate",
'itemStore' => "howItsWorkItemStore",
'itemUpdate' => "howItsWorkItemUpdate",
'itemDelete' => "howItsWorkItemDelete"
],
'choose-us' => [
'view' => "chooseUsView",
'update' => "chooseUsUpdate",
'itemStore' => "chooseUsItemStore",
'itemUpdate' => "chooseUsItemUpdate",
'itemDelete' => "chooseUsItemDelete"
],
'testimonial' => [
'view' => "testimonialView",
'update' => "testimonialUpdate",
'itemStore' => "testimonialItemStore",
'itemUpdate' => "testimonialItemUpdate",
'itemDelete' => "testimonialItemDelete",
],
'download-app' => [
'view' => "downloadAppView",
'update' => "downloadAppUpdate",
'itemStore' => "downloadAppItemStore",
'itemUpdate' => "downloadAppItemUpdate",
'itemDelete' => "downloadAppItemDelete"
],
'footer' => [
'view' => "footerView",
'update' => "footerUpdate",
],
'subscribe' => [
'view' => "subscribeView",
'update' => "subscribeUpdate",
],
'about-us' => [
'view' => "aboutUsView",
'update' => "aboutUsUpdate",
'itemStore' => "aboutItemStore",
'itemUpdate' => "aboutItemUpdate",
'itemDelete' => "aboutItemDelete"
],
'faq' => [
'view' => "faqView",
'update' => "faqUpdate",
'itemStore' => "faqItemStore",
'itemUpdate' => "faqItemUpdate",
'itemDelete' => "faqItemDelete",
],
'announcement' => [
'view' => "announcementView",
'update' => "announcementUpdate",
],
'services' => [
'view' => "servicesView",
'update' => "servicesUpdate",
'itemStore' => "servicesItemStore",
'itemUpdate' => "servicesItemUpdate",
'itemDelete' => "servicesItemDelete",
],
'contact-us' => [
'view' => "contactUsView",
'update' => "contactUsUpdate",
],
'login' => [
'view' => "loginView",
'update' => "loginUpdate",
],
'register' => [
'view' => "registerView",
'update' => "registerUpdate",
],
'save-cards' => [
'view' => "saveCardsView",
'update' => "saveCardsUpdate",
'itemStore' => "saveCardsItemStore",
'itemUpdate' => "saveCardsItemUpdate",
'itemDelete' => "saveCardsItemDelete",
],
'transfer-money' => [
'view' => "transferMoneyView",
'update' => "transferMoneyUpdate",
'itemStore' => "transferMoneyItemStore",
'itemUpdate' => "transferMoneyItemUpdate",
'itemDelete' => "transferMoneyItemDelete",
],
'payments' => [
'view' => "paymentsView",
'update' => "paymentsUpdate",
'itemStore' => "paymentsItemStore",
'itemUpdate' => "paymentsItemUpdate",
'itemDelete' => "paymentsItemDelete",
],
'accept-payments' => [
'view' => "acceptPaymentView",
'update' => "acceptPaymentUpdate",
],
];
if(!array_key_exists($slug,$sections)) abort(404);
if(!isset($sections[$slug][$type])) abort(404);
$next_step = $sections[$slug][$type];
return $next_step;
}
/**
* Method for getting specific step based on incoming request
* @param string $slug
* @return method
*/
public function sectionView($slug) {
$section = $this->section($slug,'view');
return $this->$section($slug);
}
/**
* Method for distribute store method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function sectionItemStore(Request $request, $slug) {
$section = $this->section($slug,'itemStore');
return $this->$section($request,$slug);
}
/**
* Method for distribute update method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function sectionItemUpdate(Request $request, $slug) {
$section = $this->section($slug,'itemUpdate');
return $this->$section($request,$slug);
}
/**
* Method for distribute delete method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function sectionItemDelete(Request $request,$slug) {
$section = $this->section($slug,'itemDelete');
return $this->$section($request,$slug);
}
/**
* Method for distribute update method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function sectionUpdate(Request $request,$slug) {
$section = $this->section($slug,'update');
return $this->$section($request,$slug);
}
/**
* Method for show banner section page
* @param string $slug
* @return view
*/
public function bannerView($slug) {
$page_title = "Banner Section";
$section_slug = Str::slug(SiteSectionConst::BANNER_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.banner-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update banner section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function bannerUpdate(Request $request,$slug) {
$basic_field_name = [
'heading' => "required|string|max:100",
'sub_heading' => "required|string|max:500",
'statistic_first_title' => "required|string|max:100",
'statistic_first_value' => "required|integer",
'statistic_second_title' => "required|string|max:100",
'statistic_second_value' => "required|integer",
'statistic_last_title' => "required|string|max:100",
'statistic_last_value' => "required",
];
$slug = Str::slug(SiteSectionConst::BANNER_SECTION);
$section = SiteSections::where("key",$slug)->first();
$data = json_decode(json_encode($section->value),true);
$data['image'] = $section->value->image ?? null;
if($request->hasFile("image")) {
$data['image'] = $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['value'] = $data;
$update_data['key'] = $slug;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for distribute update method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function securityView($slug){
$page_title = "Security Section";
$section_slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.security-section',compact(
'page_title',
'data',
'languages',
'slug'
));
}
/**
* Mehtod for update security section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function securityUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string|max:100',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key'=>$slug],$update_data);
}catch(Exception $e){
return back()->with(['error'=>'Something went wrong! Please try again.']);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Mehtod for store security item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function securityItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => "required|string|max:255",
'item_heading' => "required|string|max:500",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"security-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$validator = Validator::make($request->all(),[
'icon' => "required|file",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput()->with('modal','security-add');
$unique_id = uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['status'] = 1;
$section_data['items'][$unique_id]['id'] = $unique_id;
if ($request->hasFile('icon')) {
if (!empty($section_data['items'][$unique_id]['icon'])) {
Storage::disk('site-section')->delete($section_data['items'][$unique_id]['icon']);
}
$section_data['items'][$unique_id]['icon'] = $request->file('icon')->storeAs('', $request->file('icon')->getClientOriginalName(), 'site-section');
}
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Mehtod for update security item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function securityItemUpdate(Request $request,$slug) {
$request->validate([
'target' =>'required|string',
]);
$basic_field_name = [
'item_title_edit' => "required|string|max:255",
'item_heading_edit' => "required|string|max:500",
];
$slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section Not Found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item Not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['[error' => ['Section Item is invalid']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"security-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,'_edit');
},$language_wise_data);
$validator = Validator::make($request->all(),[
'icon_edit' => "nullable|file",
]);
$section_values['items'][$request->target]['language'] = $language_wise_data;
if ($request->hasFile('icon_edit')) {
if (!empty($section_values['items'][$request->target]['icon'])) {
Storage::disk('site-section')->delete($section_values['items'][$request->target]['icon']);
}
$originalName = $request->file('icon_edit')->getClientOriginalName();
$uniqueName = rand() . '-' . $originalName;
$section_values['items'][$request->target]['icon'] = $request->file('icon_edit')->storeAs('', $uniqueName, 'site-section');
}
try{
$section->update([
'value' =>$section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Mehtod for delete security item information
* @param string $slug
* @return view
*/
public function securityItemDelete(request $request,$slug){
$request->validate([
'target' =>'required|string',
]);
$slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return $e->getMessage();
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Mehtod for update security item status
* @param string $slug
* @return view
*/
public function securityStatusUpdate(Request $request,$slug) {
$validator = Validator::make($request->all(),[
'status' => 'required|boolean',
'data_target' => 'required|string',
]);
if ($validator->stopOnFirstFailure()->fails()) {
return Response::error($validator->errors()->all(),null,400);
}
$slug = Str::slug(SiteSectionConst::SECURITY_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
if(array_key_exists("items",$data) && array_key_exists($request->data_target,$data['items'])) {
$data['items'][$request->data_target]['status'] = ($request->status == 1) ? 0 : 1;
}else {
return Response::error(['Items not found or invalid!'],[],404);
}
$section->update([
'value' => $data,
]);
return Response::success([__('Section item status updated successfully!')],[],200);
}
/**
* Method for distribute update method for any section by using slug
* @param string $slug
* @param \Illuminate\Http\Request $request
* @return method
*/
public function chooseUsView($slug){
$page_title = "Choose Us Section";
$section_slug = Str::slug(SiteSectionConst::CHOOSE_US_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.choose-us-section',compact(
'page_title',
'data',
'languages',
'slug'
));
}
/**
* Mehtod for update choose us section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function chooseUsUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string|max:100',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::CHOOSE_US_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key'=>$slug],$update_data);
}catch(Exception $e){
return back()->with(['error'=>'Something went wrong! Please try again.']);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Mehtod for store security item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function chooseUsItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => "required|string|max:255",
'item_heading' => "required|string|max:500",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"security-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::CHOOSE_US_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$validator = Validator::make($request->all(),[
'icon' => "required|string",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput()->with('modal','choose-us-add');
$unique_id = uniqid();
$validated = $validator->validate();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['status'] = 1;
$section_data['items'][$unique_id]['id'] = $unique_id;
$section_data['items'][$unique_id]['icon'] = $validated['icon'];
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Mehtod for update security item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function chooseUsItemUpdate(Request $request,$slug) {
$request->validate([
'target' =>'required|string',
]);
$basic_field_name = [
'item_title_edit' => "required|string|max:255",
'item_heading_edit' => "required|string|max:500",
];
$slug = Str::slug(SiteSectionConst::CHOOSE_US_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section Not Found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item Not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['[error' => ['Section Item is invalid']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"choose-us-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,'_edit');
},$language_wise_data);
$validator = Validator::make($request->all(),[
'icon_edit' => "required|string",
]);
$validated = $validator->validate();
$section_values['items'][$request->target]['language'] = $language_wise_data;
$section_values['items'][$request->target]['icon'] = $validated['icon_edit'];
try{
$section->update([
'value' =>$section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Mehtod for delete security item information
* @param string $slug
* @return view
*/
public function chooseUsItemDelete(request $request,$slug){
$request->validate([
'target' =>'required|string',
]);
$slug = Str::slug(SiteSectionConst::CHOOSE_US_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return $e->getMessage();
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for show how its work section page
* @param string $slug
* @return view
*/
public function howItsWorkView($slug){
$page_title = "How Its Work Section";
$section_slug = Str::slug(SiteSectionConst::HOW_ITS_WORK_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.how-its-work-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update howItsWork section page
* @param string $slug
* @return view
*/
public function howItsWorkUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string|max:100',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::HOW_ITS_WORK_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data =[];
}
$validator = Validator::make($request->all(),[
'image' => 'nullable|file',
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if ($request->hasFile('image')) {
if (!empty($data['image'])) {
Storage::disk('site-section')->delete($data['image']);
}
$data['image'] = $request->file('image')->storeAs('', $request->file('image')->getClientOriginalName(), 'site-section');
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(["key"=>$slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for store howItsWork item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function howItsWorkItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => 'required|string|max:100',
'item_heading' => 'required|string',
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"HowItsWork-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::HOW_ITS_WORK_SECTION);
$section = SiteSections::where('key',$slug)->first();
if($section != null){
$section_data = json_decode(json_encode($section->value),true);
}else{
$section_data = [];
}
$unique_id =uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went worng! Please try again.']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update howItsWork item
* @param string $slug
* @return view
*/
public function howItsWorkItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
"item_title_edit" => "required|string|max:100",
"item_heading_edit" => "required|string",
];
$slug = Str::slug(SiteSectionConst::HOW_ITS_WORK_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values["items"])) return back()->with(['error' => ['Section item not found']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"HowItsWork-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something Went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item updated successfully!']]);
}
/**
* Method for delete howItsWork item
* @param string $slug
* @return view
*/
public function howItsWorkItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::HOW_ITS_WORK_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for show download app section
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function downloadAppView($slug){
$page_title = "Download App Section";
$section_slug = Str::slug(SiteSectionConst::DOWNLOAD_APP_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.download-app-section',compact(
'page_title',
'data',
'languages',
'slug'
));
}
/**
* Method for update download app section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function downloadAppUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::DOWNLOAD_APP_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for store download app item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function downloadAppItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => "required|string|max:2555",
'item_header' => "required|string|max:2555",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"download-app-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::DOWNLOAD_APP_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$unique_id = uniqid();
$validator = Validator::make($request->all(),[
'link' => "required|url",
'icon_image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput()->with('modal','download-app-add');
$validated = $validator->validate();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$section_data['items'][$unique_id]['image'] = "";
$section_data['items'][$unique_id]['icon_image'] = "";
$section_data['items'][$unique_id]['link'] = $validated['link'];
$section_data['items'][$unique_id]['created_at'] = now();
if($request->hasFile("image")) {
$section_data['items'][$unique_id]['image'] = $this->imageValidate($request,"image",$section->value->items->image ?? null);
}
if($request->hasFile("icon_image")) {
$section_data['items'][$unique_id]['icon_image'] = $this->imageValidate($request,"icon_image",$section->value->items->icon_image ?? null);
}
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update download app item
* @param string $slug
* @return view
*/
public function downloadAppItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
'item_title_edit' => "required|string|max:2555",
'item_header_edit' => "required|string|max:2555",
];
$slug = Str::slug(SiteSectionConst::DOWNLOAD_APP_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$request->merge(['old_image' => $section_values['items'][$request->target]['image'] ?? null]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"download-app-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language) {
return replace_array_key($language,"_edit");
},$language_wise_data);
$validator = Validator::make($request->all(),[
'link' => "required|url",
'icon_image'=> "nullable|image|mimes:jpg,png,svg,webp|max:10240",
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput()->with('modal','download-app-edit');
$validated = $validator->validate();
$section_values['items'][$request->target]['language'] = $language_wise_data;
$section_values['items'][$request->target]['link'] = $validated['link'];
if($request->hasFile("image")) {
$section_values['items'][$request->target]['image'] = $this->imageValidate($request,"image",$section_values['items'][$request->target]['image'] ?? null);
}
if($request->hasFile("icon_image")) {
$section_values['items'][$request->target]['icon_image'] = $this->imageValidate($request,"icon_image",$section_values['items'][$request->target]['icon_image'] ?? null);
}
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Method for delete download app item
* @param string $slug
* @return view
*/
public function downloadAppItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::DOWNLOAD_APP_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
try{
$image_name = $section_values['items'][$request->target]['image'];
unset($section_values['items'][$request->target]);
$image_path = get_files_path('site-section') . '/' . $image_name;
delete_file($image_path);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for show about us section page
* @param string $slug
* @return view
*/
public function aboutUsView($slug) {
$page_title = "About US Section";
$section_slug = Str::slug(SiteSectionConst::ABOUT_US_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.about-us-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update about section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function aboutUsUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:100",
'heading' => "required|string|max:100",
'sub_heading' => "required|string|max:1000",
];
$slug = Str::slug(SiteSectionConst::ABOUT_US_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$data = json_decode(json_encode($section->value),true);
}else {
$data = [];
}
if($request->hasFile("video")) {
$originalName = $request->file('video')->getClientOriginalName();
$uniqueName = time() . '-' . $originalName;
$data['video'] = $request->file('video')->storeAs('', $uniqueName, 'site-section');
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['value'] = $data;
$update_data['key'] = $slug;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for store about item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function aboutItemStore(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:255",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"about-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::ABOUT_US_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$unique_id = uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update about item section page
* @param string $slug
* @return view
*/
public function aboutItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
"title_edit" => "required|string|max:100",
];
$slug = Str::slug(SiteSectionConst::ABOUT_US_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values["items"])) return back()->with(['error' => ['Section item not found']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"about-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something Went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item updated successfully!']]);
}
/**
* Method for delete about item section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function aboutItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::ABOUT_US_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for show services section page
* @param string $slug
* @return view
*/
public function servicesView($slug) {
$page_title = "Services Section";
$section_slug = Str::slug(SiteSectionConst::SERVICES_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.services-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update service section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function servicesUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:100",
'heading' => "required|string|max:255",
'sub_heading' => "required|string",
];
$slug = Str::slug(SiteSectionConst::SERVICES_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$section_data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for store service item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function servicesItemStore(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:255",
'description' => "required|string|max:500",
];
$validator = Validator::make($request->all(),[
'icon' => "required|string|max:255",
]);
if($validator->fails()) return back()->withErrors($validator)->withInput()->with('modal','service-add');
$validated = $validator->validate();
$language_wise_data = $this->contentValidate($request,$basic_field_name,"service-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::SERVICES_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$unique_id = uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$section_data['items'][$unique_id]['icon'] = $validated['icon'];
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update service item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function servicesItemUpdate(Request $request,$slug) {
$request->validate([
'target' => "required|string",
'icon_edit' => "required|string|max:255",
]);
$basic_field_name = [
'title_edit' => "required|string|max:255",
'description_edit' => "required|string|max:500",
];
$slug = Str::slug(SiteSectionConst::SERVICES_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"service-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language) {
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
$section_values['items'][$request->target]['icon'] = $request->icon_edit;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Method for delete service item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function servicesItemDelete(Request $request,$slug) {
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::SERVICES_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item delete successfully!']]);
}
/**
* Mehtod for show faq section page
* @param string $slug
* @return view
*/
public function faqView($slug){
$page_title = "Faq Section";
$section_slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.faq-section',compact(
'page_title',
'data',
'languages',
'slug'
));
}
/**
* Mehtod for update faq section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function faqUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key'=>$slug],$update_data);
}catch(Exception $e){
return back()->with(['error'=>'Something went wrong! Please try again.']);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Mehtod for store faq item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function faqItemStore(Request $request,$slug) {
$basic_field_name = [
'question' => "required|string|max:255",
'answer' => "required|string|max:500",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"faq-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$unique_id = uniqid();
$default =get_default_language_code();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['status'] = 1;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Mehtod for update faq item information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function faqItemUpdate(Request $request,$slug) {
$request->validate([
'target' =>'required|string',
]);
$basic_field_name = [
'question_edit' => "required|string|max:255",
'answer_edit' => "required|string|max:500",
];
$slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section Not Found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item Not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['[error' => ['Section Item is invalid']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"faq-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,'_edit');
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' =>$section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Mehtod for delete faq item information
* @param string $slug
* @return view
*/
public function faqItemDelete(request $request,$slug){
$request->validate([
'target' =>'required|string',
]);
$slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return $e->getMessage();
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Mehtod for update faq item status
* @param string $slug
* @return view
*/
public function faqStatusUpdate(Request $request,$slug) {
$validator = Validator::make($request->all(),[
'status' => 'required|boolean',
'data_target' => 'required|string',
]);
if ($validator->stopOnFirstFailure()->fails()) {
return Response::error($validator->errors()->all(),null,400);
}
$slug = Str::slug(SiteSectionConst::FAQ_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
if(array_key_exists("items",$data) && array_key_exists($request->data_target,$data['items'])) {
$data['items'][$request->data_target]['status'] = ($request->status == 1) ? 0 : 1;
}else {
return Response::error(['Items not found or invalid!'],[],404);
}
$section->update([
'value' => $data,
]);
return Response::success([__('Section item status updated successfully!')],[],200);
}
/**
* Method for show subscribe section page
* @param string $slug
* @return view
*/
public function subscribeView($slug){
$page_title = "Subscribe Section";
$section_slug = Str::slug(SiteSectionConst::SUBSCRIBE_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.subscribe-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update subscribe section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function subscribeUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'description' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::SUBSCRIBE_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null ){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key'=>$slug],$update_data);
}catch(Exception $e){
return back()->with(['error'=>'Something went wrong! Please try again.']);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for show clients feedback section page
* @param string $slug
* @return view
*/
public function testimonialView($slug) {
$page_title = "Testimonial Section";
$section_slug = Str::slug(SiteSectionConst::TESTIMONIAL);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.clients-feedback-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update clients feedback section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function testimonialUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:100",
'heading' => "required|string|max:100",
'sub_heading' => "required|string",
];
$slug = Str::slug(SiteSectionConst::TESTIMONIAL);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$section_data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for store clients feedback item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function testimonialItemStore(Request $request,$slug) {
$basic_field_name = [
'comment' => "required|string|max:1000",
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"client-feedback-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::TESTIMONIAL);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$unique_id = uniqid();
// request data validate
$validator = Validator::make($request->all(),[
'name' => "required|string|max:255",
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput()->with('modal','client-feedback-add');
$validated = $validator->validate();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$section_data['items'][$unique_id]['image'] = "";
$section_data['items'][$unique_id]['name'] = $validated['name'];
if($request->hasFile("image")) {
$section_data['items'][$unique_id]['image'] = $this->imageValidate($request,"image",$section->value->items->image ?? null);
}
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update testimonial item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function testimonialItemUpdate(Request $request,$slug) {
$validator = Validator::make($request->all(),[
'target' => "required|string",
'name_edit' => "required|string|max:255",
'image_edit' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) {
return back()->withErrors($validator->errors())->withInput()->with('modal','client-feedback-update');
}
$validated = $validator->validate();
$basic_field_name = [
'comment_edit' => "required|string|max:1000",
];
$slug = Str::slug(SiteSectionConst::TESTIMONIAL);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"client-feedback-update");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language) {
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
$section_values['items'][$request->target]['name'] = $request->name_edit;
$section_values['items'][$request->target]['image'] = $section_values['items'][$request->target]['image'] ?? "";
if($request->hasFile("image_edit")) {
$section_values['items'][$request->target]['image'] = $this->imageValidate($request,"image_edit",$section_values['items'][$request->target]['image'] ?? null);
}
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Information updated successfully!']]);
}
/**
* Method for delete testimonial item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function testimonialItemDelete(Request $request,$slug) {
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::TESTIMONIAL);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section item not found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
try{
$image_link = get_files_path('site-section') . '/' . $section_values['items'][$request->target]['image'];
unset($section_values['items'][$request->target]);
delete_file($image_link);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item delete successfully!']]);
}
/**
* Method for show announcement section page
* @param string $slug
* @return view
*/
public function announcementView($slug) {
$page_title = "Announcement Section";
$section_slug = Str::slug(SiteSectionConst::ANNOUNCEMENT_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
$announcements = Announcement::get();
$categories = AnnouncementCategory::get();
$total_categories = $categories->count();
$active_categories = $categories->where("status",GlobalConst::ACTIVE)->count();
$total_announcements = $announcements->count();
$active_announcements = $announcements->where("status",GlobalConst::ACTIVE)->count();
return view('admin.sections.setup-sections.announcement-section',compact(
'page_title',
'data',
'languages',
'slug',
'total_categories',
'active_categories',
'total_announcements',
'active_announcements',
));
}
/**
* Method for update announcement update section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function announcementUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:100",
'heading' => "required|string|max:255",
'sub_heading' => "required|string",
];
$slug = Str::slug(SiteSectionConst::ANNOUNCEMENT_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$section_data = json_decode(json_encode($section->value),true);
}else {
$section_data = [];
}
$section_data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for show footer section page
* @param string $slug
* @return view
*/
public function footerView($slug) {
$page_title = "Footer Section";
$section_slug = Str::slug(SiteSectionConst::FOOTER_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.footer-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update footer section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function footerUpdate(Request $request,$slug) {
$slug = Str::slug(SiteSectionConst::FOOTER_SECTION);
$section = SiteSections::where('key',$slug)->first();
if($section != null) {
$data = json_decode(json_encode($section->value),true);
}else {
$data = [];
}
$basic_field_name = [
'description' => "required|string",
];
$data['footer']['language'] = $this->contentValidate($request,$basic_field_name);
$validated = Validator::make($request->all(),[
'icon' => "nullable|array",
'icon.*' => "nullable|string|max:200",
'link' => "nullable|array",
'link.*' => "nullable|url|max:255",
])->validate();
// generate input fields
$social_links = [];
foreach($validated['icon'] as $key => $icon) {
$social_links[] = [
'icon' => $icon,
'link' => $validated['link'][$key] ?? "",
];
}
$data['social_links'] = $social_links;
$data['footer']['image'] = $section->value->footer->image ?? "";
if($request->hasFile("image")) {
$data['footer']['image'] = $this->imageValidate($request,"image",$section->value->footer->image ?? null);
}
try{
SiteSections::updateOrCreate(['key' => $slug],[
'key' => $slug,
'value' => $data,
]);
}catch(Exception $e) {
return back()->with(['error' => ['Something went wrong! Please try again']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for show contact us section page
* @param string $slug
* @return view
*/
public function contactUsView($slug) {
$page_title = "Contact US Section";
$section_slug = Str::slug(SiteSectionConst::CONTACT_US_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.contact-us-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update contact us section information
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function contactUsUpdate(Request $request,$slug) {
$basic_field_name = [
'title' => "required|string|max:100",
'heading' => "required|string",
'sub_heading' => "required|string",
];
$slug = Str::slug(SiteSectionConst::CONTACT_US_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null) {
$data = json_decode(json_encode($section->value),true);
}else {
$data = [];
}
$validated = Validator::make($request->all(),[
'phone' => "required|string|max:100",
'address' => "required|string|max:100",
'email' => "required|email",
'schedule' => "nullable|array",
'schedule.*' => "nullable|string|max:255",
])->validate();;
$schedules = [];
foreach($validated['schedule'] ?? [] as $key => $schedule) {
$schedules[] = [
'schedule' => $validated['schedule'][$key] ?? "",
];
}
$data['schedules'] = $schedules;
$data['language'] = $this->contentValidate($request,$basic_field_name);
$data['phone'] = $validated['phone'];
$data['address'] = $validated['address'];
$data['email'] = $validated['email'];
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image'] = $this->imageValidate($request,"image",$section->value->image ?? null);
}
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e) {
return back()->with(['error' => ['Something went worng! Please try again.']]);
}
return back()->with(['success' => ['Section updated successfully!']]);
}
/**
* Method for show login section page
* @param string $slug
* @return view
*/
public function loginView($slug){
$page_title = "Login Section";
$section_slug = Str::slug(SiteSectionConst::LOGIN_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.login-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update login section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function loginUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::LOGIN_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for show register section page
* @param string $slug
* @return view
*/
public function registerView($slug){
$page_title = "Register Section";
$section_slug = Str::slug(SiteSectionConst::REGISTER_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.register-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update register section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function registerUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::REGISTER_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for view save cards section
* @return view
*/
public function saveCardsView($slug){
$page_title = "Save Cards Section";
$section_slug = Str::slug(SiteSectionConst::SAVE_CARDS);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.save-cards-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update save cards section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function saveCardsUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::SAVE_CARDS);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for store save cards item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function saveCardsItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => 'required|string|max:100',
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"save-cards-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::SAVE_CARDS);
$section = SiteSections::where('key',$slug)->first();
if($section != null){
$section_data = json_decode(json_encode($section->value),true);
}else{
$section_data = [];
}
$unique_id =uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went worng! Please try again.']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update save cards item
* @param string $slug
* @return view
*/
public function saveCardsItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
"item_title_edit" => "required|string|max:100",
];
$slug = Str::slug(SiteSectionConst::SAVE_CARDS);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values["items"])) return back()->with(['error' => ['Section item not found']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"save-cards-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something Went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item updated successfully!']]);
}
/**
* Method for delete save cards item
* @param string $slug
* @return view
*/
public function saveCardsItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::SAVE_CARDS);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for view transfer money section
* @return view
*/
public function transferMoneyView($slug){
$page_title = "Transfer Money Section";
$section_slug = Str::slug(SiteSectionConst::TRANSFER_MONEY_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.transfer-money-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update transfer money section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function transferMoneyUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::TRANSFER_MONEY_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for store transfer money item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function transferMoneyItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => 'required|string',
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"transfer-money-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::TRANSFER_MONEY_SECTION);
$section = SiteSections::where('key',$slug)->first();
if($section != null){
$section_data = json_decode(json_encode($section->value),true);
}else{
$section_data = [];
}
$unique_id =uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went worng! Please try again.']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update transfer money item
* @param string $slug
* @return view
*/
public function transferMoneyItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
"item_title_edit" => "required|string",
];
$slug = Str::slug(SiteSectionConst::TRANSFER_MONEY_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values["items"])) return back()->with(['error' => ['Section item not found']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"transfer-money-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something Went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item updated successfully!']]);
}
/**
* Method for delete transfer money item
* @param string $slug
* @return view
*/
public function transferMoneyItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::TRANSFER_MONEY_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for view payments section
* @return view
*/
public function paymentsView($slug){
$page_title = "Payments Section";
$section_slug = Str::slug(SiteSectionConst::PAYMENTS_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.payments-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update payments section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function paymentsUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::PAYMENTS_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for store payments item
* @param string $slug
* @param \Illuminate\Http\Request $request
*/
public function paymentsItemStore(Request $request,$slug) {
$basic_field_name = [
'item_title' => 'required|string',
];
$language_wise_data = $this->contentValidate($request,$basic_field_name,"payments-add");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$slug = Str::slug(SiteSectionConst::PAYMENTS_SECTION);
$section = SiteSections::where('key',$slug)->first();
if($section != null){
$section_data = json_decode(json_encode($section->value),true);
}else{
$section_data = [];
}
$unique_id =uniqid();
$section_data['items'][$unique_id]['language'] = $language_wise_data;
$section_data['items'][$unique_id]['id'] = $unique_id;
$update_data['key'] = $slug;
$update_data['value'] = $section_data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went worng! Please try again.']]);
}
return back()->with(['success' => ['Section item added successfully!']]);
}
/**
* Method for update payments item
* @param string $slug
* @return view
*/
public function paymentsItemUpdate(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$basic_field_name = [
"item_title_edit" => "required|string",
];
$slug = Str::slug(SiteSectionConst::PAYMENTS_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values["items"])) return back()->with(['error' => ['Section item not found']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid!']]);
$language_wise_data = $this->contentValidate($request,$basic_field_name,"payments-edit");
if($language_wise_data instanceof RedirectResponse) return $language_wise_data;
$language_wise_data = array_map(function($language){
return replace_array_key($language,"_edit");
},$language_wise_data);
$section_values['items'][$request->target]['language'] = $language_wise_data;
try{
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something Went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item updated successfully!']]);
}
/**
* Method for delete payments item
* @param string $slug
* @return view
*/
public function paymentsItemDelete(Request $request,$slug){
$request->validate([
'target' => 'required|string',
]);
$slug = Str::slug(SiteSectionConst::PAYMENTS_SECTION);
$section = SiteSections::getData($slug)->first();
if(!$section) return back()->with(['error' => ['Section not found!']]);
$section_values = json_decode(json_encode($section->value),true);
if(!isset($section_values['items'])) return back()->with(['error' => ['Section Item not Found!']]);
if(!array_key_exists($request->target,$section_values['items'])) return back()->with(['error' => ['Section item is invalid']]);
try{
unset($section_values['items'][$request->target]);
$section->update([
'value' => $section_values,
]);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with(['success' => ['Section item deleted successfully!']]);
}
/**
* Method for view accept payments section
* @return view
*/
public function acceptPaymentView($slug){
$page_title = "Accept Payments Section";
$section_slug = Str::slug(SiteSectionConst::ACCEPT_PAYMENT_SECTION);
$data = SiteSections::getData($section_slug)->first();
$languages = $this->languages;
return view('admin.sections.setup-sections.accept-payments-section',compact(
'page_title',
'data',
'languages',
'slug',
));
}
/**
* Method for update accept payments section
* @param string
* @param \Illuminate\\Http\Request $request
*/
public function acceptPaymentUpdate(Request $request,$slug){
$basic_field_name = [
'title' => 'required|string|max:100',
'heading' => 'required|string',
'sub_heading' => 'required|string',
];
$slug = Str::slug(SiteSectionConst::ACCEPT_PAYMENT_SECTION);
$section = SiteSections::where("key",$slug)->first();
if($section != null){
$data = json_decode(json_encode($section->value),true);
}else{
$data = [];
}
$validator = Validator::make($request->all(),[
'image' => "nullable|image|mimes:jpg,png,svg,webp|max:10240",
]);
if($validator->fails()) return back()->withErrors($validator->errors())->withInput();
$validated = $validator->validate();
$data['image'] = $section->value->image ?? "";
if($request->hasFile("image")){
$data['image']= $this->imageValidate($request,"image",$section->value->image ?? null);
}
$data['language'] = $this->contentValidate($request,$basic_field_name);
$update_data['key'] = $slug;
$update_data['value'] = $data;
try{
SiteSections::updateOrCreate(['key' => $slug],$update_data);
}catch(Exception $e){
return back()->with(['error' => ['Something went wrong! Please try again.']]);
}
return back()->with( ['success' => ['Section updated successfully!']]);
}
/**
* Method for get languages form record with little modification for using only this class
* @return array $languages
*/
public function languages() {
$languages = Language::whereNot('code',LanguageConst::NOT_REMOVABLE)->select("code","name")->get()->toArray();
$languages[] = [
'name' => LanguageConst::NOT_REMOVABLE_CODE,
'code' => LanguageConst::NOT_REMOVABLE,
];
return $languages;
}
/**
* Method for validate request data and re-decorate language wise data
* @param object $request
* @param array $basic_field_name
* @return array $language_wise_data
*/
public function contentValidate($request,$basic_field_name,$modal = null) {
$languages = $this->languages();
$current_local = get_default_language_code();
$validation_rules = [];
$language_wise_data = [];
foreach($request->all() as $input_name => $input_value) {
foreach($languages as $language) {
$input_name_check = explode("_",$input_name);
$input_lang_code = array_shift($input_name_check);
$input_name_check = implode("_",$input_name_check);
if($input_lang_code == $language['code']) {
if(array_key_exists($input_name_check,$basic_field_name)) {
$langCode = $language['code'];
if($current_local == $langCode) {
$validation_rules[$input_name] = $basic_field_name[$input_name_check];
}else {
$validation_rules[$input_name] = str_replace("required","nullable",$basic_field_name[$input_name_check]);
}
$language_wise_data[$langCode][$input_name_check] = $input_value;
}
break;
}
}
}
if($modal == null) {
$validated = Validator::make($request->all(),$validation_rules)->validate();
}else {
$validator = Validator::make($request->all(),$validation_rules);
if($validator->fails()) {
return back()->withErrors($validator)->withInput()->with("modal",$modal);
}
$validated = $validator->validate();
}
return $language_wise_data;
}
/**
* Method for validate request image if have
* @param object $request
* @param string $input_name
* @param string $old_image
* @return boolean|string $upload
*/
public function imageValidate($request,$input_name,$old_image) {
if($request->hasFile($input_name)) {
$image_validated = Validator::make($request->only($input_name),[
$input_name => "image|mimes:png,jpg,webp,jpeg,svg",
])->validate();
$image = get_files_from_fileholder($request,$input_name);
$upload = upload_files_from_path_dynamic($image,'site-section',$old_image);
return $upload;
}
return false;
}
}
Run Command [Bypass]
Run Command
Forgot Password
Reset Your Forgotten Password?
Take control of your account by resetting your password. Our password recovery page guides you through the necessary steps to securely reset your password.