MakeCommand

class MakeCommand extends Command

Methods

public move($folder, $file, $dest) No description
public makeStrategy($strategy, $folder) No description
public createDatabase($input, $output) No description
public createTable($input, $output) No description
public chatCreate($input, $output) No description
public create($input, $output) No description
protected configure() No description
protected execute(InputInterface $input, OutputInterface $output) No description

Details

at line 16

move()

public move($folder, $file, $dest)

Parameters

$folder
$file
$dest
at line 26

makeStrategy()

public makeStrategy($strategy, $folder)

Parameters

$strategy
$folder
at line 35

createDatabase()

public createDatabase($input, $output)

Parameters

$input
$output
at line 49

createTable()

public createTable($input, $output)

Parameters

$input
$output
at line 63

chatCreate()

public chatCreate($input, $output)

Parameters

$input
$output
at line 74

create()

public create($input, $output)

Parameters

$input
$output
at line 97

configure()

protected configure()
at line 106

execute()

protected execute(InputInterface $input, OutputInterface $output)

Parameters

InputInterface $input
OutputInterface $output

Source code

<?php

	namespace Command;

	set_time_limit(0); 

	use Symfony\Component\Console\Command\Command as Comando;
	use Symfony\Component\Console\Input\InputInterface;
	use Symfony\Component\Console\Output\OutputInterface;
	use Symfony\Component\Console\Input\InputArgument;
	use App\Khan\Component\Hooks\Hooks as Hooks;
	use Command\KhanCommand as KhanCommand;

	class MakeCommand extends Comando {

		public function move($folder, $file, $dest){
			
			$file = __DIR__ . '/' . 'storage/' . $folder . '/' . $file;
			try {
				copy($file, $dest);
			} catch (Exception $e) {
				die($e->getMessage());
			}
		}

		public function makeStrategy($strategy, $folder){
			$strategyOrigin = ROOT_FOLDER . '/config/strategy.php';
			$make2 = Hooks::write($strategyOrigin, 
					Hooks::replace($strategyOrigin, [
						"// newStrategy" => ",'$strategy' => 'StrategysAuth\\".$folder."'
		// newStrategy"
			]));
		}

		public function createDatabase($input, $output){
			try {

				$conn = new \PDO("mysql:host={$_ENV['DB_HOST']}", $_ENV['DB_USERNAME'], $_ENV['DB_PASSWORD']);
			    $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
			    $sql = "CREATE DATABASE IF NOT EXISTS {$_ENV['DB_DATABASE']}";
			    $conn->exec($sql);
			    $output->writeln("Database create success!!");

			} catch (Exception $e) {
				echo "";
			}
		}

		public function createTable($input, $output){
			try {

				$conn = new \PDO("mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}", $_ENV['DB_USERNAME'], $_ENV['DB_PASSWORD']);
			    $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
				$sql = "CREATE TABLE IF NOT EXISTS `login` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `email` VARCHAR(50) NOT NULL, `password` VARCHAR(50) NOT NULL, `name` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=13;";
				$conn->exec($sql);
				$output->writeln("Table create success!!");

			} catch (Exception $e) {
				echo "";
			}
		}

		public function chatCreate($input, $output){
			// Move Routes
			// $this->move('chat', 'chat.php', 'routes/chat.php');
      $file = __DIR__ . '/' . 'storage/chat/chat.php';
      $maked = Hooks::append('config/router.php', Hooks::read($file)); 
			// Move Views
			$this->move('chat', 'index.html', 'resources/views/index.html');
			$this->move('chat', 'chat.html', 'resources/views/chat.html');
			$output->writeln("Chat create success!!");
		}

		public function create($input, $output){
			// Create database
			$this->createDatabase($input, $output);
			$this->createTable($input, $output);
			// Move Routes
			// $this->move('auth', 'auth.php', 'routes/auth.php');
      $file = __DIR__ . '/' . 'storage/auth/auth.php';
      $maked = Hooks::append('config/router.php', Hooks::read($file));
			// Move Views
			$this->move('auth', 'index.html', 'resources/views/index.html');
			$this->move('auth', 'login.html', 'resources/views/login.html');
			$this->move('auth', 'painel.html', 'resources/views/painel.html');
			$this->move('auth', 'register.html', 'resources/views/register.html');
			// Move Controllers
			$this->move('auth', 'AuthController.php', 'app/AuthController.php');
			// Move Middlewares
			$this->move('auth', 'CheckLogin.php', 'middlewares/CheckLogin.php');
			// move Strategy
			$this->move('auth', 'AuthStrategy.php', 'config/strategy/AuthStrategy.php');
			// config strategys
			$this->makeStrategy('auth', 'AuthStrategy');
		}

	    protected function configure(){

	        $this->setName('make')
	             ->addArgument('type', InputArgument::OPTIONAL, 'Qual o make deseja gerar?')
        		 ->setDescription('New system predefined.')
        		 ->setHelp('System predefined in khan...');

	    }

	    protected function execute(InputInterface $input, OutputInterface $output){
	    		
	    	$make = ($input->getArgument('type')) ? $input->getArgument('type') : false;

	    	if($make && $make === "auth"){

	    		$dotenv = new \Dotenv\Dotenv('.');
				$dotenv->load();
	    		$this->create($input, $output);

	    	}
	    	elseif ($make && $make === "chat") {
	    		
	    		$this->chatCreate($input, $output);

	    	}
	    	else{

	    		$output->writeln('<fg=red>Error to make</>');

	    	}

	    }

	}