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.')); } }