<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Domain;
use App\Models\Tenant;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Artisan;

class NodeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $data['web'] = Domain::join('tenants','tenants.id','=','domains.tenant_id')
        ->get();

        return view('admin.node.index',$data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {


        $tenant = Tenant::create([
            'tenant_username'=>$request->username,
            'tenant_password'=>Hash::make('123'),
            'tenant_domain'=>$request->domain,
            'tenant_theme'=>$request->tema,
            'tenant_email'=>$request->email
        ]);
    
        $tenant->domains()->create([
            'domain' => $request->domain,
            'is_active'=>'y'
        ]);
       
        return redirect('node');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
    

        $data = Tenant::find($id);

        
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {

        $data = Tenant::find($id);

        $database_name = $data->tenancy_db_name;

        Schema::getConnection()->getDoctrineSchemaManager()->dropDatabase($database_name);


        return redirect('node');

    }

    public function delete($id)
    {
        
        $data = Tenant::find($id);

        $database_name = $data->tenancy_db_name;
        // dd($database_name);
        // Schema::getConnection()->getDoctrineSchemaManager()->dropDatabase("`{$database_name}`");

        // dd(Tenant::delete($id));    

        $tenant = tenancy()->find($id);

// $tenant->getDatabaseName();

$tenant->delete();
        return redirect('node');

    }
}