<?php

namespace App\Http\Livewire;

use App\Models\Article;
use App\Http\Livewire\Datatable;
use App\View\Datatable\Column;
use App\View\Datatable\BooleanColumn;
use App\View\Datatable\DateColumn;


class ArticleTable extends DataTable
{
    public function builder()
    {
        return Article::query()
            ->leftJoin('users', 'users.id', 'articles.user_id')
        ;
    }

    public function columns()
    {
        return [
            Column::name('title')
                ->label('Titre')
                ->searchable(),

            Column::name('enabled')
                ->label('Publié')
                ->callback(['id', 'title', 'enabled'], function ($id, $title, $enabled) {
                    return view('admin.articles.modal.button', ['id' => $id, 'title' => $title, 'enabled' => $enabled]);
                })->unsortable(),

            DateColumn::name('created_at')
                ->label('Crée le')
                ->format('d/m/Y'),

            Column::name('users.name')
                ->label('Auteur')
                ->searchable(),

            Column::callback(['id'], function ($id) {
                return view('components.table-actions', ['id' => $id, 'permissions' => ['articles.edit']]);
            })->unsortable()
        ];
    }
}