64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php namespace App\Http\Controllers\App;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\App\CategoryStoreRequest;
|
|
use App\Http\Requests\App\CategoryUpdateRequest;
|
|
use App\Models\Category;
|
|
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
|
|
|
|
|
class CategoryController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$categorias = Category::with(['subcategories' => fn ($q) => $q->where('is_active', true)->orderBy('name')])
|
|
->where('is_active', true)
|
|
->orderBy('name')
|
|
->paginate(config('app.pagination'));
|
|
|
|
return ApiResponse::OK->response([
|
|
'categories' => $categorias
|
|
]);
|
|
}
|
|
|
|
public function show(Category $categoria)
|
|
{
|
|
$categoria->load(['subcategories' => fn ($q) => $q->where('is_active', true)->orderBy('name')]);
|
|
|
|
return ApiResponse::OK->response([
|
|
'model' => $categoria
|
|
]);
|
|
}
|
|
|
|
public function store(CategoryStoreRequest $request)
|
|
{
|
|
$categoria = Category::create($request->validated());
|
|
|
|
return ApiResponse::OK->response([
|
|
'model' => $categoria
|
|
]);
|
|
}
|
|
|
|
public function update(CategoryUpdateRequest $request, Category $categoria)
|
|
{
|
|
$categoria->update($request->validated());
|
|
|
|
return ApiResponse::OK->response([
|
|
'model' => $categoria->fresh()
|
|
]);
|
|
}
|
|
|
|
public function destroy(Category $categoria)
|
|
{
|
|
if ($categoria->inventories()->exists()) {
|
|
return ApiResponse::BAD_REQUEST->response([
|
|
'message' => 'No se puede eliminar la clasificación porque tiene productos asociados.'
|
|
]);
|
|
}
|
|
|
|
$categoria->delete();
|
|
|
|
return ApiResponse::OK->response();
|
|
}
|
|
}
|