1
0
Files
services_core/app/Http/Resources/Material/MaterialResource.php
T
2026-06-23 16:04:37 +07:00

65 lines
1.7 KiB
PHP

<?php
namespace App\Http\Resources\Material;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class MaterialResource extends JsonResource
{
public function toArray($request)
{
return [
// universal
'barcode_id' => $this->barcode_id,
'material_name' => $this->material_name,
'user_id' => $this->user_id,
// detect type model
'type' => $this->detectType(),
// serialized only
'serial_number' => $this->when(
$this->isSerialized(),
$this->serial_number
),
// consumable only
'qty' => $this->when(
$this->isConsumable(),
[
'received' => $this->qty_received ?? null,
'used' => $this->qty_used ?? null,
'remaining' => $this->qty_remaining ?? null,
'unit' => $this->unit ?? null,
]
),
// status (beda logic tapi tetap dipakai keduanya)
'status' => $this->status ?? null,
// optional tracking info
'assigned_at' => $this->assigned_at ?? null,
];
}
private function detectType(): string
{
// kalau punya qty field → consumable
if (isset($this->qty_received) || isset($this->qty_remaining)) {
return 'consumable';
}
return 'serialized';
}
private function isSerialized(): bool
{
return !isset($this->qty_received);
}
private function isConsumable(): bool
{
return isset($this->qty_received);
}
}