feat: add desciption to category and sub category
This commit is contained in:
@@ -3,10 +3,14 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use App\Traits\StoresUploads;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class CategoryController extends Controller
|
||||
{
|
||||
use StoresUploads;
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = Category::query()->withCount('subcategories');
|
||||
@@ -24,9 +28,17 @@ public function store(Request $request)
|
||||
{
|
||||
$data = $request->validate([
|
||||
'name' => 'required|string|max:255|unique:categories,name',
|
||||
'description' => 'nullable|string',
|
||||
'icon' => 'nullable|image|max:8192',
|
||||
]);
|
||||
|
||||
$category = Category::create($data);
|
||||
$category = Category::create([
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'] ?? null,
|
||||
'icon' => $request->hasFile('icon')
|
||||
? $this->storeUpload($request->file('icon'), 'categories/icons')
|
||||
: null,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Category created successfully',
|
||||
@@ -46,10 +58,25 @@ public function update(Request $request, $id)
|
||||
$category = Category::findOrFail($id);
|
||||
|
||||
$data = $request->validate([
|
||||
'name' => 'required|string|max:255|unique:categories,name,' . $category->id,
|
||||
'name' => 'sometimes|string|max:255|unique:categories,name,' . $category->id,
|
||||
'description' => 'nullable|string',
|
||||
'icon' => 'nullable|image|max:8192',
|
||||
]);
|
||||
|
||||
$category->update($data);
|
||||
if (array_key_exists('name', $data)) {
|
||||
$category->name = $data['name'];
|
||||
}
|
||||
if (array_key_exists('description', $data)) {
|
||||
$category->description = $data['description'];
|
||||
}
|
||||
if ($request->hasFile('icon')) {
|
||||
if ($category->icon) {
|
||||
Storage::disk('public')->delete($category->icon);
|
||||
}
|
||||
$category->icon = $this->storeUpload($request->file('icon'), 'categories/icons');
|
||||
}
|
||||
|
||||
$category->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Category updated successfully',
|
||||
@@ -60,6 +87,11 @@ public function update(Request $request, $id)
|
||||
public function destroy($id)
|
||||
{
|
||||
$category = Category::findOrFail($id);
|
||||
|
||||
if ($category->icon) {
|
||||
Storage::disk('public')->delete($category->icon);
|
||||
}
|
||||
|
||||
$category->delete();
|
||||
|
||||
return response()->json(['message' => 'Category deleted successfully']);
|
||||
|
||||
Reference in New Issue
Block a user