Completed
Push — master ( cb5fa1...8201f5 )
by Vojta
06:45
created

SeedStatusesTable::run()   B

Complexity

Conditions 4
Paths 3

Size

Total Lines 25
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 25
ccs 14
cts 14
cp 1
rs 8.5806
c 0
b 0
f 0
cc 4
eloc 13
nc 3
nop 0
crap 4
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 14
    public function run()
20
    {
21
        // fetch data for seed
22 14
        $defaultSeed = __DIR__ . $this->seedDirPath . $this->seedFileName;
23 14
        $seedFile = $this->getSeedFile($defaultSeed);
24 14
        $seedMediaFolder = pathinfo($seedFile)['dirname'] . $this->mediaFolderPath;
25 14
        $items = Yaml::parse(File::get($seedFile));
26
27
        // process each line
28 14
        foreach ($items as $key => $item)
29
        {
30
            // create new Status
31 14
            $status = Status::create([
32 14
                'name' => trim($item['name']),
33 14
                'ident' => trim($item['ident']),
34 14
                'color' => trim($item['color']),
35 14
                'enabled' => isset($item['enabled']) ? !!$item['enabled'] : true,
36
            ]);
37
38
            // save attachments
39 14
            if (!empty($item['imagename'])) {
40 14
                $this->saveImageAttachments($status, $seedMediaFolder, $item['imagename']);
41
            }
42
        }
43 14
    }
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
            $fileObject = $this->getSavedFile($filePath, $isPublic = true);
57
            $item->image()->add($fileObject);
58
        }
59
    }
60
}
61