<?php
/**
 * API para submissão de avaliações de produtos
 */

header('Content-Type: application/json');

require_once __DIR__ . '/../includes/config.php';

try {
    $pdo = getDB();
} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => 'Erro de conexão']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'message' => 'Método não permitido']);
    exit;
}

// Validar dados
$productId = intval($_POST['product_id'] ?? 0);
$storeId = intval($_POST['store_id'] ?? 0);
$rating = intval($_POST['rating'] ?? 0);
$authorName = trim($_POST['author_name'] ?? '');
$authorEmail = trim($_POST['author_email'] ?? '');
$comment = trim($_POST['comment'] ?? '');

// Validações
if (!$productId || !$storeId) {
    echo json_encode(['success' => false, 'message' => 'Produto inválido']);
    exit;
}

if ($rating < 1 || $rating > 5) {
    echo json_encode(['success' => false, 'message' => 'Selecione uma avaliação de 1 a 5 estrelas']);
    exit;
}

if (strlen($authorName) < 2) {
    echo json_encode(['success' => false, 'message' => 'Informe seu nome']);
    exit;
}

if (strlen($comment) < 10) {
    echo json_encode(['success' => false, 'message' => 'Escreva um comentário com pelo menos 10 caracteres']);
    exit;
}

// Verificar se produto existe
$stmt = $pdo->prepare("SELECT id FROM products WHERE id = ? AND store_id = ?");
$stmt->execute([$productId, $storeId]);
if (!$stmt->fetch()) {
    echo json_encode(['success' => false, 'message' => 'Produto não encontrado']);
    exit;
}

// Processar fotos (opcional)
$photos = [];
if (!empty($_FILES['photos']['name'][0])) {
    $uploadDir = __DIR__ . '/../uploads/reviews/' . $storeId . '/' . $productId . '/';
    if (!is_dir($uploadDir)) {
        mkdir($uploadDir, 0755, true);
    }
    
    $allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];
    $maxSize = 5 * 1024 * 1024; // 5MB
    
    foreach ($_FILES['photos']['tmp_name'] as $key => $tmpName) {
        if ($_FILES['photos']['error'][$key] !== UPLOAD_ERR_OK) continue;
        if (!in_array($_FILES['photos']['type'][$key], $allowedTypes)) continue;
        if ($_FILES['photos']['size'][$key] > $maxSize) continue;
        
        $ext = pathinfo($_FILES['photos']['name'][$key], PATHINFO_EXTENSION);
        $filename = uniqid('review_') . '.' . $ext;
        $filepath = $uploadDir . $filename;
        
        if (move_uploaded_file($tmpName, $filepath)) {
            $photos[] = '/uploads/reviews/' . $storeId . '/' . $productId . '/' . $filename;
        }
    }
}

$photosJson = !empty($photos) ? json_encode($photos) : null;

// Inserir avaliação (is_approved = 0 para moderação, ou 1 para aprovação automática)
// Vamos deixar aprovação automática por enquanto
$stmt = $pdo->prepare("
    INSERT INTO product_reviews (product_id, store_id, author_name, author_email, rating, comment, photos, is_approved, created_at)
    VALUES (?, ?, ?, ?, ?, ?, ?, 1, NOW())
");

$stmt->execute([
    $productId,
    $storeId,
    $authorName,
    $authorEmail ?: null,
    $rating,
    $comment,
    $photosJson
]);

echo json_encode([
    'success' => true,
    'message' => 'Avaliação enviada com sucesso!'
]);
