Files
kulakpos_web/Modules/Business/App/Http/Controllers/AcnooSettingsManagerController.php
eko54r 05fd3230b8
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 5m14s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
Build, Push and Deploy / deploy-staging (push) Successful in 41s
Build, Push and Deploy / deploy-production (push) Has been skipped
update marketing
2026-05-14 11:55:22 +07:00

219 lines
7.9 KiB
PHP

<?php
namespace Modules\Business\App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Option;
use App\Models\ProductSetting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Validation\ValidationException;
class AcnooSettingsManagerController extends Controller
{
public function index()
{
$businessId = auth()->user()->business_id;
$invoiceSettingKey = 'invoice_setting_'.$businessId;
$invoice_setting = Option::where('key', $invoiceSettingKey)->first();
$product_setting = ProductSetting::where('business_id', auth()->user()->business_id)->first();
$currencySettingKey = 'currency_setting_'.$businessId;
$currency_setting = Option::where('key', $currencySettingKey)->first();
$invoiceImgaeSettingKey = 'invoice_setting_images';
$invoice_setting_image = Option::where('key', $invoiceImgaeSettingKey)->first();
$themesettingkey = 'theme_setting_'.$businessId;
$theme_settings = Option::where('key', $themesettingkey)->first()?->value ?? [];
return view('business::manage-settings.index', compact('invoice_setting', 'theme_settings', 'product_setting', 'currency_setting', 'invoice_setting_image'));
}
public function updateInvoice(Request $request)
{
$request->validate([
'invoice_size' => 'required|string|max:100|in:a4,3_inch_80mm,standard_a4',
]);
$key = 'invoice_setting_'.auth()->user()->business_id;
Option::updateOrCreate(
['key' => $key],
['value' => $request->invoice_size]
);
Cache::forget($key);
return response()->json(__('Invoice setting updated successfully.'));
}
public function updateProductSetting(Request $request)
{
$request->validate([
'show_product_code' => 'nullable|boolean',
'show_hsn_code' => 'nullable|boolean',
'show_product_stock' => 'nullable|boolean',
'show_product_sale_price' => 'nullable|boolean',
'show_product_dealer_price' => 'nullable|boolean',
'show_product_wholesale_price' => 'nullable|boolean',
'show_product_unit' => 'nullable|boolean',
'show_product_brand' => 'nullable|boolean',
'show_product_category' => 'nullable|boolean',
'show_product_manufacturer' => 'nullable|boolean',
'show_product_image' => 'nullable|boolean',
'show_expire_date' => 'nullable|boolean',
'show_alert_qty' => 'nullable|boolean',
'show_vat_id' => 'nullable|boolean',
'show_vat_type' => 'nullable|boolean',
'show_exclusive_price' => 'nullable|boolean',
'show_inclusive_price' => 'nullable|boolean',
'show_profit_percent' => 'nullable|boolean',
'show_capacity' => 'nullable|boolean',
'show_weight' => 'nullable|boolean',
'show_color' => 'nullable|boolean',
'show_size' => 'nullable|boolean',
'show_type' => 'nullable|boolean',
'show_batch_no' => 'nullable|boolean',
'show_mfg_date' => 'nullable|boolean',
'show_model_no' => 'nullable|boolean',
'show_product_batch_no' => 'nullable|boolean',
'show_product_expire_date' => 'nullable|boolean',
'default_batch_no' => 'nullable|string|max:255',
'default_expired_date' => 'nullable|date',
'default_mfg_date' => 'nullable|date',
'default_sale_price' => 'nullable|numeric|min:0',
'default_wholesale_price' => 'nullable|numeric|min:0',
'default_dealer_price' => 'nullable|numeric|min:0',
'expire_date_type' => 'nullable|in:dmy,my',
'mfg_date_type' => 'nullable|in:dmy,my',
'show_product_type_single' => 'nullable|boolean',
'show_product_type_variant' => 'nullable|boolean',
'show_product_type_combo' => 'nullable|boolean',
'show_warehouse' => 'nullable|boolean',
'show_action' => 'nullable|boolean',
'show_rack' => 'nullable|boolean',
'show_shelf' => 'nullable|boolean',
'show_guarantee' => 'nullable|boolean',
'show_warranty' => 'nullable|boolean',
'show_serial' => 'nullable|boolean',
]);
if (
! $request->boolean('show_product_type_single') &&
! $request->boolean('show_product_type_variant') &&
! $request->boolean('show_product_type_combo')
) {
throw ValidationException::withMessages([
'product_type' => ['At least one product type must be selected: Single, Variant or Combo.'],
]);
}
$modules = $request->except([
'_token',
'_method',
'default_expired_date_dmy',
'default_expired_date_my',
'default_mfg_date_dmy',
'default_mfg_date_my',
]);
// Set default_expired_date based on date type
$modules['default_expired_date'] = $request->expire_date_type === 'dmy'
? $request->default_expired_date_dmy
: ($request->expire_date_type === 'my'
? $request->default_expired_date_my
: null);
// Set default_mfg_date based on date type
$modules['default_mfg_date'] = $request->mfg_date_type === 'dmy'
? $request->default_mfg_date_dmy
: ($request->mfg_date_type === 'my'
? $request->default_mfg_date_my
: null);
$businessId = auth()->user()->business_id;
ProductSetting::updateOrCreate(
['business_id' => $businessId],
['modules' => $modules]
);
Cache::forget('product_setting_'.$businessId);
return response()->json(__('Product setting updated successfully.'));
}
public function updateCurrency(Request $request)
{
$request->validate([
'currency' => 'required|string|max:100|in:us,european',
]);
$key = 'currency_setting_'.auth()->user()->business_id;
Option::updateOrCreate(
['key' => $key],
['value' => $request->currency]
);
Cache::forget($key);
return response()->json(__('Currency setting updated successfully.'));
}
public function updateSerial(Request $request)
{
$request->validate([
'show_serial' => 'nullable|boolean',
]);
$businessId = auth()->user()->business_id;
$setting = ProductSetting::firstOrCreate(
['business_id' => $businessId],
['modules' => []]
);
$modules = $setting->modules ?? [];
$modules['show_serial'] = $request->boolean('show_serial') ? '1' : '0';
$setting->update([
'modules' => $modules,
]);
Cache::forget('product_setting_'.$businessId);
return response()->json([
'message' => 'Serial setting updated successfully.',
]);
}
public function updateTheme(Request $request)
{
$request->validate([
'primary_color' => 'nullable|string|max:100',
'secondary_color' => 'nullable|string|max:100',
'sidebar_color' => 'nullable|string|max:100',
'accent_color' => 'nullable|string|max:100',
]);
$businessId = auth()->user()->business_id;
$setting = Option::updateOrCreate(
['key' => 'theme_setting_'.$businessId],
['value' => [
'primary_color' => $request->primary_color,
'secondary_color' => $request->secondary_color,
'sidebar_color' => $request->sidebar_color,
'accent_color' => $request->accent_color,
]]
);
Cache::forget('theme_setting_'.$businessId);
return response()->json(__('Theme updated successfully.'));
}
}