From e93896feb0c503337fd20215002b164457aaa163 Mon Sep 17 00:00:00 2001 From: Hasban-Fardani Date: Thu, 11 Jul 2024 20:17:09 +0700 Subject: [PATCH] feat: add CRD pack categories --- .../Controllers/PackCategoryController.php | 52 +++++++++++++++++++ app/Http/Controllers/StickerController.php | 44 +++++----------- routes/api.php | 6 +++ 3 files changed, 70 insertions(+), 32 deletions(-) create mode 100644 app/Http/Controllers/PackCategoryController.php diff --git a/app/Http/Controllers/PackCategoryController.php b/app/Http/Controllers/PackCategoryController.php new file mode 100644 index 0000000..5d47c6b --- /dev/null +++ b/app/Http/Controllers/PackCategoryController.php @@ -0,0 +1,52 @@ +categories; + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request, Pack $pack) + { + // + $validator = Validator::make($request->all(), [ + 'category_id' => 'required|exists:categories,id', + ]); + + if ($validator->fails()) { + return response()->json([ + 'message' => 'The given data was invalid.', + 'errors' => $validator->errors(), + ], 422); + } + + $pack->categories()->create($request->all()); + + return response()->json(['message' => 'Pack Category added successfully.'], 201); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Pack $pack, PackCategory $packCategory) + { + // + $packCategory->delete(); + return response()->json(['message' => 'PackCategory deleted successfully.']); + } +} diff --git a/app/Http/Controllers/StickerController.php b/app/Http/Controllers/StickerController.php index fb232e9..b49d61c 100644 --- a/app/Http/Controllers/StickerController.php +++ b/app/Http/Controllers/StickerController.php @@ -2,64 +2,44 @@ namespace App\Http\Controllers; +use App\Models\Pack; use App\Models\Sticker; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\Rules\File; class StickerController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Pack $pack) { - // - } - - /** - * Show the form for creating a new resource. - */ - public function create() - { - // + return $pack->stickers(); } /** * Store a newly created resource in storage. */ - public function store(Request $request) + public function store(Request $request, Pack $pack) { - // + } /** * Display the specified resource. */ - public function show(Sticker $sticker) - { - // - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(Sticker $sticker) - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Sticker $sticker) + public function show(Pack $pack, Sticker $sticker) { - // + return $sticker; } /** * Remove the specified resource from storage. */ - public function destroy(Sticker $sticker) + public function destroy(Pack $pack, Sticker $sticker) { - // + $sticker->delete(); + return response()->json(['message' => 'Sticker deleted successfully.']); } } diff --git a/routes/api.php b/routes/api.php index 1dd2ac5..28359da 100644 --- a/routes/api.php +++ b/routes/api.php @@ -4,7 +4,9 @@ use App\Http\Controllers\auth\LogoutController; use App\Http\Controllers\auth\RegisterController; use App\Http\Controllers\CategoryController; +use App\Http\Controllers\PackCategoryController; use App\Http\Controllers\PackController; +use App\Http\Controllers\StickerController; use Illuminate\Support\Facades\Route; @@ -20,4 +22,8 @@ Route::apiResource('category', CategoryController::class); Route::apiResource('pack', PackController::class); + Route::apiResource('pack.sticker', StickerController::class) + ->except('update'); + Route::apiResource('pack.category', PackCategoryController::class) + ->except(['update', 'show']); }); \ No newline at end of file