anonaddy/app/Http/Controllers/Api/RuleController.php
2020-06-16 17:17:29 +01:00

73 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreRuleRequest;
use App\Http\Resources\RuleResource;
class RuleController extends Controller
{
public function index()
{
return RuleResource::collection(user()->rules()->orderBy('order')->get());
}
public function show($id)
{
$rule = user()->rules()->findOrFail($id);
return new RuleResource($rule);
}
public function store(StoreRuleRequest $request)
{
$conditions = collect($request->conditions)->map(function ($condition) {
return collect($condition)->only(['type', 'match', 'values']);
});
$actions = collect($request->actions)->map(function ($action) {
return collect($action)->only(['type', 'value']);
});
$rule = user()->rules()->create([
'name' => $request->name,
'conditions' => $conditions,
'actions' => $actions,
'operator' => $request->operator
]);
return new RuleResource($rule->refresh());
}
public function update(StoreRuleRequest $request, $id)
{
$rule = user()->rules()->findOrFail($id);
$conditions = collect($request->conditions)->map(function ($condition) {
return collect($condition)->only(['type', 'match', 'values']);
});
$actions = collect($request->actions)->map(function ($action) {
return collect($action)->only(['type', 'value']);
});
$rule->update([
'name' => $request->name,
'conditions' => $conditions,
'actions' => $actions,
'operator' => $request->operator
]);
return new RuleResource($rule->refresh());
}
public function destroy($id)
{
$rule = user()->rules()->findOrFail($id);
$rule->delete();
return response('', 204);
}
}