<?php
session_start();
header('Content-Type: application/json; charset=UTF-8');

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

function json_response($data, $code = 200) {
    http_response_code($code);
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    if (!isset($_SESSION['user']['codempleado'])) {
        json_response(['success' => false, 'message' => 'No autorizado'], 401);
    }

    $database = new Database();
    $conn = $database->getConnection();

    // Obtener la empresa del usuario logueado
    $stmt_empresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmt_empresa->execute([$_SESSION['user']['codempleado']]);
    $resultado_empresa = $stmt_empresa->fetch(PDO::FETCH_ASSOC);
    if (!$resultado_empresa || !$resultado_empresa['codempresa']) {
        json_response(['success' => false, 'message' => 'No se encontró empresa del usuario'], 403);
    }
    $codempresaUsuario = $resultado_empresa['codempresa'];

    // Validar campos requeridos
    $required_fields = ['nombres_ap_raz_soc', 'tipo_documento', 'nro_documento'];
    foreach ($required_fields as $field) {
        if (empty($_POST[$field])) {
            json_response(['success' => false, 'message' => "El campo {$field} es requerido"], 400);
        }
    }

    // Verificar si ya existe un registro con el mismo documento
   // $stmt_check = $conn->prepare("SELECT id FROM timportventas WHERE nro_documento = ? AND codempresa = ?");
   // $stmt_check->execute([$_POST['nro_documento'], $codempresaUsuario]);
   // if ($stmt_check->fetch()) {
   //     json_response(['success' => false, 'message' => 'Ya existe un registro con este número de documento'], 400);
   // }

    // Preparar datos para inserción
    $fecha_creacion = date('Y-m-d');
    $fecha_edicion = date('Y-m-d');
    
    // Campos de la tabla timportventas
    $fields = [
        'fecha_creacion' => $fecha_creacion,
        'fecha_edicion' => $fecha_edicion,
        'agente' => $_POST['agente'] ?? null,
        'estado' => $_POST['estado'] ?? null,
        'nombres_ap_raz_soc' => $_POST['nombres_ap_raz_soc'],
        'tipo_documento' => $_POST['tipo_documento'],
        'nro_documento' => $_POST['nro_documento'],
        'celular' => $_POST['celular'] ?? null,
        'correo' => $_POST['correo'] ?? null,
        'paquete_contratado' => $_POST['paquete_contratado'] ?? null,
        'tipo_venta' => $_POST['tipo_venta'] ?? null,
        'ugis' => $_POST['ugis'] ?? null,
        'tecnologia' => $_POST['tecnologia'] ?? null,
        'total_decos' => !empty($_POST['total_decos']) ? intval($_POST['total_decos']) : null,
        'full_claro' => $_POST['full_claro'] ?? null,
        'cargo_fijo' => !empty($_POST['cargo_fijo']) ? floatval($_POST['cargo_fijo']) : null,
        'departamento' => $_POST['departamento'] ?? null,
        'provincia' => $_POST['provincia'] ?? null,
        'distrito' => $_POST['distrito'] ?? null,
        'direccion' => $_POST['direccion'] ?? null,
        'sec' => $_POST['sec'] ?? null,
        'fecha_sec' => !empty($_POST['fecha_sec']) ? $_POST['fecha_sec'] : null,
        'sot' => $_POST['sot'] ?? null,
        'fecha_instalacion' => !empty($_POST['fecha_instalacion']) ? $_POST['fecha_instalacion'] : null,
        'estado_sot' => $_POST['estado_sot'] ?? null,
        'codigodepago' => $_POST['codigodepago'] ?? null,
        'codempleado' => $_SESSION['user']['codempleado'],
        'codempresa' => $codempresaUsuario
    ];

    // Construir query de inserción
    $columns = array_keys($fields);
    $placeholders = array_fill(0, count($columns), '?');
    $values = array_values($fields);

    $query = "INSERT INTO timportventas (" . implode(', ', $columns) . ") VALUES (" . implode(', ', $placeholders) . ")";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($values);

    $nuevo_id = $conn->lastInsertId();

    json_response([
        'success' => true, 
        'message' => 'Venta guardada correctamente',
        'id' => $nuevo_id
    ]);

} catch (PDOException $e) {
    json_response(['success' => false, 'message' => 'Error de base de datos: ' . $e->getMessage()], 500);
} catch (Exception $e) {
    json_response(['success' => false, 'message' => 'Error del servidor: ' . $e->getMessage()], 500);
}
?>
