ShippingInsuranceController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Longyi\ShippingInsurance\Http\Controllers\Admin;
  3. use Illuminate\Http\RedirectResponse;
  4. use Illuminate\View\View;
  5. use Webkul\Admin\Http\Controllers\Controller;
  6. use Webkul\Core\Repositories\CoreConfigRepository;
  7. class ShippingInsuranceController extends Controller
  8. {
  9. /**
  10. * Create a new controller instance.
  11. */
  12. public function __construct(
  13. protected CoreConfigRepository $coreConfigRepository,
  14. ) {
  15. }
  16. /**
  17. * Display the shipping insurance configuration.
  18. */
  19. public function index(): View
  20. {
  21. $config = [
  22. 'enable' => (bool) core()->getConfigData('sales.checkout.shipping_insurance.enable'),
  23. 'name' => core()->getConfigData('sales.checkout.shipping_insurance.name') ?: '运费险',
  24. 'type' => core()->getConfigData('sales.checkout.shipping_insurance.type') ?: 'fixed',
  25. 'value' => core()->getConfigData('sales.checkout.shipping_insurance.value') ?: 0,
  26. ];
  27. return view('shippinginsurance::admin.index', compact('config'));
  28. }
  29. /**
  30. * Store the shipping insurance configuration.
  31. */
  32. public function store(): RedirectResponse
  33. {
  34. $validated = request()->validate([
  35. 'enable' => 'nullable|boolean',
  36. 'name' => 'nullable|string|max:50',
  37. 'type' => 'required|in:fixed,percentage',
  38. 'value' => 'required|numeric|min:0',
  39. ]);
  40. $values = [
  41. 'sales.checkout.shipping_insurance.enable' => ($validated['enable'] ?? false) ? 1 : 0,
  42. 'sales.checkout.shipping_insurance.name' => $validated['name'] ?? '运费险',
  43. 'sales.checkout.shipping_insurance.type' => $validated['type'],
  44. 'sales.checkout.shipping_insurance.value' => $validated['value'],
  45. ];
  46. foreach ($values as $code => $value) {
  47. $this->coreConfigRepository->updateOrCreate(
  48. ['code' => $code],
  49. ['value' => $value]
  50. );
  51. }
  52. session()->flash('success', trans('shippinginsurance::app.admin.save-success'));
  53. return redirect()->route('admin.shipping_insurance.index');
  54. }
  55. }