<?php

namespace App\DataTables;

use App\User;
use Carbon\Carbon;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Services\DataTable;

class ReportingDataTable extends DataTable
{

    public function dataTable($query)
    {
       return datatables()
            ->eloquent($query)
            ->addColumn('checkbox', function ($row) {
                return '<input class="check_one" type="checkbox" name="selection[]" value="'.$row->id.'"/>';
            })
            ->addColumn('from_date', function ($row) {
                return Carbon::parse($row->from_date)->toDateString();
            })
            ->addColumn('to_date', function ($row) {
                return Carbon::parse($row->to_date)->toDateString();
            })
            ->addColumn('action', function ($row) {
                $returnValue = '<div class="btn-group">';
                if($row->status != 'pending' && $row->status != 'NONE') {
                    $returnValue .=
                    '<a style="text-decoration:none" class="btn btn-primary actionBtn" href="' . route('report_download_report', ['id' => $row->id]) . '">Download</a>' ;
                }
                $returnValue .= '<a style="text-decoration:none" class="btn btn-warning actionBtn" href="' . route('report_delete_report', ['id' => $row->id]) . '"' .
                    'onclick="return confirm(\'Do you want to delete this report?\')">Delete</a>' .
                    '</div>';
                return $returnValue;
            })->rawColumns(['checkbox','action']);

    }

    /**
     * Get the query object to be processed by dataTables.
     *
     * @return \Illuminate\Database\Eloquent\Builder|Builder|Collection
     */
    public function query()
    {

        $query = Auth::user()->reports()->where('pulled_by',null)->orderBy('created_at', 'desc');
        return $this->applyScopes($query);
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\Datatables\Html\Builder
     */
    public function html()
    {

        $params['order'] = [[1, 'desc']];
        $params['lengthMenu'] =  [[10, 30, 75, -1], [10, 30, 75, "All"]];
        return $this->builder()
            ->addCheckbox(['title'=>'<input type="checkbox" name="select_all" id="check_all" value="1"/>'])
            ->columns($this->getColumns())
            ->ajax('')
            ->addAction(['width' => '150px'])
            ->dom('Bfrtip')
            ->buttons(
                Button::make('export'),
                Button::make('print'),
                Button::make('reset'),
                Button::make('reload')
            );
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
            'created_at',
            'name' =>['title'=>'Report Name'],
            'from_date' =>['title'=>'Report From'],
            'to_date' =>['title'=>'Report To'],
            'status'
        ];
    }

    /**
     * Get filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'reporting_' . time();
    }
}
