*/ public function toArray(Request $request): array { return [ 'id' => $this->id, 'client' => $this->whenLoaded('client', function () { return new ClientResource($this->client); }), 'deceased' => $this->whenLoaded('deceased', function () { return new DeceasedResource($this->deceased); }), 'order_giver' => $this->order_giver, 'location' => $this->whenLoaded('location', function () { return [ 'id' => $this->location->id, 'name' => $this->location->name ]; }), 'type' => $this->type, 'scheduled_at' => $this->scheduled_at ? $this->scheduled_at->format('Y-m-d H:i:s') : null, 'duration_min' => $this->duration_min, 'status' => $this->status, 'practitioners' => $this->whenLoaded('practitioners', function () { return $this->practitioners->map(function ($practitioner) { return [ 'id' => $practitioner->id, 'employee_id' => $practitioner->employee_id, 'employee_name' => $practitioner->employee->full_name ?? ($practitioner->employee->first_name . ' ' . $practitioner->employee->last_name), 'diploma_number' => $practitioner->diploma_number, 'diploma_date' => $practitioner->diploma_date?->format('Y-m-d'), 'authorization_number' => $practitioner->authorization_number, 'authorization_issue_date' => $practitioner->authorization_issue_date?->format('Y-m-d'), 'authorization_expiry_date' => $practitioner->authorization_expiry_date?->format('Y-m-d'), 'notes' => $practitioner->notes, 'is_authorization_valid' => $practitioner->is_authorization_valid, 'created_at' => $practitioner->created_at?->format('Y-m-d H:i:s'), 'updated_at' => $practitioner->updated_at?->format('Y-m-d H:i:s'), 'role' => $practitioner->pivot->role ?? null, ]; }); }), 'principal_practitioner' => $this->whenLoaded('practitioners', function () { $principal = $this->practitioners->where('pivot.role', 'principal')->first(); if (!$principal) { return null; } return [ 'id' => $principal->id, 'employee_id' => $principal->employee_id, 'employee_name' => $principal->employee->full_name ?? ($principal->employee->first_name . ' ' . $principal->employee->last_name), 'diploma_number' => $principal->diploma_number, 'diploma_date' => $principal->diploma_date?->format('Y-m-d'), 'authorization_number' => $principal->authorization_number, 'authorization_issue_date' => $principal->authorization_issue_date?->format('Y-m-d'), 'authorization_expiry_date' => $principal->authorization_expiry_date?->format('Y-m-d'), 'notes' => $principal->notes, 'is_authorization_valid' => $principal->is_authorization_valid, 'created_at' => $principal->created_at?->format('Y-m-d H:i:s'), 'updated_at' => $principal->updated_at?->format('Y-m-d H:i:s'), 'role' => $principal->pivot->role ?? null, ]; }), 'attachments_count' => $this->attachments_count, 'notes' => $this->notes, 'created_by' => $this->created_by, 'created_at' => $this->created_at->format('Y-m-d H:i:s'), 'updated_at' => $this->updated_at->format('Y-m-d H:i:s'), 'attachments' => $this->whenLoaded('attachments', function () { return InterventionAttachmentResource::collection($this->attachments); }), 'notifications' => $this->whenLoaded('notifications', function () { return InterventionNotificationResource::collection($this->notifications); }) ]; } }