"use server";
import { db } from '@/lib/db';
import { user } from '@/db/schema';
import { or, eq } from 'drizzle-orm';
import bcrypt from "bcryptjs";

export async function recoverPassword(formData: FormData) {
  try {
    const identifier = formData.get("identifier") as string;
    
    if (!identifier) {
      return { success: false, error: "Por favor, ingresa tu correo, cédula o RIF." };
    }

    // Buscar usuario por email o cedula
    const foundUser = await db.query.user.findFirst({
      where: or(
        eq(user.email, identifier),
        eq(user.cedula, identifier)
      )
    });

    if (!foundUser || !foundUser.email) {
      return { success: false, error: "No se encontró un usuario con esos datos." };
    }

    // Generar clave temporal
    const tempPassword = Math.random().toString(36).slice(-8);
    const hashedPassword = await bcrypt.hash(tempPassword, 10);

    // Actualizar usuario con la clave temporal
    await db.update(user)
      .set({ password: hashedPassword })
      .where(eq(user.id, foundUser.id));

    // Enviar correo
    try {
      const nodemailer = require("nodemailer");
      const transporter = nodemailer.createTransport({
        host: process.env.SMTP_HOST || "localhost",
        port: Number(process.env.SMTP_PORT) || 25,
        secure: process.env.SMTP_SECURE === "true",
        auth: process.env.SMTP_USER ? {
          user: process.env.SMTP_USER,
          pass: process.env.SMTP_PASS,
        } : undefined,
        tls: { rejectUnauthorized: false }
      });

      const mailOptions = {
        from: `"Cursos Nirgua" <info@cursos.nirgua.com.ve>`,
        to: foundUser.email,
        subject: `Recuperación de Contraseña - Cursos Nirgua`,
        html: `
          <div style="font-family: sans-serif; color: #333; max-width: 600px; border: 1px solid #eee; padding: 20px; border-radius: 10px;">
            <h2 style="color: #1e2a47;">Recuperación de Contraseña</h2>
            <p>Hola ${foundUser.name || "Usuario"},</p>
            <p>Se ha solicitado la recuperación de contraseña para tu cuenta.</p>
            <hr style="border: 0; border-top: 1px solid #eee;" />
            <p><strong>Tu nueva contraseña temporal es:</strong> ${tempPassword}</p>
            <p>Te recomendamos cambiar esta contraseña una vez que inicies sesión.</p>
            <br/>
            <p><strong>URL de Acceso:</strong> <a href="https://cursos.nirgua.com.ve/signin">https://cursos.nirgua.com.ve/signin</a></p>
            <p style="font-size: 12px; color: #999; margin-top: 20px;">
              Este es un correo automático generado por el sistema de Cursos Nirgua. Si no solicitaste este cambio, por favor contáctanos.
            </p>
          </div>
        `,
      };

      await transporter.sendMail(mailOptions);
    } catch (mailError) {
      console.error("Error enviando el correo:", mailError);
      return { success: false, error: "Hubo un error al enviar el correo con la clave temporal." };
    }

    return { success: true, message: "Se ha enviado una clave temporal a tu correo electrónico." };
  } catch (error: any) {
    console.error("Error recuperando password:", error);
    return { success: false, error: "Hubo un error al procesar tu solicitud." };
  }
}
