diff --git a/app/Http/Controllers/SliderController.php b/app/Http/Controllers/SliderController.php index 5984b78..3c6d176 100644 --- a/app/Http/Controllers/SliderController.php +++ b/app/Http/Controllers/SliderController.php @@ -13,4 +13,56 @@ public function index() 'data' => Slider::all() ]); } + + public function store(Request $request) + { + $data = $request->validate([ + 'title' => 'required|string|max:255', + 'description' => 'nullable|string', + 'url' => 'nullable|string|max:500', + 'action' => 'nullable|array', + ]); + + $slider = Slider::create($data); + + return response()->json([ + 'message' => 'Slider created successfully', + 'data' => $slider + ]); + } + + public function show($id) + { + $slider = Slider::findOrFail($id); + return response()->json($slider); + } + + public function update(Request $request, $id) + { + $slider = Slider::findOrFail($id); + + $data = $request->validate([ + 'title' => 'sometimes|string|max:255', + 'description' => 'sometimes|string', + 'url' => 'sometimes|string|max:500', + 'action' => 'nullable|array', + ]); + + $slider->update($data); + + return response()->json([ + 'message' => 'Slider updated successfully', + 'data' => $slider + ]); + } + + public function destroy($id) + { + $slider = Slider::findOrFail($id); + $slider->delete(); + + return response()->json([ + 'message' => 'Slider deleted successfully' + ]); + } } diff --git a/app/Models/Slider.php b/app/Models/Slider.php index 6fa291a..e53ef44 100644 --- a/app/Models/Slider.php +++ b/app/Models/Slider.php @@ -6,5 +6,9 @@ class Slider extends Model { - protected $fillable = ['title', 'description', 'url']; + protected $fillable = ['title', 'description', 'url','action']; + + protected $casts = [ + 'action' => 'array', // auto convert JSON to array + ]; } diff --git a/database/migrations/2025_09_26_204248_add_action_to_sliders_table.php b/database/migrations/2025_09_26_204248_add_action_to_sliders_table.php new file mode 100644 index 0000000..b65c089 --- /dev/null +++ b/database/migrations/2025_09_26_204248_add_action_to_sliders_table.php @@ -0,0 +1,28 @@ +json('action')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('sliders', function (Blueprint $table) { + $table->dropColumn('action'); + }); + } +}; diff --git a/routes/api.php b/routes/api.php index 8dd5ced..5f071d7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -107,7 +107,7 @@ /// slider feature - Route::get('/slider', [SliderController::class, 'index']); + // Route::get('/slider', [SliderController::class, 'index']); /// images Route::post('/images', [ImageController::class, 'store']); @@ -124,4 +124,11 @@ Route::put('/music/{id}', [MusicController::class, 'update']); Route::delete('/music/{id}', [MusicController::class, 'destroy']); + + Route::get('/slider', [SliderController::class, 'index']); // list all sliders + Route::post('/slider', [SliderController::class, 'store']); // create slider + Route::get('/slider/{id}', [SliderController::class, 'show']); // get single slider + Route::put('/slider/{id}', [SliderController::class, 'update']); // update slider + Route::delete('/slider/{id}', [SliderController::class, 'destroy']); // delete slider + }); \ No newline at end of file