app.js

2.08 KB
05/11/2024 05:57
JS
app.js
export class AppContainer {
    constructor() {
        // สร้าง Dependencies
        this.settingsManager = new SettingsManager();
        this.authSystem = new AuthSystem();
        this.productManager = new ProductManager();
        this.customerStorage = new CustomerStorage();
        this.notificationSystem = new NotificationSystem(
            this.settingsManager.getSetting('notifications')
        );
        
        // สร้าง Order Manager พร้อม Dependencies
        this.orderManager = new OrderManager({
            productManager: this.productManager,
            notificationSystem: this.notificationSystem,
            customerStorage: this.customerStorage,
            settingsManager: this.settingsManager
        });
    }

    async initialize() {
        // เริ่มต้นระบบทั้งหมด
        await Promise.all([
            this.initializeUI(),
            this.setupEventListeners(),
            this.checkAuthentication()
        ]);
    }

    async initializeUI() {
        // โหลดการตั้งค่าและอัพเดท UI
        const settings = this.settingsManager.settings;
        document.title = settings.site.name;
        this.updateUIWithSettings(settings);
    }

    setupEventListeners() {
        // ตั้งค่า Event Listeners ทั้งหมด
        this.setupCartListeners();
        this.setupAuthListeners();
        this.setupProductListeners();
    }

    async checkAuthentication() {
        if (this.authSystem.isAuthenticated()) {
            this.showAdminFeatures();
        }
    }

    updateUIWithSettings(settings) {
        // อัพเดท UI ตามการตั้งค่า
        document.querySelector('#siteName').textContent = settings.site.name;
        document.querySelector('#siteDescription').textContent = settings.site.description;
        // อัพเดทส่วนอื่นๆ ตามการตั้งค่า
    }

    // สามารถเพิ่มเมธอดอื่นๆ ตามต้องการ
}