generated from liutk/owl-admin-base
48 lines
1.5 KiB
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,
|
|
];
|
|
}
|
|
}
|