2025-06-29 19:46:50 +02:00
|
|
|
<?php
|
|
|
|
|
|
2026-08-13 23:26:58 +02:00
|
|
|
namespace App\Actions;
|
2025-06-29 19:46:50 +02:00
|
|
|
|
|
|
|
|
use App\Models\Article;
|
|
|
|
|
|
2026-08-13 23:26:58 +02:00
|
|
|
class ValidateArticleAction
|
2025-06-29 19:46:50 +02:00
|
|
|
{
|
2025-08-15 02:50:42 +02:00
|
|
|
public function __construct(
|
2026-08-14 00:07:08 +02:00
|
|
|
private FetchArticleDataAction $fetchArticleData,
|
2026-08-13 23:16:43 +02:00
|
|
|
private CreateRouteArticlesAction $createRouteArticles,
|
2025-08-15 02:50:42 +02:00
|
|
|
) {}
|
|
|
|
|
|
2026-08-13 23:26:58 +02:00
|
|
|
public function execute(Article $article): Article
|
2025-06-29 19:46:50 +02:00
|
|
|
{
|
2026-03-18 15:46:15 +01:00
|
|
|
logger('Validating article for routes: '.$article->id);
|
2025-06-29 19:46:50 +02:00
|
|
|
|
2026-08-14 00:07:08 +02:00
|
|
|
$articleData = $this->fetchArticleData->execute($article);
|
2026-02-26 01:19:38 +01:00
|
|
|
|
2025-08-10 21:18:20 +02:00
|
|
|
$updateData = [];
|
2025-08-09 18:34:19 +02:00
|
|
|
|
2026-03-08 14:18:28 +01:00
|
|
|
if (! empty($articleData)) {
|
2025-08-10 21:18:20 +02:00
|
|
|
$updateData['title'] = $articleData['title'] ?? $article->title;
|
|
|
|
|
$updateData['description'] = $articleData['description'] ?? $article->description;
|
|
|
|
|
$updateData['content'] = $articleData['full_article'] ?? null;
|
2026-08-09 15:22:02 +02:00
|
|
|
$updateData['image_url'] = ($articleData['thumbnail'] ?? null) ?: $article->image_url;
|
2025-08-09 18:34:19 +02:00
|
|
|
}
|
2026-02-26 01:19:38 +01:00
|
|
|
|
2026-03-08 14:18:28 +01:00
|
|
|
if (! isset($articleData['full_article']) || empty($articleData['full_article'])) {
|
2025-08-09 21:32:46 +02:00
|
|
|
logger()->warning('Article data missing full_article content', [
|
2025-06-30 21:28:15 +02:00
|
|
|
'article_id' => $article->id,
|
2026-03-08 14:18:28 +01:00
|
|
|
'url' => $article->url,
|
2025-06-30 21:28:15 +02:00
|
|
|
]);
|
2026-02-26 01:19:38 +01:00
|
|
|
|
2026-03-18 15:46:15 +01:00
|
|
|
$updateData['validated_at'] = now();
|
2025-08-09 18:34:19 +02:00
|
|
|
$article->update($updateData);
|
2026-02-26 01:19:38 +01:00
|
|
|
|
2025-06-30 21:28:15 +02:00
|
|
|
return $article->refresh();
|
|
|
|
|
}
|
2026-02-26 01:19:38 +01:00
|
|
|
|
|
|
|
|
$updateData['validated_at'] = now();
|
2025-08-09 18:34:19 +02:00
|
|
|
$article->update($updateData);
|
2025-06-29 19:46:50 +02:00
|
|
|
|
2026-08-13 23:16:43 +02:00
|
|
|
$this->createRouteArticles->execute($article, $articleData['full_article']);
|
2026-03-18 15:46:15 +01:00
|
|
|
|
2025-06-29 19:46:50 +02:00
|
|
|
return $article->refresh();
|
|
|
|
|
}
|
|
|
|
|
}
|