<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

require_once(__DIR__ . '/../config.php');

 $data = json_decode(file_get_contents("php://input"), true);

if (!isset($data['ID_EMPRESA']) || empty($data['ID_EMPRESA'])) {
    http_response_code(400); // Bad Request
    echo json_encode(["success" => false, "message" => "El ID de la empresa es requerido para actualizar."]);
    exit;
}

 $required_fields = [
    'NOMBRE_EMPRESA', 'RUT_EMPRESA', 'CORREO_EMPRESA', 
    'TELEFONO_EMPRESA', 'DIRECCION_EMPRESA', 'ESTADO_EMPRESA'
];

foreach ($required_fields as $field) {
    if (!isset($data[$field]) || trim($data[$field]) === '') {
        http_response_code(400);
        echo json_encode(["success" => false, "message" => "Datos incompletos: el campo '$field' es requerido."]);
        exit;
    }
}


 $id = $mysqli->real_escape_string($data['ID_EMPRESA']);
 $rut = trim($data['RUT_EMPRESA']);

 $sql_check_rut = "SELECT ID_EMPRESA FROM EMPRESA_CLIENTE WHERE RUT_EMPRESA = ? AND ID_EMPRESA != ?";
 $stmt_check = $mysqli->prepare($sql_check_rut);

if ($stmt_check === false) {
    http_response_code(500);
    echo json_encode(["success" => false, "message" => "Error al preparar la consulta de RUT: " . $mysqli->error]);
    exit;
}

 $stmt_check->bind_param("si", $rut, $id);
 $stmt_check->execute();
 $result_check = $stmt_check->get_result();

if ($result_check->num_rows > 0) {
    http_response_code(409);
    echo json_encode(["success" => false, "message" => "El RUT de la empresa ya está registrado en otra empresa."]);
    $stmt_check->close();
    exit;
}

 $stmt_check->close();



 $imagePath = $data['FOTO_EMPRESA']; 


if (!empty($data['FOTO_EMPRESA']) && preg_match('/^data:image\/(\w+);base64,/', $data['FOTO_EMPRESA'])) {
    
    $base64Image = $data['FOTO_EMPRESA'];
    

    if (preg_match('/^data:image\/(\w+);base64,/', $base64Image, $matches)) {
        $imageType = $matches[1];
        $base64Data = substr($base64Image, strpos($base64Image, ',') + 1);
        $decodedImage = base64_decode($base64Data);

        if ($decodedImage === false) {
            http_response_code(400);
            echo json_encode(["success" => false, "message" => "La imagen enviada no es válida."]);
            exit;
        }

   
        $uploadDir = __DIR__ . '/uploads/empresas/';
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true); 
        }


        $fileName = 'empresa_' . uniqid() . '.' . $imageType;
        $filePath = $uploadDir . $fileName;

    
        if (file_put_contents($filePath, $decodedImage)) {
            $imagePath = 'uploads/empresas/' . $fileName;
        } else {
            http_response_code(500);
            echo json_encode(["success" => false, "message" => "Error al guardar la imagen en el servidor."]);
            exit;
        }
    }
}


 $sql = "UPDATE EMPRESA_CLIENTE SET 
            NOMBRE_EMPRESA = ?, 
            RUT_EMPRESA = ?, 
            CORREO_EMPRESA = ?, 
            TELEFONO_EMPRESA = ?, 
            DIRECCION_EMPRESA = ?, 
            FOTO_EMPRESA = ?, 
            ESTADO_EMPRESA = ?
        WHERE ID_EMPRESA = ?";

 $stmt = $mysqli->prepare($sql);

if ($stmt === false) {
    http_response_code(500);
    echo json_encode(["success" => false, "message" => "Error al preparar la consulta: " . $mysqli->error]);
    exit;
}


 $nombre = trim($data['NOMBRE_EMPRESA']);
 $correo = trim($data['CORREO_EMPRESA']);
 $telefono = trim($data['TELEFONO_EMPRESA']);
 $direccion = trim($data['DIRECCION_EMPRESA']);
 $estado = (int)$data['ESTADO_EMPRESA']; 


 $stmt->bind_param("sssssssi", $nombre, $rut, $correo, $telefono, $direccion, $imagePath, $estado, $id);


if ($stmt->execute()) {

    echo json_encode([
        "success" => true, 
        "message" => "Empresa actualizada exitosamente."
    ]);
} else {

    http_response_code(500);
    echo json_encode(["success" => false, "message" => "Error al ejecutar la consulta: " . $stmt->error]);
}


 $stmt->close();
 $mysqli->close();