<?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;
}
}
The Kueue Pay Payment Gateway is an innovative technology that facilitates seamless and secure transactions between merchants and their customers. It enables businesses to accept debit and credit card payments both online and in physical stores.
The Kueue Pay Payment Gateway acts as a bridge between a merchant’s website or point-of-sale system and the payment processing network. It securely transmits payment information, authorizes transactions, and provides real-time status updates.
The Kueue Pay Developer API empowers developers and entrepreneurs to integrate the Kueue Pay Payment Gateway directly into their websites or applications. This streamlines the payment process for customers and provides businesses with a customizable and efficient payment solution.
To access the Kueue Pay Developer API, you need to sign up for a developer account on our platform. Once registered, you’ll receive an API key that you can use to authenticate your API requests.
The Kueue Pay Developer API allows you to initiate payments, check the status of payments, and process refunds. You can create a seamless payment experience for your customers while maintaining control over transaction management.
Yes, the Kueue Pay Developer API is designed to accommodate businesses of varying sizes and industries. Whether you’re a small online store or a large enterprise, our API can be tailored to fit your specific payment needs.
The Kueue Pay Developer API is designed with simplicity and ease of use in mind. Our comprehensive documentation, code samples, and developer support resources ensure a smooth integration process for any web platform.
We offer competitive pricing plans for using the Kueue Pay Payment Gateway and Developer API. Details about fees and pricing tiers can be found on our developer portal.
Absolutely, the Kueue Pay Developer API offers customization options that allow you to tailor the payment experience to match your brand and user interface. You can create a seamless and cohesive payment journey for your customers.
We provide dedicated developer support to assist you with any issues or questions you may have during the API integration process. Reach out to our support team at developersupport@NFCPay.com for prompt assistance.
Remember, our goal is to empower your business with a robust and efficient payment solution. If you have any additional questions or concerns, feel free to explore our developer portal or contact our support team.