<?php

namespace App\Http\Controllers;

use Illuminate\Contracts\View\View;

class ContentController extends Controller
{
    public function softwarePrestamos(): View
    {
        return view('content.software-para-prestamos', $this->seo(
            slug: 'software-para-prestamos',
            title: 'Software para préstamos y microcrédito | Credify GO!',
            heading: 'Software para préstamos y microcrédito',
            description: 'Software para prestamistas: crea créditos, registra abonos desde el celular con o sin internet y controla tu cartera y la mora. Prueba Credify GO! gratis 14 días.',
            faqs: [
                ['q' => '¿Necesito internet para registrar los pagos?', 'a' => 'No. La app funciona sin conexión: registras los abonos en la calle y se sincronizan solos cuando el celular vuelve a tener señal.'],
                ['q' => '¿Sirve para cualquier tipo de crédito?', 'a' => 'Sí. Configuras el monto, el interés, el número de cuotas y la periodicidad (diaria, semanal, quincenal o mensual) según cómo prestes.'],
                ['q' => '¿Puedo tener varios cobradores?', 'a' => 'Sí. Creas usuarios para dueño, supervisor y cobradores, cada uno con permisos y con acceso solo a lo que le corresponde.'],
                ['q' => '¿Cada negocio ve solo su información?', 'a' => 'Sí. Los datos de cada negocio están aislados; nadie ve la cartera ni los clientes de otro.'],
            ],
        ));
    }

    public function softwareCobranza(): View
    {
        return view('content.software-de-cobranza', $this->seo(
            slug: 'software-de-cobranza',
            title: 'Software de cobranza y recaudo · App para cobradores | Credify GO!',
            heading: 'Software de cobranza y recaudo',
            description: 'App de cobranza para tu equipo: la ruta de cobros del día, registro de abonos sin internet y comprobante al instante. Controla el recaudo desde el celular. Prueba gratis.',
            faqs: [
                ['q' => '¿El cobrador puede trabajar sin señal?', 'a' => 'Sí. Registra los abonos sin conexión y todo se sincroniza al reconectar, sin perder ningún dato.'],
                ['q' => '¿El cobrador ve toda la cartera o solo su ruta?', 'a' => 'Solo lo suyo: cada cobrador ve únicamente los clientes y cobros de su ruta.'],
                ['q' => '¿Cómo entrego el comprobante al cliente?', 'a' => 'La app genera un comprobante digital que puedes compartir al instante, por ejemplo por WhatsApp.'],
                ['q' => '¿Puedo ver cuánto recaudó cada cobrador hoy?', 'a' => 'Sí. El dueño y el supervisor ven el recaudo del día por cobrador en tiempo real.'],
            ],
        ));
    }

    public function gestionCartera(): View
    {
        return view('content.gestion-de-cartera', $this->seo(
            slug: 'gestion-de-cartera',
            title: 'Gestión y control de cartera de créditos | Credify GO!',
            heading: 'Gestión y control de cartera de créditos',
            description: 'Controla tu cartera de créditos: saldo por cobrar, mora y recaudo del día en un tablero claro. Toma decisiones con datos. Prueba Credify GO! gratis 14 días.',
            faqs: [
                ['q' => '¿Qué indicadores de cartera puedo ver?', 'a' => 'Saldo por cobrar, recaudo del día, cartera en mora, cartera vencida y la evolución de tu patrimonio.'],
                ['q' => '¿Cómo sé qué créditos están en mora?', 'a' => 'La app marca automáticamente los créditos atrasados y te alerta para que actúes a tiempo.'],
                ['q' => '¿Puedo ver la evolución semana a semana?', 'a' => 'Sí. Con los cortes diarios ves si tu cartera y tu mora mejoran o empeoran frente a la semana anterior.'],
                ['q' => '¿Funciona si tengo cientos de créditos?', 'a' => 'Sí. El tablero resume la cartera completa sin importar cuántos créditos manejes.'],
            ],
        ));
    }

    public function comoAdministrar(): View
    {
        return view('content.como-administrar-negocio-de-prestamos', $this->seo(
            slug: 'como-administrar-negocio-de-prestamos',
            title: 'Cómo administrar un negocio de préstamos: guía práctica | Credify GO!',
            heading: 'Cómo administrar un negocio de préstamos',
            description: 'Guía práctica para administrar un negocio de préstamos: organiza créditos y cobros, controla la mora, cuida tu caja y crece sin perder el control.',
            faqs: [
                ['q' => '¿Puedo empezar con un cuaderno o Excel?', 'a' => 'Al principio sí, pero se queda corto rápido: sin control de mora, sin app móvil y con riesgo de errores. Puedes dar el salto cuando el volumen lo pida.'],
                ['q' => '¿Cómo controlo la mora?', 'a' => 'Registrando cada crédito y su fecha de pago, y revisando a diario quién se atrasó para gestionarlo de inmediato.'],
                ['q' => '¿Cómo sé si de verdad estoy ganando?', 'a' => 'Separando el recaudo (lo que entra) de la ganancia real (intereses menos gastos y cartera perdida). No es lo mismo.'],
                ['q' => '¿Cuándo conviene usar un software?', 'a' => 'Cuando tienes varios clientes o cobradores y el control manual empieza a fallar: ahí un software te da orden y visibilidad.'],
            ],
        ));
    }

    public function excel(): View
    {
        return view('content.control-de-prestamos-excel', $this->seo(
            slug: 'control-de-prestamos-excel',
            title: '¿Llevas tus préstamos en Excel? Pásate a una app | Credify GO!',
            heading: 'Del Excel a una app para tus préstamos',
            description: 'Llevar préstamos en Excel se queda corto: sin app móvil, sin control de mora y con errores. Descubre la alternativa para gestionar créditos y cobros. Prueba gratis.',
            faqs: [
                ['q' => '¿Puedo pasar mis datos del Excel?', 'a' => 'Empezar es rápido: creas tus clientes y créditos activos en pocos minutos y sigues desde ahí, ahora con app móvil y control de mora.'],
                ['q' => '¿Es más caro que Excel?', 'a' => 'Puedes probarlo gratis 14 días. Después eliges un plan según tu tamaño; lo que ahorras en errores y tiempo lo compensa.'],
                ['q' => '¿Necesito saber de tecnología?', 'a' => 'No. Está pensada para usarse desde el celular, sin conocimientos técnicos.'],
                ['q' => '¿Funciona en el celular?', 'a' => 'Sí. Es una app que funciona en el celular incluso sin internet, algo que una hoja de Excel no te da.'],
            ],
        ));
    }

    /**
     * @param  list<array{q: string, a: string}>  $faqs
     * @return array{title: string, description: string, heading: string, url: string, faqs: list<array{q: string, a: string}>, schema: array<string, mixed>}
     */
    private function seo(string $slug, string $title, string $heading, string $description, array $faqs): array
    {
        $url = 'https://credifygo.com/'.$slug;

        $graph = [
            [
                '@type' => 'Article',
                'headline' => $heading,
                'description' => $description,
                'inLanguage' => 'es',
                'mainEntityOfPage' => $url,
                'image' => 'https://credifygo.com/og-image.png',
                'author' => ['@type' => 'Organization', 'name' => 'Credify GO!'],
                'publisher' => [
                    '@type' => 'Organization',
                    'name' => 'Credify GO!',
                    'logo' => ['@type' => 'ImageObject', 'url' => 'https://credifygo.com/og-image.png'],
                ],
            ],
            [
                '@type' => 'BreadcrumbList',
                'itemListElement' => [
                    ['@type' => 'ListItem', 'position' => 1, 'name' => 'Inicio', 'item' => 'https://credifygo.com/'],
                    ['@type' => 'ListItem', 'position' => 2, 'name' => $heading, 'item' => $url],
                ],
            ],
            [
                '@type' => 'FAQPage',
                'mainEntity' => array_map(fn (array $f) => [
                    '@type' => 'Question',
                    'name' => $f['q'],
                    'acceptedAnswer' => ['@type' => 'Answer', 'text' => $f['a']],
                ], $faqs),
            ],
        ];

        $schema = ['@context' => 'https://schema.org', '@graph' => $graph];

        return compact('title', 'description', 'heading', 'url', 'faqs', 'schema');
    }
}
