<?php

namespace App\DataTables;

use App\Client;
use App\User;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Services\DataTable;

class ClientDataTable extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables($query)
            ->addColumn('action', function ($query){
                $action = '<div class="btn-group">'.
                                '<a class="btn btn-info btn-xs" title="View '.$query->name().'" href="'.route('clients.view',['id'=>$query->id]).'"><i class="fa fa-eye"></i></a>'.
                                '<a class="btn btn-primary btn-xs verify" title="View '.$query->name().'" href="'.route('clients.validate',['id'=>$query->id]).'"><i class="fa fa-shield"></i></a>'.
//                                '<a class="btn btn-primary btn-xs '.(Auth::user()->role_id == 2 ? 'hidden' : '').'" href="'.route('root.users.edit',['id'=>$query->id]).'"><i class="fa fa-pencil"></i></a>'.
//                                '<a class="btn btn-danger btn-xs '.(Auth::user()->role_id == 2 ? 'hidden' : '').'" href="'.route('root.users.destroy',['id'=>$query->id]).'" onclick="return confirm(\'Do you want to delete this user?\')"><i class="fa fa-trash"></i></a>'.
                            '</div>';
                return $action;
            })
            ->addColumn('full_name', function ($query){
               return $query->name();
            });
    }

    /**
     * Get query source of dataTable.
     *
     * @param \App\Client $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query(Client $model)
    {
        return $model->newQuery()->latest();
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
                    ->columns($this->getColumns())
                    ->minifiedAjax()
                    ->addAction(['width' => '100px'])
                    ->parameters([

                        'dom'     => 'Bfrtip',
                        'order'   => [[0, 'desc']],
                        'buttons' => ['export',  'print', 'reset','reload']

                    ]);
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {

            return [
                'first_name',
                'last_name',
                'email',
                'phone_number',
                'gender',
                'unique_code',
                'otp',
                'status'
            ];
        }


    /**
     * Get filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'Client_' . date('YmdHis');
    }
}
