Setting Edit + Update

This commit is contained in:
Vincent BRIDIER 2022-05-10 13:42:11 +02:00
parent afb4340964
commit dfe0f0f1a2
No known key found for this signature in database
GPG key ID: 8571BFA20420D512
8 changed files with 109 additions and 47 deletions

View file

@ -2,8 +2,9 @@
namespace App\Http\Controllers;
use App\Enums\SettingTypes;
use App\Http\Requests\Setting\UpdateRequest;
use App\Models\Setting;
use Illuminate\Http\Request;
class SettingController extends Controller
{
@ -26,7 +27,7 @@ class SettingController extends Controller
*/
public function edit(Setting $setting)
{
//
return \view('setting.edit', \compact('setting'));
}
/**
@ -36,8 +37,21 @@ class SettingController extends Controller
* @param \App\Models\Setting $setting
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Setting $setting)
public function update(UpdateRequest $request, Setting $setting)
{
//
if ($setting->type->equals(SettingTypes::picture())) {
$file = $request->file('value');
$path = $file->storeAs(
'public/setting_img',
$setting->key . ".png"
);
$setting->value = \str_replace("public", "storage", $path);
} else {
$setting->value = $request->value;
}
$setting->saveOrFail();
return redirect()->route('setting.edit', ['setting' => $setting])->with('status', __('La paramètre a été modifié.'));
}
}

View file

@ -1,30 +0,0 @@
<?php
namespace App\Http\Requests\Setting;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -2,6 +2,7 @@
namespace App\Http\Requests\Setting;
use App\Enums\SettingTypes;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
@ -13,7 +14,8 @@ class UpdateRequest extends FormRequest
*/
public function authorize()
{
return false;
// TODO : Add role admin check
return auth()->check();
}
/**
@ -23,8 +25,22 @@ class UpdateRequest extends FormRequest
*/
public function rules()
{
$setting = $this->route('setting');
switch ($setting->type->value) {
case SettingTypes::string()->value:
$validate = "required";
break;
case SettingTypes::numeric()->value:
$validate = "numeric|min:0|required";
break;
case SettingTypes::picture()->value:
$validate = "file|mimes:png|required";
break;
}
return [
//
'value' => $validate
];
}
}

View file

@ -19,10 +19,10 @@ class SettingTableSeeder extends Seeder
['key' => 'version', 'value' => '1', 'type' => SettingTypes::numeric()->value],
['key' => 'ShowIsActive', 'value' => '0', 'type' => SettingTypes::numeric()->value],
['key' => 'MainColor', 'value' => '#DE0017', 'type' => SettingTypes::string()->value],
['key' => 'SquaredLogo', 'value' => 'assets/img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'RectangleLogo', 'value' => 'assets/img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'BackgroundImage', 'value' => 'assets/img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'HomeButtonImage', 'value' => 'assets/img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'SquaredLogo', 'value' => 'storage/setting_img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'RectangleLogo', 'value' => 'storage/setting_img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'BackgroundImage', 'value' => 'storage/setting_img/default.png', 'type' => SettingTypes::picture()->value],
['key' => 'HomeButtonImage', 'value' => 'storage/setting_img/default.png', 'type' => SettingTypes::picture()->value],
]);
}
}

View file

@ -1,6 +1,7 @@
# BO Application Commerciaux
## Installation
```
php artisan storage:link
cp .env.example .env
php artisan key:generate
```
@ -13,7 +14,6 @@ php artisan migrate --seed
php artisan user:create
```
# TODO
- Setting edit + update
- Ajouter un Enum Role sur users + Gate
## API V2
- Call pour récupérer la config

View file

@ -0,0 +1,68 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
{{ __("Édition d'un paramètre") }}
<a href="{{ route('setting.index') }}" class="btn btn-sm btn-primary float-right">{{ __('Retour') }}</a>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
@if ($setting->type->equals(SettingTypesEnum::picture()))
<p><b>
SquaredLogo (PNG) : 187 x 187px <br>
RectangleLogo (PNG): 187 x 100px <br>
BackgroundImage (PNG) : 1920 x 1200px <br>
HomeButtonImage (PNG) : 100 x 100px <br>
</b></p>
@endif
<form action="{{ route('setting.update', ['setting' => $setting]) }}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
<div class="form-group">
<div class="row">
<div class="col-md-6">
<label>{{ $setting->key }} : </label>
@switch($setting->type->value)
@case(SettingTypesEnum::string()->value)
<input type="text" name="value" value={{ $setting->value }} class="form-control" required>
@break
@case(SettingTypesEnum::numeric()->value)
<input type="number" name="value" value={{ $setting->value }} class="form-control" min="0" required>
@break
@case(SettingTypesEnum::picture()->value)
<br><img src="{{ asset($setting->value) }}" width="200"><br><br>
<input type="file" name="value" class="form-control" required>
@break
@endswitch
</div>
</div>
<br>
<div class="row">
<div class="col-md-6">
<input type="submit" value="{{ __('Enregistrer') }}" class="btn btn-primary">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -3,12 +3,6 @@
<div class="container">
<div class="row">
<div class="col-md-12">
<p>
SquaredLogo : 187 x 187px <br>
RectangleLogo: 187 x 100px <br>
BackgroundImage : 1920 x 1200px <br>
HomeButtonImage : 100 x 100px <br>
</p>
<table class="table">
<thead class="thead-dark">
<tr>

View file

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB