<?php
require_once 'config.php';
require_once 'middleware.php';

header('Content-Type: application/json; charset=utf-8');

$negocio_id = validarToken();
$method     = $_SERVER['REQUEST_METHOD'];
$db         = getDB();

if ($method === 'GET') {
    $stmt = $db->prepare(
        'SELECT dia_semana, hora_apertura, hora_cierre, cerrado
         FROM horarios WHERE negocio_id = ? ORDER BY dia_semana'
    );
    $stmt->execute([$negocio_id]);
    $rows = [];
    foreach ($stmt->fetchAll() as $h) {
        $rows[$h['dia_semana']] = $h;
    }

    $resultado = [];
    for ($i = 0; $i <= 6; $i++) {
        $resultado[] = $rows[$i] ?? [
            'dia_semana'    => $i,
            'hora_apertura' => '09:00:00',
            'hora_cierre'   => '18:00:00',
            'cerrado'       => 0,
        ];
    }
    jsonResponse($resultado);
}

if ($method === 'PUT') {
    $data = getJsonInput();

    if (!is_array($data) || count($data) !== 7) {
        jsonResponse(['error' => 'Se requieren exactamente 7 días (0=Dom … 6=Sáb)'], 400);
    }

    $stmt = $db->prepare(
        'INSERT INTO horarios (negocio_id, dia_semana, hora_apertura, hora_cierre, cerrado)
         VALUES (?, ?, ?, ?, ?)
         ON DUPLICATE KEY UPDATE
             hora_apertura = VALUES(hora_apertura),
             hora_cierre   = VALUES(hora_cierre),
             cerrado       = VALUES(cerrado)'
    );

    foreach ($data as $dia) {
        $d       = (int)($dia['dia_semana'] ?? -1);
        $cerrado = (int)(bool)($dia['cerrado'] ?? false);

        if ($d < 0 || $d > 6) {
            jsonResponse(['error' => "dia_semana fuera de rango: $d"], 400);
        }

        $apertura = null;
        $cierre   = null;

        if (!$cerrado) {
            $apertura = $dia['hora_apertura'] ?? '09:00';
            $cierre   = $dia['hora_cierre']   ?? '18:00';
            if ($cierre <= $apertura) {
                jsonResponse(['error' => "Día $d: hora_cierre debe ser posterior a hora_apertura"], 400);
            }
        }

        $stmt->execute([$negocio_id, $d, $apertura, $cierre, $cerrado]);
    }

    jsonResponse(['ok' => true]);
}

jsonResponse(['error' => 'Método no permitido'], 405);
