70 lines
2.3 KiB
PHP
70 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\App;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\App\UnitEquivalenceStoreRequest;
|
|
use App\Http\Requests\App\UnitEquivalenceUpdateRequest;
|
|
use App\Models\Inventory;
|
|
use App\Models\UnitEquivalence;
|
|
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
|
|
|
class UnitEquivalenceController extends Controller
|
|
{
|
|
public function index(Inventory $inventory)
|
|
{
|
|
$equivalences = $inventory->unitEquivalences()
|
|
->with('unitOfMeasure')
|
|
->get()
|
|
->map(function ($eq) use ($inventory) {
|
|
$basePrice = $inventory->price?->retail_price ?? 0;
|
|
|
|
return [
|
|
'id' => $eq->id,
|
|
'unit_of_measure_id' => $eq->unit_of_measure_id,
|
|
'unit_name' => $eq->unitOfMeasure->name,
|
|
'unit_abbreviation' => $eq->unitOfMeasure->abbreviation,
|
|
'conversion_factor' => $eq->conversion_factor,
|
|
'retail_price' => $eq->retail_price ?? round($basePrice * $eq->conversion_factor, 2),
|
|
'is_active' => $eq->is_active,
|
|
'created_at' => $eq->created_at,
|
|
];
|
|
});
|
|
|
|
return ApiResponse::OK->response([
|
|
'equivalences' => $equivalences,
|
|
'base_unit' => $inventory->unitOfMeasure,
|
|
]);
|
|
}
|
|
|
|
public function store(UnitEquivalenceStoreRequest $request, Inventory $inventory)
|
|
{
|
|
$equivalence = $inventory->unitEquivalences()->create($request->validated());
|
|
$equivalence->load('unitOfMeasure');
|
|
|
|
return ApiResponse::CREATED->response([
|
|
'message' => 'Equivalencia creada correctamente.',
|
|
'equivalence' => $equivalence,
|
|
]);
|
|
}
|
|
|
|
public function update(UnitEquivalenceUpdateRequest $request, Inventory $inventory, UnitEquivalence $equivalencia)
|
|
{
|
|
$equivalencia->update($request->validated());
|
|
|
|
return ApiResponse::OK->response([
|
|
'message' => 'Equivalencia actualizada correctamente.',
|
|
'equivalence' => $equivalencia->fresh('unitOfMeasure'),
|
|
]);
|
|
}
|
|
|
|
public function destroy(Inventory $inventory, UnitEquivalence $equivalencia)
|
|
{
|
|
$equivalencia->delete();
|
|
|
|
return ApiResponse::OK->response([
|
|
'message' => 'Equivalencia eliminada correctamente.',
|
|
]);
|
|
}
|
|
}
|