pdv.backend/app/Http/Controllers/App/CategoryController.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();
}
}