/*
 * c2c PayPal Checkout — Frontend
 *
 * Initialisiert PayPal Smart Buttons für die Kunden-Ansicht (view.php).
 * Erwartet window.C2C_CONFIG = { apiBase, clientUuid, pricing }
 */
(function () {
  'use strict';

  var cfg = window.C2C_CONFIG || {};

  if (!cfg.apiBase || !cfg.clientUuid) {
    console.error('[c2c] C2C_CONFIG fehlt');
    return;
  }

  if (typeof paypal === 'undefined' || !paypal.Buttons) {
    console.error('[c2c] PayPal SDK nicht geladen');
    return;
  }

  function renderMessage(container, kind, html) {
    var bg = kind === 'success' ? '#e7f3e8' : kind === 'error' ? '#fde8e8' : '#fdf6e3';
    var border = kind === 'success' ? '#4a7d4f' : kind === 'error' ? '#b13a2e' : '#a89860';
    container.innerHTML =
      '<div style="background:' + bg + ';border-left:3px solid ' + border + ';' +
      'padding:1rem 1.25rem;border-radius:4px;font-family:Georgia,serif;line-height:1.5;">' +
      html + '</div>';
  }

  function setupButton(containerId, serviceType) {
    var container = document.getElementById(containerId);
    if (!container) return;

    paypal.Buttons({
      style: {
        layout: 'vertical',
        color:  'gold',
        shape:  'rect',
        label:  'pay'
      },

      createOrder: function () {
        return fetch(cfg.apiBase + '/payments/create-order.php', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({
            client_uuid:  cfg.clientUuid,
            service_type: serviceType
          })
        })
        .then(function (res) { return res.json(); })
        .then(function (data) {
          if (data.error || !data.order_id) {
            throw new Error(data.error || 'Order konnte nicht erstellt werden');
          }
          return data.order_id;
        });
      },

      onApprove: function (data) {
        return fetch(cfg.apiBase + '/payments/capture-order.php', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ order_id: data.orderID })
        })
        .then(function (res) { return res.json(); })
        .then(function (result) {
          if (result.success) {
            renderMessage(container, 'success',
              '<strong>Vielen Dank!</strong> Deine Bezahlung ist eingegangen. ' +
              'Du wirst gleich automatisch weitergeleitet.');
            // Andere Buttons ausblenden
            var others = document.querySelectorAll('.paypal-buttons-wrapper');
            for (var i = 0; i < others.length; i++) {
              if (others[i].id !== containerId) others[i].style.display = 'none';
            }
            setTimeout(function () { window.location.reload(); }, 2500);
          } else {
            renderMessage(container, 'error',
              'Die Zahlung konnte nicht abgeschlossen werden (Status: ' +
              (result.status || 'unbekannt') + '). Bitte versuche es erneut oder schreib an chris@swisschris.ca.');
          }
        })
        .catch(function (err) {
          console.error('[c2c] Capture-Fehler:', err);
          renderMessage(container, 'error',
            'Ein technischer Fehler ist aufgetreten. Bitte schreib an chris@swisschris.ca, ' +
            'damit wir das prüfen können. (Details: ' + err.message + ')');
        });
      },

      onError: function (err) {
        console.error('[c2c] PayPal Error:', err);
        renderMessage(container, 'error',
          'Es ist ein Problem mit PayPal aufgetreten. Bitte lade die Seite neu und versuche es erneut.');
      },

      onCancel: function () {
        // User hat abgebrochen — keine Aktion nötig, Button bleibt aktiv
      }
    }).render(container).catch(function (err) {
      console.error('[c2c] Button-Render-Fehler:', err);
    });
  }

  setupButton('paypal-portfolio', 'portfolio');
  setupButton('paypal-family',    'family');

})();
