ArticleValidationService.php
1 <?php 2 3 namespace ButA2SaeS3\services; 4 5 use ButA2SaeS3\dto\AddArticleDto; 6 use ButA2SaeS3\validation\ValidationResult; 7 8 class ArticleValidationService 9 { 10 public static function validateAddArticle(array $data): ValidationResult 11 { 12 $result = ValidationResult::empty(); 13 14 $title = trim($data['title'] ?? ''); 15 $content = trim($data['content'] ?? ''); 16 $status = $data['status'] ?? 'draft'; 17 18 if ($title === '') { 19 $result->addMessage('title', 'Le titre est requis'); 20 } 21 22 if ($content === '') { 23 $result->addMessage('content', 'Le contenu est requis'); 24 } 25 26 if ($status !== 'draft' && $status !== 'published') { 27 $result->addMessage('status', 'Statut invalide'); 28 } 29 30 if ($result->hasMessages()) { 31 return $result; 32 } 33 34 $result->setValue(new AddArticleDto($title, $content, $status)); 35 return $result; 36 } 37 38 public static function validateUpdateArticle(array $data, int $id): ValidationResult 39 { 40 $result = self::validateAddArticle($data); 41 if ($result->hasMessages()) { 42 return $result; 43 } 44 45 /** @var AddArticleDto $addDto */ 46 $addDto = $result->value(); 47 $result->setValue(new \ButA2SaeS3\dto\UpdateArticleDto($id, $addDto->title, $addDto->content, $addDto->status)); 48 return $result; 49 } 50 }