<?php

namespace App\Http\Controllers\Operadores;

use App\Http\Controllers\Controller;
use App\Http\Resources\DefaultCollection;
use App\Http\Resources\DefaultResource;
use App\Models\Promociones;
use Carbon\Carbon;
use Illuminate\Http\Request;

class PromocionesController extends Controller
{
    public function index(): DefaultCollection
    {
        $size = request('page.size', 10);
        $page = request('page.number', 1);

        $sort = request('sort', null);

        $result = Promociones::select(
            'id',
            'titulo',
            'slug',
            'subtitulo',
            'fecha_desde',
            'fecha_hasta',
            'estado',
            'orden',
            'all_dias',
            'all_estaciones',
            'operadores',
            'copete',
            'descripcion',
            'popup',
            'id as image_large_getter'
        )
            ->where('operadores', true)
            ->where('estado', true)
            ->where('fecha_desde', '<=', Carbon::now())
            ->where('fecha_hasta', '>=', Carbon::now()->subDay())
            ->applySorts($sort, 'id')
            ->filterLike(request('filter', []))
            ->ordenar()
            ->paginate($size, ['id'], 'page[number]', $page);

        return DefaultCollection::make($result);
    }

    public function show($id)
    {
        $result = Promociones::query()
            ->select(
                'id',
                'titulo',
                'slug',
                'subtitulo',
                'fecha_desde',
                'fecha_hasta',
                'estado',
                'orden',
                'all_dias',
                'all_estaciones',
                'operadores',
                'copete',
                'descripcion',
                'popup',
                'id as image_large_getter'
            )
            ->where('id', $id)
            ->where('operadores', true)
            ->where('estado', true)
            ->where('fecha_desde', '<=', Carbon::now())
            ->where('fecha_hasta', '>=', Carbon::now())
            ->first();

        $result->archivos = $result->getFiles('operadores');
        $result->terminos = $result->file('archivo');

        $result->imagen = $result->imagen();


        return $result;
    }
}
