<?php

namespace App\Http\Controllers\Operadores;

use App\Http\Controllers\Controller;
use App\Http\Resources\DefaultCollection;
use App\Models\Admin\Interna;
use App\Models\Admin\Modulos;
use Illuminate\View\View;

class InternaController extends Controller
{
    public function index($slug_modulo)
    {

        $modulo = $this->getModulo($slug_modulo);
        if (!$modulo)
            return response([
                'message' => 'No existe',
                'redirect' => 1
            ]);

        $size = request('page.size', 10);
        $page = request('page.number', 1);

        $result = Interna::modulo($modulo->id)
            ->activo()
            ->noBorrador()
            ->where('operadores', true)
            ->selectFillableAnd(['id as image_large_getter'])
            ->filterLike(request('filter', []))
            ->applySorts(request('sort'))
            ->ordenar()
            ->fastPaginate(
                perPage: $size,
                columns: ['id'],
                page: $page,
                pageName: 'page[number]',
            )
            ->appends(request()->only('sort', 'page.size', 'filter'));

        return DefaultCollection::make($result);
    }

    private function getModulo(String $slug): ?Modulos
    {
        return  Modulos::slug($slug)
            ->activo()
            ->selectFillable()
            ->first();
    }

    public function show(String $slug_modulo, int $id)
    {
        $modulo = $this->getModulo($slug_modulo);

        if (!$modulo) abort(404);

        $result = Interna::where('id', $id)
            ->activo()
            ->where('operadores', true)
            ->with('secciones')
            ->noBorrador()
            ->selectFillableAnd(['id as image_large_getter'])
            ->first();

        $result->archivos = $result->getFiles('operadores');
        return $result;
    }
}
