ArticlePatchMessage::createFromArticle()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 9.472
c 0
b 0
f 0
cc 3
nc 4
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Yproximite\Api\Message\Article;
5
6
use Yproximite\Api\Model\Article\Article;
7
use Yproximite\Api\Model\Article\Category;
8
use Yproximite\Api\Message\IdentityAwareMessageTrait;
9
10
/**
11
 * Class ArticlePatchMessage
12
 */
13
class ArticlePatchMessage extends AbstractArticleMessage
14
{
15
    use IdentityAwareMessageTrait;
16
17
    /**
18
     * @param Article $article
19
     *
20
     * @return self
21
     */
22
    public static function createFromArticle(Article $article): self
23
    {
24
        $message = new self();
25
        $message->setId($article->getId());
26
        $message->setStatus($article->getStatus());
27
        $message->setMediaLimit($article->getMediaLimit());
28
        $message->setShareOnFacebook($article->isShareOnFacebook());
29
30
        $categoryIds = array_map(function (Category $category) {
31
            return $category->getId();
32
        }, $article->getCategories());
33
34
        $message->setCategoryIds($categoryIds);
35
36
        foreach ($article->getTranslations() as $translation) {
37
            $translationMessage = ArticleTranslationMessage::createFromArticleTranslation($translation);
38
39
            $message->addTranslation($translationMessage);
40
        }
41
42
        foreach ($article->getMedias() as $media) {
43
            $mediaMessage = ArticleMediaMessage::createFromArticleMedia($media);
44
45
            $message->addMedia($mediaMessage);
46
        }
47
48
        return $message;
49
    }
50
}
51