/**
 * Platforms Manager - Alpine.js Component
 *
 * Handles platform listing and management for multi-platform CMS.
 */

const platformsLog = window.LogConfig.createLogger('PLATFORMS');

function platformsManager() {
  return {
    // Inherit base layout functionality from init-alpine.js
    ...data(),

    // Page identification
    currentPage: "platforms",

    // State
    platforms: [],
    loading: true,
    error: null,

    // Lifecycle
    async init() {
      platformsLog.info('=== PLATFORMS PAGE INITIALIZING ===');

      // Duplicate initialization guard
      if (window._adminPlatformsInitialized) {
        platformsLog.warn('Platforms page already initialized, skipping...');
        return;
      }
      window._adminPlatformsInitialized = true;

      try {
        await this.loadPlatforms();
        platformsLog.info('=== PLATFORMS PAGE INITIALIZATION COMPLETE ===');
      } catch (error) {
        window.LogConfig.logError(error, 'Platforms Init');
        this.error = 'Failed to initialize page';
      }
    },

    // API Methods
    async loadPlatforms() {
      this.loading = true;
      this.error = null;

      try {
        const response = await apiClient.get("/admin/platforms");
        this.platforms = response.platforms || [];
        platformsLog.info(`Loaded ${this.platforms.length} platforms`);
      } catch (err) {
        platformsLog.error("Error loading platforms:", err);
        this.error = err.message || "Failed to load platforms";
      } finally {
        this.loading = false;
      }
    },

    // Helper Methods
    getPlatformIcon(code) {
      const icons = {
        oms: "clipboard-list",
        loyalty: "star",
        sitebuilder: "template",
        default: "globe-alt",
      };
      return icons[code] || icons.default;
    },

    formatDate(dateString) {
      if (!dateString) return "—";
      const date = new Date(dateString);
      return date.toLocaleDateString("fr-LU", {
        year: "numeric",
        month: "short",
        day: "numeric",
      });
    },
  };
}
