<?php
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Schema\Builder;
use Illuminate\Container\Container;
use Itguild\EloquentTable\EloquentDataProvider;
use Itguild\EloquentTable\ListEloquentTable;
use Itguild\EloquentTable\models\User;
use Itguild\EloquentTable\ViewEloquentTable;
use Itguild\EloquentTable\ViewJsonTableEloquentModel;
use Itguild\Tables\ActionColumn\EditActionColumn;
use Itguild\Tables\ListJsonTable;

ini_set("display_errors", true);
error_reporting(-1);

require_once __DIR__ . "/vendor/autoload.php";

echo "<link rel='stylesheet' href='/vendor/twbs/bootstrap/dist/css/bootstrap.css'>";

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

$capsule = new Capsule;
$capsule->addConnection([
    'driver' => $_ENV['DB_DRIVER'],
    'host' => $_ENV['DB_HOST'],
    'database' => $_ENV['DB_NAME'],
    'username' => $_ENV['DB_USER'],
    'password' => $_ENV['DB_PASSWORD'],
    'charset' => $_ENV['DB_CHARSET'],
    'collation' => $_ENV['DB_COLLATION'],
    'prefix' => $_ENV['DB_PREFIX'],
]);
// Setup the Eloquent ORM…

$capsule->setAsGlobal();

$capsule->bootEloquent();

$schema = $capsule->schema();

try {
    $table = new ListEloquentTable(new EloquentDataProvider(User::class, [
        'currentPage' => 1,
        'perPage' => 3,
        'params' => ["class" => "table table-bordered", "border" => "2"],
        'baseUrl' => "",
        'searchPrefix' => '',
        'searchParams' => $_GET,
        'filters' => ["email"]
    ]));
    $table->columns([
        'username' => [
            'filter' => [
                'class' => \Itguild\Tables\Filter\InputTextFilter::class
            ]
        ],
        'role' => [
            'filter' => [
                'class' => \Itguild\Tables\Filter\InputTextFilter::class
            ],
        ],
        'created_at' => [
            'format' => 'date:d-m-Y',
            'filter' => [
                'class' => \Itguild\Tables\Filter\InputDateFilter::class
            ]
        ],
        'updated_at' => function ($data) {
            if (!$data){
                return null;
            }

            return (new DateTimeImmutable($data))->format("d-m-Y");
        }
    ]);
    $table->addAction(EditActionColumn::class);
    $table->create();
    $table->render();
} catch (Exception $e) {
}

try {
    $table = new ViewEloquentTable(new ViewJsonTableEloquentModel(User::find(1), [
        'params' => ["class" => "table table-bordered", "border" => "2"],
        'baseUrl' => "/admin/user",
    ]));
    $table->rows([
        'created_at' => function ($data) {
            if (!$data){
                return null;
            }

            return (new DateTimeImmutable($data))->format("d-m-Y");
        },
        'updated_at' => function ($data) {
            if (!$data){
                return null;
            }

            return (new DateTimeImmutable($data))->format("d-m-Y");
        }
    ]);
    $table->create();
    $table->render();
} catch (Exception $e) {
}