<?php

namespace App\DataTables;

use App\Models\Forecast;
use DateTime;
use Illuminate\Database\Eloquent\Builder as QueryBuilder;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Builder as HtmlBuilder;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Html\Editor\Editor;
use Yajra\DataTables\Html\Editor\Fields;
use Yajra\DataTables\Services\DataTable;

class PastForecastDataTable extends DataTable
{
    /**
     * Build the DataTable class.
     *
     * @param QueryBuilder $query Results from query() method.
     */
    public function dataTable(QueryBuilder $query): EloquentDataTable
    {
        return (new EloquentDataTable($query))
            ->addColumn('action', 'pastforecast.action')
            ->addColumn('created_at', function ($query) {
                return $query->created_at->format('Y:m:d H:i:s') ?? 'N/A';
            })
            ->addColumn('schedule', function ($query) {
                return (new DateTime($query->schedule))->format('Y:m:d');
            })
            ->setRowId('id');
    }

    /**
     * Get the query source of dataTable.
     */
    public function query(Forecast $model): QueryBuilder
    {
        return $model->newQuery()->where('schedule', '<', now()->toDateString());
    }

    /**
     * Optional method if you want to use the html builder.
     */
    public function html(): HtmlBuilder
    {
        return $this->builder()
            ->setTableId('pastforecast-table')
            ->columns($this->getColumns())
            ->minifiedAjax()
            ->dom('lBfrtip')
            ->orderBy(1)
            ->selectStyleSingle()
            ->buttons([
                Button::make('excel'),
                Button::make('csv'),
                Button::make('pdf'),
                Button::make('print'),
                // Button::make('reset'),
                // Button::make('reload')
            ]);
    }

    /**
     * Get the dataTable columns definition.
     */
    public function getColumns(): array
    {
        return  [
            Column::make('id')->visible(false)->addClass('no-print'),
            Column::make('banker'),
            Column::make('two_sure'),
            Column::make('three_direct'),
            Column::make('permutations'),
            Column::make('schedule'),
            Column::make('created_at')->exportable(false),
            // Column::make('updated_at'),
            // Column::computed('action')
            //       ->exportable(false)
            //       ->printable(false)
            //       ->width(60)
            //       ->addClass('text-center'),
        ];

        // $columnsToExclude = ['id', 'action']; // Add the column names to be excluded

        // foreach ($columnsToExclude as $columnToExclude) {
        //     $index = array_search($columnToExclude, array_column($columns, 'name'));
        //     if ($index !== false) {
        //         array_splice($columns, $index, 1);
        //     }
        // }

        // return $columns;
    }

    /**
     * Get the filename for export.
     */
    protected function filename(): string
    {
        return 'PastForecast_' . date('YmdHis');
    }
}
