/**
 * GOOGLE APPS SCRIPT — JASTIP War Tiket
 * ======================================
 * SETUP (sekali saja):
 *
 * 1. Buat Google Spreadsheet baru
 * 2. Extensions → Apps Script → hapus kode default, paste seluruh file ini
 * 3. Isi TELEGRAM_BOT_TOKEN & TELEGRAM_CHAT_ID di bawah
 * 4. Jalankan fungsi setupSheet() → izinkan akses
 * 5. Deploy → New deployment → Type: Web app
 *    - Execute as: Me
 *    - Who has access: Anyone
 * 6. Copy URL deployment → paste ke SCRIPT_URL di index.html
 *
 * TELEGRAM BOT:
 * - Chat @BotFather → /newbot → dapatkan token
 * - Chat @userinfobot atau kirim pesan ke bot Anda, lalu buka:
 *   https://api.telegram.org/bot<TOKEN>/getUpdates → cari "chat":{"id":...}
 */

const TELEGRAM_BOT_TOKEN = '8853790479:AAHzaVMEbMQFjufzhiA4vWQy37un0Af-1mw';
const TELEGRAM_CHAT_ID   = '759853270';

const SHEET_NAME = 'Data JASTIP';

function setupSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = ss.getSheetByName(SHEET_NAME);

  if (!sheet) {
    sheet = ss.insertSheet(SHEET_NAME);
  }

  const headers = [
    'Timestamp',
    'Nama Lengkap',
    'Gender',
    'Email',
    'Nomor HP',
    'NIK',
    'Tujuan Section',
    'Tujuan Backup',
    'Jumlah Tiket',
    'Kode Membership',
    'HP Konfirmasi JASTIP'
  ];

  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  sheet.getRange(1, 1, 1, headers.length)
    .setFontWeight('bold')
    .setBackground('#e4002b')
    .setFontColor('#ffffff');
  sheet.setFrozenRows(1);
}

function doPost(e) {
  try {
    const data = parsePayload(e);

    saveToSheet(data);
    sendToTelegram(data);

    return ContentService
      .createTextOutput(JSON.stringify({ status: 'ok' }))
      .setMimeType(ContentService.MimeType.JSON);

  } catch (err) {
    return ContentService
      .createTextOutput(JSON.stringify({ status: 'error', message: err.message }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

function parsePayload(e) {
  if (e.postData && e.postData.type === 'application/json') {
    return JSON.parse(e.postData.contents);
  }
  return e.parameter;
}

function doGet() {
  return ContentService
    .createTextOutput(JSON.stringify({ status: 'JASTIP API aktif' }))
    .setMimeType(ContentService.MimeType.JSON);
}

function saveToSheet(data) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = ss.getSheetByName(SHEET_NAME);

  if (!sheet) {
    setupSheet();
    sheet = ss.getSheetByName(SHEET_NAME);
  }

  const row = [
    new Date(),
    data.nama || '',
    data.gender || '',
    data.email || '',
    data.hp || '',
    data.nik || '',
    data.section || '',
    data.backup || '',
    data.jumlah || '',
    data.membership || '-',
    data.hpKonfirmasi || ''
  ];

  sheet.appendRow(row);
}

function sendToTelegram(data) {
  if (TELEGRAM_BOT_TOKEN.includes('PASTE') || TELEGRAM_CHAT_ID.includes('PASTE')) {
    throw new Error('Telegram belum dikonfigurasi');
  }

  const waktu = Utilities.formatDate(new Date(), 'Asia/Jakarta', 'dd/MM/yyyy HH:mm:ss');

  const pesan = [
    '🎫 JASTIP WAR TIKET — ORDER BARU',
    '',
    '📅 ' + waktu + ' WIB',
    '👤 Nama: ' + (data.nama || '-'),
    '⚧ Gender: ' + (data.gender || '-'),
    '📧 Email: ' + (data.email || '-'),
    '📱 HP: ' + (data.hp || '-'),
    '🪪 NIK: ' + (data.nik || '-'),
    '🎯 Section: ' + (data.section || '-'),
    '🔄 Backup: ' + (data.backup || '-'),
    '🎟 Jumlah: ' + (data.jumlah || '-') + ' tiket',
    '🔑 Membership: ' + (data.membership || '-'),
    '📞 HP Konfirmasi JASTIP: ' + (data.hpKonfirmasi || '-')
  ].join('\n');

  const url = 'https://api.telegram.org/bot' + TELEGRAM_BOT_TOKEN + '/sendMessage';

  const payload = {
    chat_id: TELEGRAM_CHAT_ID,
    text: pesan
  };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(url, options);
  const result = JSON.parse(response.getContentText());

  if (!result.ok) {
    throw new Error('Telegram error: ' + result.description);
  }
}
