RuleController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. 'forwards' => $request->forwards ?? false,
  31. 'replies' => $request->replies ?? false,
  32. 'sends' => $request->sends ?? false
  33. ]);
  34. return new RuleResource($rule->refresh());
  35. }
  36. public function update(StoreRuleRequest $request, $id)
  37. {
  38. $rule = user()->rules()->findOrFail($id);
  39. $conditions = collect($request->conditions)->map(function ($condition) {
  40. return collect($condition)->only(['type', 'match', 'values']);
  41. });
  42. $actions = collect($request->actions)->map(function ($action) {
  43. return collect($action)->only(['type', 'value']);
  44. });
  45. $rule->update([
  46. 'name' => $request->name,
  47. 'conditions' => $conditions,
  48. 'actions' => $actions,
  49. 'operator' => $request->operator,
  50. 'forwards' => $request->forwards ?? false,
  51. 'replies' => $request->replies ?? false,
  52. 'sends' => $request->sends ?? false
  53. ]);
  54. return new RuleResource($rule->refresh());
  55. }
  56. public function destroy($id)
  57. {
  58. $rule = user()->rules()->findOrFail($id);
  59. $rule->delete();
  60. return response('', 204);
  61. }
  62. }