RuleController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\StoreRuleRequest;
  5. use App\Http\Resources\RuleResource;
  6. class RuleController extends Controller
  7. {
  8. public function index()
  9. {
  10. return RuleResource::collection(user()->rules()->orderBy('order')->get());
  11. }
  12. public function show($id)
  13. {
  14. $rule = user()->rules()->findOrFail($id);
  15. return new RuleResource($rule);
  16. }
  17. public function store(StoreRuleRequest $request)
  18. {
  19. $conditions = collect($request->conditions)->map(function ($condition) {
  20. return collect($condition)->only(['type', 'match', 'values']);
  21. });
  22. $actions = collect($request->actions)->map(function ($action) {
  23. return collect($action)->only(['type', 'value']);
  24. });
  25. $rule = user()->rules()->create([
  26. 'name' => $request->name,
  27. 'conditions' => $conditions,
  28. 'actions' => $actions,
  29. 'operator' => $request->operator
  30. ]);
  31. return new RuleResource($rule->refresh());
  32. }
  33. public function update(StoreRuleRequest $request, $id)
  34. {
  35. $rule = user()->rules()->findOrFail($id);
  36. $conditions = collect($request->conditions)->map(function ($condition) {
  37. return collect($condition)->only(['type', 'match', 'values']);
  38. });
  39. $actions = collect($request->actions)->map(function ($action) {
  40. return collect($action)->only(['type', 'value']);
  41. });
  42. $rule->update([
  43. 'name' => $request->name,
  44. 'conditions' => $conditions,
  45. 'actions' => $actions,
  46. 'operator' => $request->operator
  47. ]);
  48. return new RuleResource($rule->refresh());
  49. }
  50. public function destroy($id)
  51. {
  52. $rule = user()->rules()->findOrFail($id);
  53. $rule->delete();
  54. return response('', 204);
  55. }
  56. }