43 lines
1.8 KiB
PHP
43 lines
1.8 KiB
PHP
<?php
|
|
namespace App\Http\Controllers\Admin;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Reward;
|
|
use Illuminate\Http\Request;
|
|
class RewardController extends Controller {
|
|
public function index() {
|
|
$rewards = Reward::orderBy('points_cost')->get();
|
|
return view('admin.rewards.index', compact('rewards'));
|
|
}
|
|
public function create() { return view('admin.rewards.create'); }
|
|
public function store(Request $r) {
|
|
$r->validate([
|
|
'name' => 'required|string|max:80',
|
|
'description' => 'nullable|string|max:200',
|
|
'icon' => 'required|string|max:10',
|
|
'points_cost' => 'required|integer|min:1',
|
|
'minutes' => 'nullable|integer|min:1',
|
|
]);
|
|
Reward::create(array_merge($r->only('name','description','icon','points_cost','minutes'), ['active'=>true]));
|
|
return redirect()->route('admin.rewards.index')->with('success','Belohnung erstellt.');
|
|
}
|
|
public function edit(Reward $reward) { return view('admin.rewards.edit', compact('reward')); }
|
|
public function update(Request $r, Reward $reward) {
|
|
$r->validate([
|
|
'name' => 'required|string|max:80',
|
|
'description' => 'nullable|string|max:200',
|
|
'icon' => 'required|string|max:10',
|
|
'points_cost' => 'required|integer|min:1',
|
|
'minutes' => 'nullable|integer|min:1',
|
|
]);
|
|
$reward->update(array_merge(
|
|
$r->only('name','description','icon','points_cost','minutes'),
|
|
['active' => $r->boolean('active', true)]
|
|
));
|
|
return redirect()->route('admin.rewards.index')->with('success','Gespeichert.');
|
|
}
|
|
public function destroy(Reward $reward) {
|
|
$reward->delete();
|
|
return redirect()->route('admin.rewards.index')->with('success','Belohnung gelöscht.');
|
|
}
|
|
}
|