AdminSettingsController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\CommonCatalogItem;
  5. use App\Models\Setting;
  6. use App\Models\User;
  7. use Illuminate\Http\RedirectResponse;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Validation\Rule;
  10. use Illuminate\View\View;
  11. class AdminSettingsController extends Controller
  12. {
  13. public function index(): View
  14. {
  15. $users = User::query()
  16. ->orderBy('name')
  17. ->pluck('name', 'id')
  18. ->toArray();
  19. return view('admin.settings.index', [
  20. 'active' => 'admin_settings',
  21. 'title' => 'Настройки',
  22. 'users' => $users,
  23. 'defaultMafOrderUserId' => Setting::getInt(
  24. Setting::KEY_DEFAULT_MAF_ORDER_USER_ID,
  25. (int) config('app.default_maf_order_user_id')
  26. ),
  27. 'reclamationActRepresentativeUserId' => Setting::getInt(
  28. Setting::KEY_RECLAMATION_ACT_REPRESENTATIVE_USER_ID
  29. ),
  30. 'ttnNextNumber' => Setting::getInt(
  31. Setting::KEY_TTN_NEXT_NUMBER,
  32. \App\Models\Ttn::getNextTtnNumber()
  33. ),
  34. 'technicalDescriptionPriceFields' => CommonCatalogItem::PRICE_FIELDS,
  35. 'technicalDescriptionPriceField' => Setting::technicalDescriptionPriceField(),
  36. ]);
  37. }
  38. public function store(Request $request): RedirectResponse
  39. {
  40. $data = $request->validate([
  41. 'default_maf_order_user_id' => ['nullable', 'integer', 'exists:users,id'],
  42. 'reclamation_act_representative_user_id' => ['nullable', 'integer', 'exists:users,id'],
  43. 'ttn_next_number' => ['required', 'integer', 'min:1'],
  44. 'technical_description_price_field' => [
  45. 'required',
  46. 'string',
  47. Rule::in(array_keys(CommonCatalogItem::PRICE_FIELDS)),
  48. ],
  49. ]);
  50. Setting::set(
  51. Setting::KEY_DEFAULT_MAF_ORDER_USER_ID,
  52. $data['default_maf_order_user_id'] ?? null
  53. );
  54. Setting::set(
  55. Setting::KEY_RECLAMATION_ACT_REPRESENTATIVE_USER_ID,
  56. $data['reclamation_act_representative_user_id'] ?? null
  57. );
  58. Setting::set(
  59. Setting::KEY_TTN_NEXT_NUMBER,
  60. $data['ttn_next_number']
  61. );
  62. Setting::set(
  63. Setting::KEY_TECHNICAL_DESCRIPTION_PRICE_FIELD,
  64. $data['technical_description_price_field'],
  65. );
  66. return back()->with('success', 'Настройки сохранены.');
  67. }
  68. }