<?php

namespace App\DataTables;

use App\Annexure_Status;
use App\Department;
use App\UsersDb;
use App\CoiUsers;
use App\Division;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
use Yajra\DataTables\Html\Editor\Fields;
use Yajra\DataTables\Html\Editor\Editor;

class AnnexDatatable extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables($query)
            ->addColumn('is_director', function ($query) {
                if ($query->is_director == 1) {
                    return 'Yes';
                } else {
                    return 'No';
                }
            })
            ->addColumn('created_at', function ($query) {
                return  $query->created_at;
                // return  $query->starttime;
            })

            ->addColumn('updated_on', function ($query) {

                return $query->updated_at;
            })
            ->editColumn('coi_status', function ($query) {
                // if($query->coi_status() !== null){
                if (strtolower($query->coi_status) == 'agree') {
                    return '<label class="badge badge-success">Accepted</label>';
                    // }else{
                    // return '<label class="badge badge-info text-center">Pending Acceptance</label>';
                    // }

                } else {
                    return null;
                }
            })
            ->editColumn('status', function ($query) {
                if ($query->status !== null) {
                    if (strtolower($query->status) == 'pending') {
                        return '<label class="badge badge-primary text-white">Started</label>';
                    } else if (strtolower($query->status) == 'completed') {
                        return '<label class="badge badge-success text-center">Completed</label>';
                    } else if (strtolower($query->status) == 'updated') {
                        return '<label class="badge badge-tertiary text-center">Updated</label>';
                    } else if (strtolower($query->status) == 'updatedfromlastyear') {
                        return '<label class="badge badge-success text-center">Completed</label>';
                    }
                } else {
                    return null;
                }


            })

            ->addColumn('action', function ($query) {

                return '
                                  <div style="display: flex;">
                                  <button class="btn btn-primary btn-sm mr-3" data-toggle="tooltip" data-placement="top" title="View" style="margin-right:10px !important;"><a href="' . route('view.coi.annex', $query->id) . '"><span class="fa fa-eye text-white"></span></a></button>
                                  <a class="btn btn-success btn-sm delete-form"  href="' . route('download.coi.annex', $query->id) . '"><span class="fa fa-download text-white"></span></a>
                                  </div>

                 ';


            })
            ->rawColumns(['coi_status', 'action', 'status']);
    }

    /**
     * Get query source of dataTable.
     *
     * @param Student $model
     * @return Builder
     */
    public function query()
    {
        $current_year = Carbon::now()->year;
        // $query = DB::select('SELECT * FROM coi_users WHERE YEAR(created_at) = YEAR(CURDATE()) AND coi_status is not null AND deleted_at is null order by id desc');
        $query = DB::table('coi_users')
        ->whereNotNull('dept')
        ->whereNotNull('status')
        ->whereNull('deleted_at')
        ->whereRaw("YEAR(created_at) = $current_year")
        ->latest();
        // ->get();

        return $this->applyScopes($query);
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()

            ->setTableId('student_dataTable')
            ->columns($this->getColumns())
            ->minifiedAjax()
            ->dom('Bfrtip')
            ->orderBy(0)
            ->buttons(
                Button::make('export'),
                Button::make('print')
                // Button::make('reset'),
                // Button::make('reload')
            );
    }

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

            Column::make('updated_at')->visible(false)->exportable(false)
                ->printable(false),
            Column::make('name'),
            Column::make('division'),
            Column::make('dept'),
            Column::make('is_director')->title('Is He/She a Director'),
            Column::make('coi_status')->title('COI Status'),
            Column::make('status')->title('Annexure Status'),
            Column::make('created_at')->title('Date'),
            Column::make('updated_on')->title('Last Date Updated'),
            Column::computed('action')
                ->exportable(false)
                ->printable(false)
                ->width(60)
                ->addClass('text-center'),
        ];
    }

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