module.exports = {
    friendlyName: 'Send WhatsApp message via WaSenderApi',

    inputs: {
        to: {
            type: 'string',
            required: true,
            description: 'Numéro au format E.164 (+22507070707) ou Group JID'
        },
        text: {
            type: 'string',
            required: true,
            description: 'Contenu textuel du message'
        },
        media: {
            type: 'json',
            description: 'Objet contenant les URLs média optionnels'
        },
        imageUrl: {
            type: 'string',
            required: false,
            description: 'URL publique de l\'image à joindre'
        }
    },

    exits: {
        success: {
           
            description: 'Message envoyé avec succès'
        },
        invalidNumber: {
            description: 'Format de numéro invalide'
        },
        apiError: {
            description: 'Erreur de l\'API WaSender'
        }
    },

    fn: async function ({ to, text, media, imageUrl }, exits) {
        try {
            const axios = require('axios');
            const config = sails.config.externalApis.wasender;

            // Validation du format E.164
            /* if (!to.startsWith('+') && !to.includes('@g.us') && !to.includes('@s.whatsapp.net')) {
               return exits.invalidNumber('Le numéro doit être au format E.164 (+225...) ou Group JID');
             }*/

            /*const formattedTo = await sails.helpers.formatPhone(to)
              .intercept('invalidNumber', (err) => {
                sails.log.warn('Format de numéro invalide:', { original: to, error: err });
                return 'invalidNumber';
              });
      
            if (formattedTo === 'invalidNumber') {
              return exits.invalidNumber('Le numéro fourni n\'a pas un format valide');
            }*/

            const payload = {
                to: to,
                text: text,
                //...media // Spread operator pour inclure les médias optionnels
            };
            if (imageUrl) payload.imageUrl = imageUrl;

            const response = await axios.post(
                `${config.baseUrl}/send-message`,
                payload,
                {
                    headers: {
                        'Authorization': `Bearer ${config.apiKey}`,
                        'Content-Type': 'application/json',
                        // 'Accept': 'application/json'
                    },
                    timeout: 10000 // 10 secondes timeout
                }
            );

            if (!response.data || !response.data.success) {
                throw new Error(response.data?.message || 'Réponse invalide de WaSenderAPI');
            }

            // Journalisation
            /*await ActivityLogs.create({
                date: moment().format('YYYY-MM-DD'),
                heure: moment().format('HH:mm:ss'),
                username: user.login,
                action: "DEMANDE_REINITIALISATION_MDP",
            });

            await sails.helpers.logActivity.with({
                action: 'WHATSAPP_MESSAGE_SENT',
                details: {
                    recipient: to,
                    messageId: response.data.messageId || null,
                    status: 'success'
                }
            });*/

            return exits.success(response.data);

        } catch (err) {
            sails.log.error('Erreur WaSenderAPI:', {
                error: err.response?.data || err.message,
                payload: { to, text }
            });

            return exits.apiError(err.response?.data || {
                success: false,
                message: 'Erreur lors de l\'envoi WhatsApp'
            });
        }
    }
};