<?php
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/error_log_phpmailer.log');
error_reporting(E_ALL);

// PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once("../config/conexion.php");
require_once("../models/Colaborador.php");

require '../include/vendor/phpmailer/phpmailer/src/Exception.php';
require '../include/vendor/phpmailer/phpmailer/src/PHPMailer.php';
require '../include/vendor/phpmailer/phpmailer/src/SMTP.php';

function enviar_correo_acceso($email, $nombre, $password) {
    $mail = new PHPMailer(true);

    try {
        $mail->isSMTP();
        $mail->Host = 'mail.cadip.cl';
        $mail->SMTPAuth = true;
        $mail->Username = 'contacto@inf.cadip.cl';
        $mail->Password = 'cadip.2025*';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port = 465;

        $mail->setFrom('contacto@inf.cadip.cl', 'Cadip');
        $mail->addAddress($email, $nombre);

        $mail->isHTML(true);
        $mail->Subject = 'Acceso a Cadip';
        $mail->Body = "
            <p>Hola <strong>{$nombre}</strong>,</p>
            <p>Tu usuario ha sido creado o actualizado en <strong>Cadip</strong>.</p>
            <p>Ingresa en: <a href='https://inf.cadip.cl/colab.php'>https://inf.cadip.cl/colab.php</a></p>
            <p><strong>Contraseña:</strong> {$password}</p>
            <p>Fecha de creación: " . date("d/m/Y H:i") . "</p>
            <br>
            <p>Saludos,<br>Equipo Cadip</p>
        ";

        return $mail->send();
    } catch (Exception $e) {
        error_log("Error al enviar correo: " . $mail->ErrorInfo);
        return false;
    }
}

// Instancia del modelo
$colaborador = new Colaborador();

// Switch por operación
switch ($_GET["op"]) {
    case "eliminar":
        $colaborador->delete_colaborador($_POST["id_colab"]);
        echo json_encode(["status" => "ok"]);
        break;

    case "guardaryeditar":
        $resultado = $colaborador->insert_or_update_colaborador(
            $_POST["id_colab"] ?? null,
            $_POST["id_prof"],
            $_POST["rut_colab"],
            $_POST["nombre_colab"],
            $_POST["email_colab"],
            $_POST["estado_colab"] ?? 1,
            $_POST["pass_colab"] ?? ""
        );

        if (isset($resultado["error"])) {
            echo json_encode(["success" => false, "msg" => $resultado["error"]]);
            break;
        }

        // Si hay nueva contraseña, enviar correo
        if (!empty($resultado["pass"])) {
            $enviado = enviar_correo_acceso(
                $resultado["email"],
                $_POST["nombre_colab"],
                $resultado["pass"]
            );

            if (!$enviado) {
                echo json_encode([
                    "success" => true,
                    "msg" => "Colaborador guardado, pero el correo no se pudo enviar."
                ]);
                break;
            }
        }

        echo json_encode(["success" => true]);
        break;

    case "mostrar":
        $data = $colaborador->get_colaborador_x_id($_POST["id_colab"]);
        echo json_encode($data);
        break;

    case "listar":
        $datos = $colaborador->get_colaboradores();
        $data = [];

        foreach ($datos as $row) {
            $data[] = [
                $row["id_colab"],
                $row["rut_colab"],
                $row["nombre_colab"],
                $row["email_colab"],
                $row["nombre_prof"],
                '<button type="button" onClick="editar(' . $row["id_colab"] . ')" class="btn btn-warning btn-xs">Editar</button>',
                '<button type="button" onClick="eliminar(' . $row["id_colab"] . ')" class="btn btn-danger btn-xs">Eliminar</button>'
            ];
        }

        echo json_encode([
            "sEcho" => 1,
            "iTotalRecords" => count($data),
            "iTotalDisplayRecords" => count($data),
            "aaData" => $data
        ]);
        break;
        
    case "select_colaborador":
            $data = $colaborador->get_colaborador_select(); 
            echo json_encode($data);
            break;

    }
?>
