You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.1 KiB
PHTML

1 year ago
<?php
namespace App\Http\Controllers;
1 year ago
use App\Models\CustomerLevel;
1 year ago
use App\Models\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
1 year ago
use Illuminate\Support\Facades\DB;
class SettingController extends Controller
{
public function index()
{
$setting = Setting::all();
return inertia('Setting/Index', [
'setting' => $setting,
'midtrans_notification_url' => route('api.midtrans.notification'),
1 year ago
]);
}
public function update(Request $request)
{
$request->validate([
'OPEN_WEBSITE_NAME' => 'required|string',
1 year ago
'AFFILATE_ENABLED' => 'required|in:0,1',
'AFFILATE_POIN_AMOUNT' => 'required|numeric',
1 year ago
'MIDTRANS_SERVER_KEY' => 'required|string',
'MIDTRANS_CLIENT_KEY' => 'required|string',
'MIDTRANS_MERCHANT_ID' => 'required|string',
'MIDTRANS_ENABLED' => 'required|in:0,1',
'midtrans_logo_file' => 'nullable|image',
]);
DB::beginTransaction();
foreach ($request->except(['midtrans_logo_file']) as $key => $value) {
Setting::where('key', $key)->update(['value' => $value]);
}
if ($request->hasFile('midtrans_logo_file')) {
$file = $request->file('midtrans_logo_file');
$file->store('uploads', 'public');
Setting::where('key', 'MIDTRANS_LOGO')->update(['value' => $file->hashName('uploads')]);
}
Cache::flush();
1 year ago
DB::commit();
session()->flash('message', ['type' => 'success', 'message' => 'Setting has beed saved']);
}
public function payment()
{
$setting = Setting::all();
return inertia('Setting/Payment', [
'setting' => $setting,
'midtrans_notification_url' => route('api.midtrans.notification'),
]);
}
public function updatePayment(Request $request)
{
$request->validate([
'MIDTRANS_SERVER_KEY' => 'required|string',
'MIDTRANS_CLIENT_KEY' => 'required|string',
'MIDTRANS_MERCHANT_ID' => 'required|string',
'MIDTRANS_ADMIN_FEE' => 'required|numeric',
'MIDTRANS_ENABLED' => 'required|in:0,1',
'midtrans_logo_file' => 'nullable|image',
]);
DB::beginTransaction();
foreach ($request->except(['midtrans_logo_file']) as $key => $value) {
Setting::where('key', $key)->update(['value' => $value]);
}
if ($request->hasFile('midtrans_logo_file')) {
$file = $request->file('midtrans_logo_file');
$file->store('uploads', 'public');
Setting::where('key', 'MIDTRANS_LOGO')->update(['value' => $file->hashName('uploads')]);
}
Cache::flush();
DB::commit();
session()->flash('message', ['type' => 'success', 'message' => 'Setting has beed saved']);
}
public function affilate()
{
$setting = Setting::all();
1 year ago
return inertia('Setting/Affilate', [
'setting' => $setting,
1 year ago
'levels' => CustomerLevel::all()
]);
}
public function updateAffilate(Request $request)
{
$request->validate([
1 year ago
'AFFILATE_ENABLED' => 'required|in:0,1',
'AFFILATE_POIN_AMOUNT' => 'required|numeric',
'AFFILATE_DOWNLINE_POIN_AMOUNT' => 'required|numeric',
'AFFILATE_SHARE_REFFERAL_CODE' => 'required|string',
'AFFILATE_ALLOWED_LEVELS' => 'required|array',
'AFFILATE_ALLOWED_LEVELS.*.key' => 'required|exists:customer_levels,key',
]);
DB::beginTransaction();
1 year ago
foreach ($request->except(['AFFILATE_ALLOWED_LEVELS']) as $key => $value) {
Setting::where('key', $key)->update(['value' => $value]);
}
1 year ago
$allowedLevel = collect($request->AFFILATE_ALLOWED_LEVELS)->toArray();
Setting::where('key', 'AFFILATE_ALLOWED_LEVELS')->update([
'value' => json_encode($allowedLevel)
]);
Cache::flush();
DB::commit();
session()->flash('message', ['type' => 'success', 'message' => 'Setting has beed saved']);
}
1 year ago
}