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(); return view('business::manage-settings.index', compact('invoice_setting', 'product_setting', 'currency_setting')); } public function updateInvoice(Request $request) { $request->validate([ 'invoice_size' => 'required|string|max:100|in:a4,3_inch_80mm', ]); $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_price' => 'nullable|boolean', 'show_product_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.', ]); } }