<?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;
}
}
At NFC Pay, your privacy is of utmost importance to us. This Privacy Policy outlines how we collect, use, share, and protect your personal information when you use our services, including our website and mobile applications.
1. Information We Collect
2. How We Use Your Information
We use the information we collect for the following purposes:
3. Sharing Your Information
We may share your personal information in the following circumstances:
4. Security of Your Information
We take the security of your personal information seriously and implement a variety of security measures, including encryption, secure servers, and access controls, to protect your data from unauthorized access, disclosure, alteration, or destruction. However, no method of transmission over the internet or electronic storage is completely secure, and we cannot guarantee its absolute security.
5. Your Privacy Rights
Depending on your location, you may have certain rights regarding your personal information, such as:
6. Third-Party Links
Our services may contain links to third-party websites or services. We are not responsible for the privacy practices or the content of these third-party sites. We encourage you to review the privacy policies of those third parties.
7. Children’s Privacy
Our services are not intended for individuals under the age of 13. We do not knowingly collect personal information from children under 13. If we become aware that we have collected personal information from a child under 13, we will take steps to delete that information.
8. Changes to This Privacy Policy
We may update this Privacy Policy from time to time to reflect changes in our practices or for other operational, legal, or regulatory reasons. We will notify you of any significant changes by posting the new Privacy Policy on our website and updating the effective date.
9. Contact Us
If you have any questions or concerns about this Privacy Policy or our data practices, please contact us at:
Email: support@nfcpay.com