<?php

declare(strict_types=1);

namespace App\Repositories;

use PDO;

class TiendaRepository
{
    private PDO $db;

    public function __construct(PDO $db)
    {
        $this->db = $db;
    }

    public function buscarPorId(int $id): ?array
    {
        $stmt = $this->db->prepare('SELECT * FROM tiendas WHERE id = :id');
        $stmt->execute(['id' => $id]);
        $tienda = $stmt->fetch();

        return $tienda ?: null;
    }

    public function todas(): array
    {
        $stmt = $this->db->query('SELECT * FROM tiendas ORDER BY nombre');

        return $stmt->fetchAll();
    }

    public function crear(array $datos): int
    {
        $stmt = $this->db->prepare(
            'INSERT INTO tiendas (usuario_id, zona_id, nombre, direccion, lat, lng, telefono, horario_apertura, horario_cierre, created_at)
             VALUES (:usuario_id, :zona_id, :nombre, :direccion, :lat, :lng, :telefono, :horario_apertura, :horario_cierre, NOW())'
        );
        $stmt->execute($datos);

        return (int) $this->db->lastInsertId();
    }

    public function actualizar(int $id, array $datos): void
    {
        $datos['id'] = $id;
        $stmt = $this->db->prepare(
            'UPDATE tiendas SET nombre = :nombre, direccion = :direccion, lat = :lat, lng = :lng,
             telefono = :telefono, horario_apertura = :horario_apertura, horario_cierre = :horario_cierre,
             zona_id = :zona_id WHERE id = :id'
        );
        $stmt->execute($datos);
    }
}
