store-manage/app/Http/Resources/TaskResource.php

48 lines
1.5 KiB
PHP

<?php
namespace App\Http\Resources;
use App\Models\TaskHygiene;
use App\Models\TaskLedger;
use App\Models\TaskPerformance;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class TaskResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->resource->id,
'name' => $this->resource->name,
'taskable_type' => $this->resource->taskable_type,
'taskable_id' => $this->resource->taskable_id,
'taskable' => $this->when($this->resource->relationLoaded('taskable'), function () {
$taskable = $this->resource->taskable;
switch (Relation::getMorphedModel($this->resource->taskable_type)) {
case TaskLedger::class:
return TaskLedgerResource::make($taskable);
case TaskHygiene::class:
return TaskHygieneResource::make($taskable);
case TaskPerformance::class:
return TaskPerformanceResource::make($taskable);
}
return $taskable;
}),
'start_at' => (int) $this->resource->start_at?->timestamp,
'end_at' => (int) $this->resource->end_at?->timestamp,
'created_at' => $this->resource->created_at->timestamp,
];
}
}