88 lines
2.4 KiB
PHP
88 lines
2.4 KiB
PHP
<?php namespace App\Http\Controllers\App;
|
|
/**
|
|
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
|
|
*/
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\App\UnitOfMeasurementStoreRequest;
|
|
use App\Http\Requests\App\UnitOfMeasurementUpdateRequest;
|
|
use App\Models\UnitOfMeasurement;
|
|
use Illuminate\Http\Request;
|
|
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
|
|
|
/**
|
|
* Descripción
|
|
*/
|
|
class UnitOfMeasurementController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$query = UnitOfMeasurement::query();
|
|
|
|
// Filtro por búsqueda
|
|
if ($request->has('q')) {
|
|
$query->where(function($q) use ($request) {
|
|
$q->where('name', 'like', "%{$request->q}%")
|
|
->orWhere('abbreviation', 'like', "%{$request->q}%");
|
|
});
|
|
}
|
|
|
|
$units = $query->orderBy('name')->paginate(config('app.pagination'));
|
|
|
|
return ApiResponse::OK->response([
|
|
'units' => $units
|
|
]);
|
|
}
|
|
|
|
public function show(UnitOfMeasurement $unit)
|
|
{
|
|
return ApiResponse::OK->response([
|
|
'unit' => $unit
|
|
]);
|
|
}
|
|
|
|
public function active()
|
|
{
|
|
$units = UnitOfMeasurement::active()->orderBy('name')->get();
|
|
|
|
return ApiResponse::OK->response([
|
|
'units' => $units
|
|
]);
|
|
}
|
|
|
|
public function store(UnitOfMeasurementStoreRequest $request)
|
|
{
|
|
$unit = UnitOfMeasurement::create($request->validated());
|
|
|
|
return ApiResponse::CREATED->response([
|
|
'message' => 'Unidad de medida creada correctamente.',
|
|
'unit' => $unit
|
|
]);
|
|
}
|
|
|
|
public function update(UnitOfMeasurementUpdateRequest $request, UnitOfMeasurement $unit)
|
|
{
|
|
$unit->update($request->validated());
|
|
|
|
return ApiResponse::OK->response([
|
|
'message' => 'Unidad de medida actualizada correctamente.'
|
|
]);
|
|
}
|
|
|
|
public function destroy(UnitOfMeasurement $unit)
|
|
{
|
|
// Verificar si hay productos asociados a esta unidad de medida
|
|
if ($unit->inventories()->exists()) {
|
|
return ApiResponse::BAD_REQUEST->response([
|
|
'message' => 'No se puede eliminar esta unidad de medida porque hay productos asociados a ella.'
|
|
]);
|
|
}
|
|
|
|
$unit->delete();
|
|
|
|
return ApiResponse::OK->response([
|
|
'message' => 'Unidad de medida eliminada correctamente.'
|
|
]);
|
|
}
|
|
}
|