"use strict";
import ApiMqttIn from "./api-mqtt-in.js";
import { mqtt_tree, sendMessage } from "./mqtthat.js";

class ApiMqttOut {

    static getAllLuci = () => {
        const topic = `rpc/${mqtt_tree}/luci`;
        const message = "{request:all}";
        sendMessage(topic, message);
    }

    static getStatusLuci = () => {
        const topic = "to/all";
        const message = "{request:status}";
        sendMessage(topic, message);
    }

    static setLuciStato = luce => {
        const topic = `from/${mqtt_tree}gpio/${luce["sensore-in"].toUpperCase()}`;
        const message = `{"event":${luce.stato === false ? '0' : '1'}}`;
        ApiMqttIn.outForToggleLuciStato = luce;
        sendMessage(topic, message);
    }

    static makeNewLuci = luce => {
        const topic = `to/${mqtt_tree}/luci/new`;
        const message = JSON.stringify(luce);
        sendMessage(topic, message);
    }

    static getAllFromScenari = () => {
        const topic = `rpc/${mqtt_tree}scenari`;
        const message = "{request:status}";
        sendMessage(topic, message);
    }

    static setAntifurtoINbtnFromScenari = newINbtn => {
        const topic = `to/${mqtt_tree}scenari/sensoreAntifurto`;
        const message = `{"attiva-scenari":"${newINbtn}"}`;
        sendMessage(topic, message);
    }

    static setScenarioStatus = scenario => {
        const topic = `to/${mqtt_tree}scenari`;
        const message = `{"evento":${scenario.stato === false ? '0' : '1'},"nome":"${scenario.nome}"}`;
        sendMessage(topic, message);
    }

    static saveScenario = nome => {
        const topic = `to/${mqtt_tree}scenari/salva`;
        const message = JSON.stringify({nome});
        sendMessage(topic, message);
    }

    static recordScenario = INBtn => {
        const topic = `from/${mqtt_tree}gpio/${INBtn.toUpperCase()}`;
        const message = `{"event":1}`;
        sendMessage(topic, message);
    }

    static getAntifurto = () => {
        const topic = `rpc/${mqtt_tree}antifurto`;
        const message = `{"request":"description"}`;
        sendMessage(topic, message);
    }

    static setAntifurtoStatus = INBtn => {
        const topic = `from/${mqtt_tree}gpio/${INBtn.toUpperCase()}`;
        const message = `{"event":1}`;
        sendMessage(topic, message);
    }

    static setAntifurtoSoglia = soglia => {
        const topic = `to/${mqtt_tree}antifurto/soglia`;
        const message = `{"soglia":${soglia}}`;
        sendMessage(topic, message);
    }
}

export default ApiMqttOut;