SeedStatusesTable::saveImageAttachments()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 0
cts 7
cp 0
rs 9.9666
c 0
b 0
f 0
cc 3
nc 2
nop 3
crap 12
1
<?php namespace VojtaSvoboda\Reservations\Updates;
2
3
use File;
4
use VojtaSvoboda\Reservations\Models\Status;
5
use VojtaSvoboda\Reservations\Updates\Classes\Seeder;
6
use Yaml;
7
8
class SeedStatusesTable extends Seeder
9
{
10
    protected $seedFileName = '/statuses.yaml';
11
12
    protected $seedDirPath = '/sources';
13
14
    protected $mediaFolderPath = '/statuses';
15
16
    /**
17
     * Run seeding.
18
     */
19 27
    public function run()
20
    {
21
        // fetch data for seed
22 27
        $defaultSeed = __DIR__ . $this->seedDirPath . $this->seedFileName;
23 27
        $seedFile = $this->getSeedFile($defaultSeed);
24 27
        $seedMediaFolder = pathinfo($seedFile)['dirname'] . $this->mediaFolderPath;
25 27
        $items = Yaml::parse(File::get($seedFile));
26
27
        // process each line
28 27
        foreach ($items as $item)
29
        {
30
            // create new Status
31 27
            $status = Status::create([
32 27
                'name' => trim($item['name']),
33 27
                'ident' => trim($item['ident']),
34 27
                'color' => trim($item['color']),
35 27
                'enabled' => isset($item['enabled']) ? !!$item['enabled'] : true,
36
            ]);
37
38
            // save attachments
39 27
            if (!empty($item['imagename'])) {
40 27
                $this->saveImageAttachments($status, $seedMediaFolder, $item['imagename']);
41
            }
42
        }
43 27
    }
44
45
    /**
46
     * Save attachments
47
     *
48
     * @param object $item
49
     * @param string $path
50
     * @param string $imagename
51
     */
52
    private function saveImageAttachments($item, $path, $imagename)
53
    {
54
        $filePath = $path . '/' . $imagename;
55
        if (file_exists($filePath) && is_file($filePath)) {
56
            $isPublic = true;
57
            $fileObject = $this->getSavedFile($filePath, $isPublic);
58
            $item->image()->add($fileObject);
59
        }
60
    }
61
}
62