MakeAdminUserSeeder.php 2.06 KB
Newer Older
jhon committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
<?php

namespace Acacha\AdminLTETemplateLaravel\Console;

use Acacha\AdminLTETemplateLaravel\Compiler\StubFileCompiler;
use Acacha\AdminLTETemplateLaravel\Filesystem\Filesystem;
use Illuminate\Console\Command;

/**
 * Class MakeAdminUserSeeder.
 *
 * @package Acacha\AdminLTETemplateLaravel\Console
 */
class MakeAdminUserSeeder extends Command
{
    use HasUsername, HasEmail;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'make:adminUserSeeder';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create a new seed to add admin user to database';

    /**
     * Filesystem.
     *
     * @var Filesystem
     */
    protected $filesystem;

    /**
     * Compiler for stub file.
     *
     * @var StubFileCompiler
     */
    protected $compiler;

    /**
     * Create a new command instance.
     *
     * @param Filesystem $filesystem
     * @param StubFileCompiler $compiler
     */
    public function __construct(Filesystem $filesystem, StubFileCompiler $compiler)
    {
        parent::__construct();
        $this->filesystem = $filesystem;
        $this->compiler = $compiler;
    }

    /**
     * Execute the console command.
     *
     */
    public function handle()
    {
        try {
            $this->filesystem->overwrite(
                $path = database_path('seeds/' . config('AdminUserSeeder', 'AdminUserSeeder.php')),
                $this->compiler->compile(
                    $this->filesystem->get($this->getStubPath()),
                    [
                        "USER_NAME" => $this->username(),
                        "USER_EMAIL" => $this->email(),
                    ]
                )
            );
            $this->info('File ' . $path . ' created');
        } catch (\Exception $e) {
            print_r($e->getMessage());
        }
    }

    /**
     * Get path to stub.
     *
     * @return string
     */
    protected function getStubPath()
    {
        return __DIR__ . '/stubs/AdminUserSeeder.php.stub';
    }
}