with('templates')->get(); } /** * @Route(path="/admin/templates/categories", method="POST") */ public function create(Request $request) { $violations = $request->validate(CreateValidator::class); if ($violations->count() > 0) { throw new ControllerException(Validator::toArray($violations), 400); } $category = TemplateCategory::query()->create([ 'name' => $request->name, ]); return $category; } /** * @Route(path="/admin/templates/categories", method="PUT") */ public function update(Request $request) { $violations = $request->validate(UpdateValidator::class); if ($violations->count() > 0) { throw new ControllerException(Validator::toArray($violations), 400); } $category = TemplateCategory::query()->find($request->id); if (!$category) { throw new ControllerException([ [ 'message' => 'Category not found' ] ], 400); } $category->update([ 'name' => $request->name, ]); return $category; } /** * @Route(path="/admin/templates/categories", method="DELETE") */ public function delete(Request $request) { $violations = $request->validate(DeleteValidator::class); if ($violations->count() > 0) { throw new ControllerException(Validator::toArray($violations), 400); } $category = TemplateCategory::query()->find($request->id); if (!$category) { throw new ControllerException([ [ 'message' => 'Category not found' ] ], 400); } $category->templates()->delete(); $category->delete(); return [ 'message' => 'Category deleted' ]; } }