Passed
Push — master ( 864509...8257bd )
by Gabriel
14:12
created

BuilderAwareTrait::generateEmailBuilderClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
namespace ByTIC\Notifications\Messages\Builder;
4
5
use Nip\Records\RecordManager;
6
7
/**
8
 * Class BuilderAwareTrait
9
 * @package ByTIC\Common\Records\Emails\Builder
10
 */
11
trait BuilderAwareTrait
12
{
13
14
    /**
15
     * @param $type
16
     * @return bool
17
     */
18
    public function createEmail($type)
19
    {
20
        $builder = $this->createEmailBuilder($type);
21
        return $builder->save();
22
    }
23
24
    /**
25
     * @param $type
26
     * @return ViewBuilder
27
     */
28
    public function createEmailBuilder($type)
29
    {
30
        $class = $this->generateEmailBuilderClass($type);
31
        /** @var ViewBuilder $builder */
32
        $builder = new $class();
33
        $builder->setItem($this);
34
35
        return $builder;
36
    }
37
38
    /**
39
     * @param $type
40
     * @return string
41
     */
42
    protected function generateEmailBuilderClass($type)
43
    {
44
        $base = $this->getManager()->getModelNamespace();
45
        return $base . 'EmailBuilder\\' . $this->generateEmailBuilderClassName($type);
46
    }
47
48
    /**
49
     * @return RecordManager
50
     */
51
    abstract public function getManager();
52
53
    /**
54
     * @param $type
55
     * @return mixed
56
     */
57
    protected function generateEmailBuilderClassName($type)
58
    {
59
        return inflector()->classify($type);
60
    }
61
}
62