
PK 
<?php
namespace App\Http\Controllers;
use App\SiteSeting;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
class SiteSetingController extends Controller
{
/**
* Create a new controller instance.
*/
public function __construct()
{
$this->middleware('auth:admin');
}
/**
* Display a listing of the resource.
*/
public function index(): View|RedirectResponse
{
if (view()->exists('backend.admin.sitesettings.index')) {
$settings = SiteSeting::orderBy('id', 'desc')->paginate(50);
$settings->withPath('setting');
return view('backend.admin.sitesettings.index', compact('settings'));
}
return back()->with('error', 'View not found');
}
/**
* Show the form for creating a new resource.
*/
public function create(): View|RedirectResponse
{
if (view()->exists('backend.admin.sitesettings.siteSettingCreate')) {
// Get the latest active setting to pre-fill form
$latestSetting = SiteSeting::orderBy('id', 'desc')
->where('isactive', 1)
->where('isdelete', 1)
->first();
return view('backend.admin.sitesettings.siteSettingCreate', compact('latestSetting'));
}
return back()->with('error', 'View not found');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
// CSRF token validation
if ($request->_token !== Session::token()) {
return Redirect::back()->with('error', 'Invalid form submission!');
}
// Get previous active data for fallback values
$prevData = SiteSeting::orderBy('id', 'desc')
->where('isactive', 1)
->where('isdelete', 1)
->first();
// Validate required fields
$validator = Validator::make($request->all(), [
'company_name' => 'required|string|max:255',
'company_gstno' => 'required|string|max:50|unique:site_setings,company_gstno',
'company_address' => 'required|string',
'company_state' => 'required|string|max:100',
'isactive' => 'required|boolean',
'cardmin_amount' => 'nullable|numeric|min:0',
'carddiscount_rate' => 'nullable|numeric|min:0',
'carddiscount_type' => 'nullable|string|max:50',
'facebook_url' => 'nullable|url|max:255',
'facebook_authkey' => 'nullable|string|max:255',
'google_url' => 'nullable|url|max:255',
'google_authkey' => 'nullable|string|max:255',
]);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
try {
$site = new SiteSeting();
// Use new values or fallback to previous data
$site->company_name = !empty($request->company_name)
? Str::title($request->company_name)
: ($prevData->company_name ?? '');
$site->company_address = !empty($request->company_address)
? $request->company_address
: ($prevData->company_address ?? '');
$site->company_gstno = !empty($request->company_gstno)
? $request->company_gstno
: ($prevData->company_gstno ?? '');
$site->company_state = !empty($request->company_state)
? Str::title($request->company_state)
: ($prevData->company_state ?? '');
$site->cardmin_amount = !empty($request->cardmin_amount)
? (float) $request->cardmin_amount
: ($prevData->cardmin_amount ?? 0);
$site->carddiscount_rate = !empty($request->carddiscount_rate)
? (float) $request->carddiscount_rate
: ($prevData->carddiscount_rate ?? 0);
$site->carddiscount_type = !empty($request->carddiscount_type)
? $request->carddiscount_type
: ($prevData->carddiscount_type ?? '');
$site->facebook_url = !empty($request->facebook_url)
? $request->facebook_url
: ($prevData->facebook_url ?? '');
$site->facebook_authkey = !empty($request->facebook_authkey)
? $request->facebook_authkey
: ($prevData->facebook_authkey ?? '');
$site->google_url = !empty($request->google_url)
? $request->google_url
: ($prevData->google_url ?? '');
$site->google_authkey = !empty($request->google_authkey)
? $request->google_authkey
: ($prevData->google_authkey ?? '');
$site->isactive = (bool) $request->isactive;
$site->isdelete = 1;
$site->addedby = Auth::id();
$site->created_at = Carbon::now();
$site->visitor = $request->ip();
if ($site->save()) {
return redirect()->route('siteManagement.index')
->with('success', 'New site setting added successfully!');
}
return back()->with('error', 'Failed to save site setting. Please try again.');
} catch (\Exception $e) {
return back()->with('error', 'An error occurred while saving the site setting.');
}
}
/**
* Display the specified resource.
*/
public function show(SiteSeting $siteSeting)
{
// Method intentionally left empty
}
/**
* Show the form for editing the specified resource.
*/
public function edit(int $id): View|RedirectResponse
{
if (view()->exists('backend.admin.sitesettings.siteSettingEdit')) {
$setting = SiteSeting::where('id', $id)->first();
if (!$setting) {
return back()->with('error', 'Site setting not found.');
}
return view('backend.admin.sitesettings.siteSettingEdit', compact('setting'));
}
return back()->with('error', 'View not found');
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, int $id): RedirectResponse
{
// CSRF token validation
if ($request->_token !== Session::token()) {
return Redirect::back()->with('error', 'Invalid form submission!');
}
$site = SiteSeting::where('id', $id)->where('isdelete', 1)->first();
if (!$site) {
return back()->with('error', 'Site setting not found.');
}
// Prepare validation rules
$validationRules = [
'company_name' => 'required|string|max:255',
'company_address' => 'required|string',
'company_state' => 'required|string|max:100',
'isactive' => 'required|boolean',
'cardmin_amount' => 'nullable|numeric|min:0',
'carddiscount_rate' => 'nullable|numeric|min:0',
'carddiscount_type' => 'nullable|string|max:50',
'facebook_url' => 'nullable|url|max:255',
'facebook_authkey' => 'nullable|string|max:255',
'google_url' => 'nullable|url|max:255',
'google_authkey' => 'nullable|string|max:255',
];
// Add unique rule for GST number only if it's changed
if ($site->company_gstno !== $request->company_gstno) {
$validationRules['company_gstno'] = 'required|string|max:50|unique:site_setings,company_gstno';
} else {
$validationRules['company_gstno'] = 'required|string|max:50';
}
$validator = Validator::make($request->all(), $validationRules);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
try {
$site->company_name = Str::title($request->company_name ?? '');
$site->company_address = $request->company_address ?? '';
$site->company_gstno = $request->company_gstno ?? '';
$site->company_state = Str::title($request->company_state ?? '');
$site->cardmin_amount = (float) ($request->cardmin_amount ?? 0);
$site->carddiscount_rate = (float) ($request->carddiscount_rate ?? 0);
$site->carddiscount_type = $request->carddiscount_type ?? '';
$site->facebook_url = $request->facebook_url ?? '';
$site->facebook_authkey = $request->facebook_authkey ?? '';
$site->google_url = $request->google_url ?? '';
$site->google_authkey = $request->google_authkey ?? '';
$site->isactive = (bool) $request->isactive;
$site->addedby = Auth::id();
$site->updated_at = Carbon::now();
$site->visitor = $request->ip();
if ($site->save()) {
return redirect()->route('siteManagement.index')
->with('success', 'Site setting updated successfully!');
}
return back()->with('error', 'Failed to update site setting. Please try again.');
} catch (\Exception $e) {
return back()->with('error', 'An error occurred while updating the site setting.');
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(int $id): RedirectResponse
{
try {
$site = SiteSeting::findOrFail($id);
$site->isdelete = 0;
$site->deleted_at = Carbon::now();
$site->addedby = Auth::id();
if ($site->save()) {
return redirect()->route('siteManagement.index')
->with('success', 'Site setting deleted successfully!');
}
return back()->with('error', 'Failed to delete site setting.');
} catch (\Exception $e) {
return back()->with('error', 'Site setting not found or already deleted.');
}
}
/**
* Restore deleted site setting.
*/
public function restore(int $id): RedirectResponse
{
try {
$site = SiteSeting::withTrashed()->findOrFail($id);
$site->isdelete = 1;
$site->deleted_at = null;
$site->addedby = Auth::id();
if ($site->save()) {
return redirect()->route('siteManagement.index')
->with('success', 'Site setting restored successfully!');
}
return back()->with('error', 'Failed to restore site setting.');
} catch (\Exception $e) {
return back()->with('error', 'Site setting not found.');
}
}
/**
* Get active site settings.
*/
public function getActiveSettings()
{
return SiteSeting::where('isactive', 1)
->where('isdelete', 1)
->orderBy('id', 'desc')
->first();
}
}


PK 99