| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Constants\HttpStatus;
- use App\Http\Controllers\Controller;
- use App\Models\Config;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Validation\ValidationException;
- use Exception;
- class ConfigController extends Controller
- {
- function update()
- {
- DB::beginTransaction();
- try {
- $fields = Config::pluck('field')->toArray();
- $fields = implode(',', $fields);
- $validate = ['field' => ['required', 'string', "in:{$fields}"]];
- request()->validate($validate);
- $field = request()->input('field');
- $config = Config::where('field', $field)->first();
- $validate = array_merge($validate, $config->getRule());
- $params = request()->validate($validate);
- $config->val = $params['val'];
- $config->save();
- DB::commit();
- } catch (ValidationException $e) {
- DB::rollBack();
- return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
- } catch (Exception $e) {
- DB::rollBack();
- return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage());
- }
- return $this->success();
- }
- function index()
- {
- try {
- request()->validate([
- 'page' => ['nullable', 'integer', 'min:1'],
- 'limit' => ['nullable', 'integer', 'min:1'],
- 'field' => ['nullable', 'string'],
- ]);
- $page = request()->input('page', 1);
- $limit = request()->input('limit', 15);
- $field = request()->input('field', '');
- $query = Config::query();
- $query = $query->where('group_id', Config::GROUP_BASIC);
- if (!empty($field)) $query = $query->where($field, $field);
- $data['total'] = $query->count();
- $data['data'] = $query->forPage($page, $limit)->get();
- } catch (ValidationException $e) {
- return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
- } catch (Exception $e) {
- return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage());
- }
- return $this->success($data);
- }
- }
|