Files
TicketAssistent/app/DTOs/ArticleCandidateDTO.php

48 lines
1.4 KiB
PHP

<?php
namespace App\DTOs;
use App\Models\Article;
class ArticleCandidateDTO
{
public function __construct(
public readonly int $articleId,
public readonly string $title,
public readonly string $content,
public readonly float $distance,
public readonly ?string $sourceUrl = null,
public readonly ?int $sourceArticleId = null,
public readonly ?string $note = null,
public readonly array $allowedActions = []
) {}
public static function fromArticle(Article $article, float $distance): self
{
return new self(
articleId: $article->id,
title: $article->title,
content: $article->content,
distance: $distance,
sourceUrl: $article->source_url,
sourceArticleId: $article->source_article_id,
note: $article->note,
allowedActions: $article->allowed_actions ?? []
);
}
public function toArray(): array
{
return [
'article_id' => $this->articleId,
'title' => $this->title,
'content' => $this->content,
'distance' => $this->distance,
'source_url' => $this->sourceUrl,
'source_article_id' => $this->sourceArticleId,
'note' => $this->note,
'allowed_actions' => $this->allowedActions,
];
}
}