/home/brandsfa/www/app/Http/Controllers/Admin/Settings/FeaturesSectionController.php
<?php
namespace App\Http\Controllers\Admin\Settings;
use App\Contracts\Repositories\BusinessSettingRepositoryInterface;
use App\Enums\ViewPaths\Admin\FeaturesSection;
use App\Http\Controllers\BaseController;
use App\Services\FeaturesSectionService;
use Illuminate\Contracts\View\View;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class FeaturesSectionController extends BaseController
{
public function __construct(
private readonly BusinessSettingRepositoryInterface $businessSettingRepo,
)
{
}
/**
* @param Request|null $request
* @param string|null $type
* @return View Index function is the starting point of a controller
* Index function is the starting point of a controller
*/
public function index(Request|null $request, string $type = null): View
{
return $this->getView();
}
public function getView(): View
{
$featuresSectionTop = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'features_section_top']);
$featuresSectionMiddle = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'features_section_middle']);
$featuresSectionBottom = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'features_section_bottom']);
return view(FeaturesSection::VIEW[VIEW], compact('featuresSectionTop','featuresSectionMiddle','featuresSectionBottom'));
}
public function update(Request $request, FeaturesSectionService $featuresSectionService): RedirectResponse
{
$this->businessSettingRepo->updateOrInsert(type: 'features_section_top', value: json_encode($request['features_section_top']));
$featuresBottomSection = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'features_section_bottom']);
$section_middle = [];
if($request['features_section_middle']) {
foreach($request['features_section_middle']['title'] as $key => $value){
$section_middle[] = [
'title' => $request['features_section_middle']['title'][$key] ?? '',
'subtitle' => $request['features_section_middle']['subtitle'][$key] ?? '',
];
}
}
$this->businessSettingRepo->updateOrInsert(type: 'features_section_middle', value: json_encode($section_middle));
if($request['features_section_bottom']) {
$section_bottom = $featuresSectionService->getBottomSectionData(request: $request, featuresBottomSection: $featuresBottomSection);
$this->businessSettingRepo->updateOrInsert(type: 'features_section_bottom', value: json_encode($section_bottom));
}
return back();
}
public function delete(Request $request, FeaturesSectionService $featuresSectionService): JsonResponse
{
$featuresData = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'features_section_bottom']);
if($featuresData){
$newArray = $featuresSectionService->getDeleteData(request: $request, data: $featuresData);
$this->businessSettingRepo->updateOrInsert(type: 'features_section_bottom', value: json_encode($newArray));
}
return response()->json(['status'=>'success']);
}
public function getCompanyReliabilityView(): View
{
$companyReliabilityData = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'company_reliability']);
return view(FeaturesSection::COMPANY_RELIABILITY[VIEW], compact('companyReliabilityData'));
}
public function updateCompanyReliability(Request $request, FeaturesSectionService $featuresSectionService): RedirectResponse
{
$data = $this->businessSettingRepo->getFirstWhere(params: ['type'=>'company_reliability']);
$item = $featuresSectionService->getReliabilityUpdateData(request: $request, data: $data);
$this->businessSettingRepo->updateOrInsert(type: 'company_reliability', value: json_encode($item));
return back();
}
}