<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use App\Models\PontoTuristico;
use App\Models\Tipo;
use Illuminate\Http\Request;

class PublicPontoTuristicoController extends Controller
{
    public function index(Request $request)
    {
        $query = PontoTuristico::query();

        if ($request->has('search') && $request->search) {
            $query->where('nome', 'like', '%'.$request->search.'%')
                ->orWhere('descricao', 'like', '%'.$request->search.'%');
        }

        if ($request->has('status')) {
            $query->where('status', $request->status);
        }

        if ($request->has('tipo_id')) {
            $query->where('tipo_id', $request->tipo_id);
        }

        if ($request->has('cidade')) {
            $query->where('cidade', $request->cidade);
        }

        $pontos = $query->with(['imagens', 'tipo'])->where('status', 'ativo')->orderBy('nome')->paginate(15);
        $tipos = Tipo::where('ativo', true)->where('categoria', 'turismo')->orderBy('nome')->get();

        return view('pontos-turisticos.index', compact('pontos', 'tipos'));
    }

    public function show(PontoTuristico $ponto)
    {
        $ponto->load(['imagens', 'avaliacoes', 'criador', 'tipo']);

        $mediaAvaliacao = $ponto->avaliacoes()->avg('nota');
        $totalAvaliacoes = $ponto->avaliacoes()->count();

        return view('pontos-turisticos.show', compact('ponto', 'mediaAvaliacao', 'totalAvaliacoes'));
    }
}
