125 lines
5.0 KiB
PHP
125 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Setting;
|
|
use App\Traits\ImageHelper;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class SettingsController extends Controller
|
|
{
|
|
use ImageHelper;
|
|
|
|
public function index()
|
|
{
|
|
|
|
$pageConfigs = [
|
|
'pageHeader' => true,
|
|
'showMenu' => true
|
|
];
|
|
|
|
$breadcrumbs = [['link' => '/admin/settings', 'name' => 'Settings'], ['name' => 'Edit']];
|
|
$settings = Setting::first();
|
|
return view('content.settings', [
|
|
'pageConfigs' => $pageConfigs,
|
|
'breadcrumbs' => $breadcrumbs,
|
|
'settings' => $settings
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request, Setting $setting)
|
|
{
|
|
|
|
$request->validate([
|
|
"version_code" => ['required'],
|
|
"update_type" => ['required'],
|
|
"update_message" => ['required'],
|
|
"update_url" => ['nullable', 'url'],
|
|
"ad_type" => ['required'],
|
|
"show_ads" => ['required'],
|
|
"show_ad_after" => ['required'],
|
|
"developed_by_url" => ['nullable', 'url'],
|
|
"onesignal_app_id" => ['nullable'],
|
|
"one_signal_rest_api_key" => ['nullable'],
|
|
"admob_android_banner" => ['nullable'],
|
|
"admob_android_native" => ['nullable'],
|
|
"admob_android_interstitial" => ['nullable'],
|
|
"admob_ios_banner" => ['nullable'],
|
|
"admob_ios_native" => ['nullable'],
|
|
"admob_ios_interstitial" => ['nullable'],
|
|
"facebook_android_banner" => ['nullable'],
|
|
"facebook_android_native" => ['nullable'],
|
|
"facebook_android_interstitial" => ['nullable'],
|
|
"facebook_ios_banner" => ['nullable'],
|
|
"facebook_ios_native" => ['nullable'],
|
|
"facebook_ios_interstitial" => ['nullable'],
|
|
"chat_gpt_api_secret" => ['nullable'],
|
|
'logo' => ['nullable', 'image'],
|
|
'favicon' => ['nullable'],
|
|
'privacy_url' => ['nullable'],
|
|
]);
|
|
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
$setting->version_code = $request->version_code;
|
|
$setting->update_type = $request->update_type;
|
|
$setting->update_message = $request->update_message;
|
|
$setting->update_url = $request->update_url;
|
|
$setting->ad_type = $request->ad_type;
|
|
$setting->show_ads = $request->show_ads;
|
|
$setting->show_ad_after = $request->show_ad_after;
|
|
$setting->developed_by_url = $request->developed_by_url;
|
|
$setting->onesignal_app_id = $request->onesignal_app_id;
|
|
$setting->one_signal_rest_api_key = $request->one_signal_rest_api_key;
|
|
$setting->admob_android_banner = $request->admob_android_banner;
|
|
$setting->admob_android_native = $request->admob_android_native;
|
|
$setting->admob_android_interstitial = $request->admob_android_interstitial;
|
|
$setting->admob_ios_banner = $request->admob_ios_banner;
|
|
$setting->admob_ios_native = $request->admob_ios_native;
|
|
$setting->admob_ios_interstitial = $request->admob_ios_interstitial;
|
|
$setting->facebook_android_banner = $request->facebook_android_banner;
|
|
$setting->facebook_android_native = $request->facebook_android_native;
|
|
$setting->facebook_android_interstitial = $request->facebook_android_interstitial;
|
|
$setting->facebook_ios_banner = $request->facebook_ios_banner;
|
|
$setting->facebook_ios_native = $request->facebook_ios_native;
|
|
$setting->facebook_ios_interstitial = $request->facebook_ios_interstitial;
|
|
$setting->chat_gpt_api_secret = $request->chat_gpt_api_secret;
|
|
$setting->privacy_url = $request->privacy_url;
|
|
|
|
if ($request->hasFile('logo')) {
|
|
$prefix = 'logo';
|
|
if (!empty($setting->logo)) {
|
|
$bannerImagePath = $this->updateFile($request->logo, $setting->logo, $prefix, false);
|
|
} else {
|
|
$bannerImagePath = $this->uploadFile($request->logo, $prefix, false);
|
|
}
|
|
$setting->logo = $bannerImagePath;
|
|
}
|
|
|
|
if ($request->hasFile('favicon')) {
|
|
$prefix = 'favicon';
|
|
if (!empty($setting->favicon)) {
|
|
$bannerImagePath = $this->updateFile($request->favicon, $setting->favicon, $prefix, false);
|
|
} else {
|
|
$bannerImagePath = $this->uploadFile($request->favicon, $prefix, false);
|
|
}
|
|
$setting->favicon = $bannerImagePath;
|
|
}
|
|
|
|
$setting->update();
|
|
DB::commit();
|
|
return redirect()->back()->with([
|
|
'success' => "Settings updated successfully"
|
|
]);
|
|
} catch (\Throwable $exception) {
|
|
DB::rollBack();
|
|
return redirect()->back()->with([
|
|
'error' => $exception->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
}
|