<?php
// Mengimpor library PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// Mengimpor file PHPMailer
require './mail/Exception.php';
require './mail/PHPMailer.php';
require './mail/SMTP.php';


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

// Fungsi untuk mengirimkan respons JSON
function sendResponse($statusCode, $message) {
    http_response_code($statusCode);
    echo json_encode([
        'status' => $statusCode,
        'message' => $message
    ]);
    exit;
}

// Fungsi untuk validasi header Authorization
function validateAuthorization() {
    $headers = getallheaders();
    $authorizedToken = 'limaratusjut@'; // Ganti dengan token rahasia Anda

    if (!isset($headers['Authorization']) || $headers['Authorization'] !== $authorizedToken) {
        sendResponse(401, 'Unauthorized access');
    }
}

// Fungsi untuk mendekode OTP dari MD5 Hash
function decodeOTP($hash) {
    // Daftar OTP yang valid (contoh sederhana, sebaiknya diambil dari database)
    $otpList = [
        md5('54215') => '54215',
        md5('123456') => '123456'
    ];

    return $otpList[$hash] ?? null;
}

// Validasi header Authorization
validateAuthorization();

// Mendapatkan data dari request body
$requestBody = json_decode(file_get_contents('php://input'), true);
if (!isset($requestBody['email']) || !isset($requestBody['codeotp'])) {
    sendResponse(400, 'Email and codeotp are required');
}

$emailRecipient = $requestBody['email'];
$codeotp = $requestBody['codeotp'];
$otp = decodeOTP($codeotp);

if ($otp === null) {
    sendResponse(400, 'Invalid codeotp');
}

$validUntil = date('d F Y, H:i', strtotime('+30 minutes')) . ' WIB';


// Inisialisasi PHPMailer
$mail = new PHPMailer(true);

try {
    // Konfigurasi SMTP
    $mail->isSMTP();
    $mail->Host = 'mail.kopmandan.com'; // Ganti dengan server SMTP Anda
    $mail->SMTPAuth = true;
    $mail->Username = 'admin@kopmandan.com'; // Email lengkap
    $mail->Password = 'f2K7ToyDZrUQ'; // Password email
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Coba STARTTLS atau SSL
    $mail->Port = 587; // Gunakan 587 (STARTTLS) atau 465 (SSL)

    // Pengirim email
    $mail->setFrom('admin@kopmandan.com', 'Koperasi Komandan'); // Ganti dengan alamat email Anda dan nama Anda

    // Penerima email
    $mail->addAddress($emailRecipient, 'User');

    // Konten email
    $mail->isHTML(true);
    $mail->Subject = 'Kode Verifikasi Anda';
    $mail->Body    = "<p>Salam,</p>
<p>Berikut adalah kode verifikasi Anda untuk login ke aplikasi:</p>
<h2 style='text-align: center;'>$otp</h2>
<p>Kode ini valid hingga <strong>$validUntil</strong> dan hanya bisa digunakan sekali.</p>
<p>Jika Anda tidak merasa melakukan login aplikasi, mohon abaikan email ini dan segera lakukan reset password.</p>";

    // Mengirim email
    $mail->send();
    sendResponse(200, 'Kode OTP berhasil dikirim');
} catch (Exception $e) {
    sendResponse(500, "Email gagal terkirim. Error: {$mail->ErrorInfo}");
}
