<?php

namespace App\Http\Controllers;

use App\Mail\DenunciaSeguimientoMail;
use App\Models\Denuncia;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;

class DenunciaSeguimientoController extends Controller
{
    public function store(Request $request, Denuncia $denuncia)
    {
        $request->validate([
            'estado' => 'required|string|max:100',
            'observacion' => 'required|string',
            'visible_denunciante' => 'required|boolean',
        ]);

        DB::beginTransaction();

        try {
            $seguimiento = $denuncia->seguimientos()->create([
                'user_id' => auth()->id(),
                'estado' => $request->estado,
                'observacion' => $request->observacion,
                'visible_denunciante' => $request->boolean('visible_denunciante'),
            ]);

            $denuncia->update([
                'estado_actual' => $request->estado,
            ]);

            if (
                $denuncia->correo_electronico &&
                $request->boolean('visible_denunciante')
            ) {
                Mail::to($denuncia->correo_electronico)
                    ->send(new DenunciaSeguimientoMail($denuncia, $seguimiento));
            }

            DB::commit();

            return redirect()
                ->route('denuncias.show', $denuncia->id)
                ->with('success', 'Seguimiento registrado correctamente.');

        } catch (\Throwable $e) {
            DB::rollBack();

            return back()->withErrors([
                'error' => 'No se pudo registrar el seguimiento: ' . $e->getMessage(),
            ]);
        }
    }//
}
