<?php

namespace App\Http\Livewire;

use App\Models\Publication;
use App\Http\Livewire\Datatable;
use App\View\Datatable\Column;

class PublicationTable extends DataTable
{
    public function builder()
    {
        if (auth()->user()->commune) {
            return Publication::query()
                ->leftJoin('participations', 'participations.id', 'publications.participation_id')
                ->leftJoin('forums', 'forums.id', 'participations.forum_id')
                ->leftJoin('communes', 'communes.id', 'participations.commune_id')
                ->where('communes.id', auth()->user()->commune['id'])
            ;
        }
        return Publication::query()
            ->leftJoin('participations', 'participations.id', 'publications.participation_id')
            ->leftJoin('forums', 'forums.id', 'participations.forum_id')
            ->leftJoin('communes', 'communes.id', 'participations.commune_id')
        ;
    }

    public function columns()
    {
        return [
            Column::name('forums.annee')
                ->label('Forum')
                ->searchable(),

            Column::name('communes.name')
                ->label('Commune')
                ->searchable(),

            Column::name('title')
                ->label('Titre document')
                ->searchable(),

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