<?php

use App\PackagesAdmin\Manager\Models\Manager;
use App\PackagesAdmin\Manager\Models\ManagerRole;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class ManagerRolesTable extends Migration
{
	const TABLE_MANAGER = 'table_manager';
	const TABLE_ROLE = 'table_manager_role';

	/**
	 * Run the migrations.
	 *
	 * @return void
	 */
	public function up()
	{
		Schema::create(self::TABLE_ROLE, function (Blueprint $table) {
			$table->increments('id');
			$table->string('title');
			$table->string('slug')->nullable();
			$table->timestamps();
		});

		Schema::create(static::TABLE_MANAGER, function (Blueprint $table) {
			$table->increments('id');

			$table->string('first_name');
			$table->string('last_name');
			$table->string('email');
			$table->string('password');
			$table->string('remember_token')->nullable();

			$table->boolean('is_active');
			$table->integer('role_id')->nullable();

			$table->timestamps();

            $table->foreign('role_id')->references('id')->on(ManagerRolesTable::TABLE_ROLE)->onDelete('set null');
		});

		collect([
			['title' => 'Administrator'],
			['title' => 'Employee'],
		])->each(function($locale) {
			$managerRole = new ManagerRole();
			$managerRole->fill($locale);
			$managerRole->save();
		});

		$manager = new Manager();
		$manager->first_name = 'Admin';
		$manager->last_name = '';
		$manager->email = 'admin@example.com';
		$manager->password = bcrypt('teccoit');
		$manager->is_active = true;
		$manager->role_id = 1;
		$manager->save();

		$manager = new Manager();
		$manager->first_name = 'Basic User';
		$manager->last_name = '';
		$manager->email = 'admin@supernova.com';
		$manager->password = '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm';
		$manager->is_active = true;
		$manager->role_id = 2;
		$manager->save();
	}

	/**
	 * Reverse the migrations.
	 *
	 * @return void
	 */
	public function down()
	{
		Schema::drop(self::TABLE_ROLE);
		Schema::dropIfExists(static::TABLE_MANAGER);
	}
}
