Completed
Push — develop ( b8005e...fd13fe )
by Freddie
03:18
created

CreateEntityUseCase::execute()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 23
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 12
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 23
ccs 13
cts 13
cp 1
crap 2
rs 9.8666
1
<?php
2
3
namespace FlexPHP\Generator\Domain\UseCases;
4
5
use FlexPHP\Generator\Domain\Builders\Entity\EntityBuilder;
6
use FlexPHP\Generator\Domain\Messages\Requests\CreateEntityRequest;
7
use FlexPHP\Generator\Domain\Messages\Responses\CreateEntityResponse;
8
use FlexPHP\UseCases\UseCase;
9
10
class CreateEntityUseCase extends UseCase
11
{
12
    /**
13
     * Create entity
14
     *
15
     * @param CreateEntityRequest $request
16
     * @return CreateEntityResponse
17
     */
18 3
    public function execute($request)
19
    {
20 3
        $this->throwExceptionIfRequestNotValid(__METHOD__, CreateEntityRequest::class, $request);
21
22 2
        $name = $request->name;
23 2
        $properties = $request->properties;
24
25 2
        $entity = new EntityBuilder([
26 2
            'name' => $name,
27 2
            'properties' => $properties,
28
        ]);
29
30 2
        $dir = sprintf('%1$s/../../tmp/skeleton/src/Domain/%2$s/Entity', __DIR__, $name);
31
32 2
        if (!\is_dir($dir)) {
33 2
            mkdir($dir, 0777, true);
34
        }
35
36 2
        $file = \sprintf('%1$s/%2$s.php', $dir, $name);
37
38 2
        \file_put_contents($file, $entity->build());
39
40 2
        return new CreateEntityResponse($file);
41
    }
42
}
43