const BaseModel = require('./BaseModel');

class userModel extends BaseModel {
    constructor() {
        super();
    }

    /**
     * مدیریت کاربران تلگرام (Insert یا Update)
     * @param {Object} userData - دیتای خامی که از تلگرام می‌آید
     */
    async syncTelegramUser(userData) {
        const now = Math.floor(Date.now() / 1000);
        const sql = `
            INSERT INTO tg_users (tg_id, username, first_name, last_name, cr_time, up_time)
            VALUES (?, ?, ?, ?, ?, ?)
            ON DUPLICATE KEY UPDATE 
                username = VALUES(username), 
                first_name = VALUES(first_name), 
                last_name = VALUES(last_name), 
                up_time = ?
        `;
        
        const params = [
            userData.id, 
            this.safeString(userData.username), 
            this.safeString(userData.first_name),
            this.safeString(userData.last_name),
            now, 
            now,
            now
        ];
        
        return await this.query(sql, params);
    }

    /**
     * مدیریت گروه‌های تلگرام
     * @param {number} botId - آیدی رباتی که در این گروه است
     * @param {Object} groupData - اطلاعات چت (group/supergroup/channel)
     */
    async syncTelegramGroup(botId, groupData) {
        const now = Math.floor(Date.now() / 1000);
        const sql = `
            INSERT INTO tg_groups (bot_id, group_id, group_title, group_type, cr_time, up_time)
            VALUES (?, ?, ?, ?, ?, ?)
            ON DUPLICATE KEY UPDATE 
                group_title = VALUES(group_title), 
                group_type = VALUES(group_type), 
                up_time = ?
        `;
        
        const params = [
            botId,
            groupData.id,
            this.safeString(groupData.title),
            groupData.type,
            now,
            now,
            now
        ];
        
        return await this.query(sql, params);
    }

    /**
     * دریافت اطلاعات ادمین/مشتری پنل
     */
    async getAdminByUsername(username) {
        const sql = "SELECT * FROM admins WHERE username = ? AND is_active = 1 LIMIT 1";
        const result = await this.query(sql, [this.safeString(username)]);
        return result.length > 0 ? result[0] : null;
    }

    /**
     * به‌روزرسانی زمان فعالیت کاربر تلگرام
     */
    async updateLastActivity(tgId) {
        const now = Math.floor(Date.now() / 1000);
        const sql = "UPDATE tg_users SET up_time = ? WHERE tg_id = ?";
        return await this.query(sql, [now, tgId]);
    }
}

module.exports = new userModel();