<?php
// registrasi_send.php
// Handle registration form submission

// Start session
session_start();

// Set header untuk JSON response
header('Content-Type: application/json');

// Error reporting (disable in production)
error_reporting(E_ALL);
ini_set('display_errors', 0);

// Include database configuration
require_once '../config/setting.php';
require_once '../config/fungsi.php';

// Check if request is POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode([
        'success' => false,
        'message' => 'Metode request tidak valid!'
    ]);
    exit;
}

// Get POST data
$csrf_token = isset($_POST['csrf_token']) ? $_POST['csrf_token'] : '';
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
$institution = isset($_POST['institution']) ? trim($_POST['institution']) : '';
$phone = isset($_POST['phone']) ? trim($_POST['phone']) : '';
$email = isset($_POST['email']) ? trim(strtolower($_POST['email'])) : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
$province_code = isset($_POST['province_code']) ? $_POST['province_code'] : '';
$province_name = isset($_POST['province_name']) ? trim($_POST['province_name']) : '';
$city_code = isset($_POST['city_code']) ? $_POST['city_code'] : '';
$city_name = isset($_POST['city_name']) ? trim($_POST['city_name']) : '';
$address = isset($_POST['address']) ? trim($_POST['address']) : '';
$agree_terms = isset($_POST['agree_terms']) ? intval($_POST['agree_terms']) : 0;
$newsletter = isset($_POST['newsletter']) ? intval($_POST['newsletter']) : 0;

// Initialize response array
$response = [
    'success' => false,
    'message' => '',
    'invalid_csrf' => false
];

// Validate CSRF token
if (empty($csrf_token)) {
    $response['message'] = 'Token keamanan tidak valid!';
    $response['invalid_csrf'] = true;
    echo json_encode($response);
    exit;
}

// Validate required fields
$required_fields = [
    'name' => 'Nama lengkap',
    'institution' => 'Institusi/sekolah',
    'phone' => 'Nomor WhatsApp',
    'email' => 'Email',
    'password' => 'Password',
    'province_code' => 'Provinsi',
    'city_code' => 'Kabupaten/Kota',
    'address' => 'Alamat lengkap'
];

foreach ($required_fields as $field => $field_name) {
    if (empty($$field)) {
        $response['message'] = "Field $field_name harus diisi!";
        echo json_encode($response);
        exit;
    }
}

// Validate terms agreement
if ($agree_terms !== 1) {
    $response['message'] = 'Anda harus menyetujui kebijakan layanan dan privasi!';
    echo json_encode($response);
    exit;
}

// Validate email format
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $response['message'] = 'Format email tidak valid!';
    echo json_encode($response);
    exit;
}

// Validate phone number (Indonesian format)
if (!preg_match('/^[0-9]{10,15}$/', $phone)) {
    $response['message'] = 'Nomor WhatsApp harus berisi 10-15 digit angka!';
    echo json_encode($response);
    exit;
}

// Validate password strength
if (strlen($password) < 8) {
    $response['message'] = 'Password minimal 8 karakter!';
    echo json_encode($response);
    exit;
}

if (!preg_match('/[a-z]/', $password)) {
    $response['message'] = 'Password harus mengandung huruf kecil!';
    echo json_encode($response);
    exit;
}

if (!preg_match('/[A-Z]/', $password)) {
    $response['message'] = 'Password harus mengandung huruf besar!';
    echo json_encode($response);
    exit;
}

if (!preg_match('/[0-9]/', $password)) {
    $response['message'] = 'Password harus mengandung angka!';
    echo json_encode($response);
    exit;
}

// Generate unique ID (format: yymmddHHMMSS + random 4 digits)
$base_id = date("ymdHis") . rand(1000, 9999);
$username = $base_id;  // Username sama dengan ID
$no_anggota = $base_id; // Nomor anggota sama dengan ID
$id_user = $base_id;   // ID user untuk tabel anggota sama dengan ID

// Hash password dengan SHA1 (sesuai permintaan PHP 5.6)
$hashed_password = sha1($password);

// Current timestamp
$current_time = date('Y-m-d H:i:s');
$tgl_daftar = date('Y-m-d');

// Status dan role default
$status = 1; // Aktif
$role = 'member'; // Role member

$insert1 = mysql_query("INSERT INTO user(id, username, password, nama, institusi, telpon, email, role, status, agree_terms, newsletter, created, updated) 
VALUES ('$base_id','$username','$hashed_password','$name','$institution','$phone','$email','member','1','$agree_terms','$newsletter','$current_time','$current_time')");

if($insert1) {
    $insert2 = mysql_query("INSERT INTO anggota (no_anggota, tgl_daftar, tgl_expired, tgl_last_renewal, id_user, alamat, kabkota, provinsi, aktif, created, updated) 
    VALUES ('$no_anggota','$tgl_daftar','0000-00-00','0000-00-00','$base_id','$address','$city_name','$province_name','N','$current_time','$current_time')");

$pesan_wa = "Halo *$name*,

Terima kasih telah melakukan registrasi akun di platform *PAPENTARA*. Akun Anda telah berhasil dibuat dan aktif.

*Informasi Akun Anda:*
• *Nama:* *$name*
• *Email/User:* *$email*
• *Password:* *$password*

Gunakan kredensial di atas untuk login ke sistem kami. Kami berharap Anda mendaftar juga di keanggotaan.

Untuk mendaftar keanggotaan silahkan daftar dari Dashboard anda, kemudian lakukan pembayaran biaya anggota Tahunan, atau untuk mengikuti Seminar silahkan klik menu seminar dan mendaftar, kemudian lakukan pembayaran, untuk mendapatkan link group, dan zoom meet di menu Seminar Saya.

Jika ada pertanyaan atau kendala, jangan ragu untuk menghubungi tim support kami.

Salam,
*PAPENTARA*";    
    // Kirim email registrasi setelah insert berhasil
    // Jalankan di background tanpa mempengaruhi response
    if (function_exists('fastcgi_finish_request')) {
        // Untuk FPM/FastCGI
        session_write_close();
        fastcgi_finish_request();
        
        // Kirim email setelah response dikirim
        sendRegistrationEmail($email, $name, $username, $password);
        kirimwa($phone,$pesan_wa);
    } else {
        // Untuk non-FPM (kirim email secara synchronous, tapi tidak mempengaruhi response)
        // Simpan dalam variabel untuk dijalankan nanti atau gunakan pendekatan lain
        register_shutdown_function(function() use ($email, $name, $username, $password) {
            sendRegistrationEmail($email, $name, $username, $password);
            kirimwa($phone,$pesan_wa);
        });
    }
    
    // Buat Sesi dan arahkan ke dashboard
        $_SESSION['login']  = true;
        $_SESSION['email']  = $email;
        $_SESSION['role']   = 'member';
        $_SESSION['nama']   = $nama;

    $response['success'] = true;
    $response['message'] = 'Registrasi berhasil! Anda akan diarahkan ke dashboard.';
    $response['user_id'] = $base_id;
}

// Send JSON response
echo json_encode($response);
exit;