<?php

namespace App\DataTables;

use App\AdminModel;
use App\UserDetails;
use App\Users;
use App\EvaluationSheet;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
use Yajra\DataTables\Html\Editor\Fields;
use Illuminate\Support\Facades\Session;
use Yajra\DataTables\Html\Editor\Editor;
use Illuminate\Support\Facades\DB;

class ApplicationAssignments extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables($query)

            ->addColumn('created_at', function ($query) {
                return date('l M d, Y', strtotime($query->created_at));
            })



            ->addColumn('projectanalyst_id', function ($query) {
              $admin = AdminModel::where('id',$query->projectanalyst_id)->first();
              if ($admin !==null) {
                return $admin->name??'N/A';
              }else {
                return 'N/A';
              }
            })
            ->addColumn('creditanalyst_id', function ($query) {
              $admin = AdminModel::where('id',$query->creditanalyst_id)->first();
              if ($admin !==null) {
                return $admin->name??'N/A';
              }else {
                return 'N/A';
              }
            })

                      ->editColumn('is_disqualified', function ($query) {

                        if ($query->is_disqualified === null) {
                          return  '<label class="badge badge-warning text-white">Started</label>';
                        }elseif ($query->is_disqualified === 0)  {
                            return  '<label class="badge badge-success text-white">Pending Evaluation</label>';

                      }elseif ($query->is_disqualified === 1||$query->is_disqualified === 3)  {
                        return  '<label class="badge badge-danger text-white">Rejected</label>';
                        }
                        elseif ($query->is_disqualified === 2)  {
                          return  '<label class="badge badge-danger text-white">Under Review</label>';
                        }elseif ($query->is_disqualified === 4)  {
                            return  '<label class="badge badge-success text-white">Qualified Application</label>';
                            }



                      })

->addColumn('action', function ($query) {
  $proj = AdminModel::where('role','2')->get();
                $projlist = '<option ></option>';
                foreach ($proj as $projs) {
                  if ($query->projectanalyst_id==$projs->id) {
                    $projlist .= '<option selected  value="'.$projs->id.'">'.$projs->name.'</option>';
                  }else {
                    $projlist .= '<option   value="'.$projs->id.'">'.$projs->name.'</option>';
                  }

                }


                $credit = AdminModel::where('role','3')->get();
                              $creditlist = '<option ></option>';
                              foreach ($credit as $credits) {
                                if ($query->creditanalyst_id==$credits->id) {
                                  $creditlist .= '<option selected value="'.$credits->id.'">'.$credits->name.'</option>';
                                }else {
                                  $creditlist .= '<option  value="'.$credits->id.'">'.$credits->name.'</option>';
                                }


                              }
                              if ($query->is_application_complete ==1) {
                                return '<a class="btn btn-sm btn-outline-primary"   data-toggle="modal" data-target="#modal_2'.$query->id.'" href="#">Reassign Resource</a>

                                <div class="modal  fade" id="modal_2'.$query->id.'" tabindex="-1" role="dialog" aria-labelledby="modal_1" aria-hidden="true">
                                    <div class="modal-dialog modal-md" role="document">
                                        <div class="modal-content">
                                        <div class="modal-header"><h6 class="heading h6">Reassign '.$query->applicant_name.'s'.' Application </h6></div>
                                            <div class="modal-body">
                                                <div class="row justify-content-center">
                                                    <div class="col-lg-11 text-center py-4">
                                                        <form  action="'.route('admin.reassing.post',$query->id).'" method="post">
                                                        '.csrf_field().'
                                                        <div class="form-group">
                                                          <label for="">Project Assistants</label>
                                                          <select class="form-control" name="proj">
                                '.$projlist.'
                                                          </select>
                                                        </div>
                                                        <div class="form-group">
                                                          <label for="">Credit Analyst</label>
                                                          <select class="form-control" name="credit">
                                '.$creditlist.'
                                                          </select>
                                                        </div>

                                                          <div class="text-center">
                                                            <button style="background:#f9971a;" type="submit" class="btn text-white btn-sm col-lg-7" name="button">Reassign Application</button>
                                                          </div>
                                                        </form>


                                                    </div>

                                                </div>
                                                  <div class="modal-footer"><button type="button" class="btn btn-sm btn-default" data-dismiss="modal">Cancel</button></div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                ';
                              }else {
                              return '<a class=" disabled btn btn-sm btn-outline-primary" disabled   data-toggle="modal" data-target="#modal_2'.$query->id.'" href="#">Reassign Resource</a>';
                              }


})
            ->rawColumns(['application_status','action','is_disqualified']);
    }

    /**
     * Get query source of dataTable.
     *
     * @param \App\App\DashboardTable $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query()
    {
        $query = DB::select("select users.is_application_complete as is_application_complete,users.application_funds as application_funds,users.id as id,userdetails.name as applicant_name,users.updated_at as updated_at,users.company_name as company_name,userdetails.email as email,userdetails.phone as business_phone,users.is_disqualified as is_disqualified,users.projectanalyst_id as projectanalyst_id,users.creditanalyst_id as creditanalyst_id,users.created_at as created_at from users,userdetails where users.user_id = userdetails.id and users.`is_application_complete`=1 and users.`is_disqualified` in (0,2)");
        return $this->applyScopes($query);
    }

    // public function query()
    // {
    //   if (Session::get('adminrole') == 1) {
    //     $query = DB::select("select * from users");
    //     return $this->applyScopes($query);
    //   }elseif (Session::get('adminrole') == 2) {
    //     $query = DB::select("select * from users where is_disqualified = 0 or is_disqualified =2");
    //     return $this->applyScopes($query);
    //   }elseif (Session::get('adminrole') == 3) {
    //     $query = DB::select("select * from users where is_qualified");
    //     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('dashboardtable-table')
                    ->columns($this->getColumns())
                    ->minifiedAjax()
                     ->dom('Bfrtip')
                    ->orderBy(0)
                    ->buttons(
                        Button::make('export'),
                        Button::make('print')
                        // Button::make('reset'),
                    );
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
          Column::make('updated_at')->visible(false)->exportable(false)
                    ->printable(false),
            Column::make('applicant_name'),
            // Column::make('company_name'),
            Column::make('company_name'),
            Column::make('email'),
            Column::make('business_phone'),
            Column::make('application_funds')->title('Application Type'),
            // Column::make('is_stage_complete'),
            Column::make('is_disqualified')->title('Application Status'),
            Column::make('projectanalyst_id')->title('Project Asst. Assigned'),
            Column::make('creditanalyst_id')->title('Credit Analyst Assigned'),
            Column::make('created_at')->title('Date Applied'),
            // Column::make('application_status'),
            Column::computed('action')
                   ->exportable(false)
                   ->printable(false)
                  ->width(60)
                  ->addClass('text-center'),
        ];
    }

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