using System.Collections;
using System.Collections.Generic;
using InMobiAds.Api;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class PublisherSignalUI : MonoBehaviour
{

    // UI elements
    public InputField signalKeyInput;

    public InputField signalValueInput;

    public Button addSignalButton;

    public Button addDefaultValuesButton;

    public Button closeButton;

    public Button putSignalsButton;

    public Button resetSignalsButton;

    public Button getSignalsButton;

    public Text signalsDisplayText;


    private Dictionary<string, object> localSignals = new Dictionary<string, object>();

    private InMobiPlugin inmobiPlugin; 

    void Start() 
    {
        this.inmobiPlugin = new InMobiPlugin();
    }

    // Add key-value pair to local dictionary
    public void AddPublisherSignal()
    {
        string key = signalKeyInput.text;
        string value = signalValueInput.text;

        if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
        {
            localSignals[key] = value;
            Debug.Log("Added to local signals: " + key + ": " + value);
            signalKeyInput.text = ""; // Clear input fields
            signalValueInput.text = "";
        }
        else
        {
            Debug.LogWarning("Key or Value is empty.");
        }
    }

    public void addDefaultValues()
    {
        localSignals.Add("s_dep_ban", 2);
        localSignals.Add("ctr_ban", 0.5);
        localSignals.Add("vcr_ban", 0.1);
        localSignals.Add("abp_10_ban", 0.25);
        localSignals.Add("abp_5_ban", 0.25);
        localSignals.Add("abp_ban", 0.2566655);
        localSignals.Add("s_dep_int", 2);
        localSignals.Add("ctr_int", 0.5);
        localSignals.Add("vcr_int", 0.1);
        localSignals.Add("abp_10_int", 0.25);
        localSignals.Add("abp_5_int", 0.25);
        localSignals.Add("abp_int", 0.2566665);
        localSignals.Add("s_dep_rew", 2);
        localSignals.Add("ctr_rew", 0.5);
        localSignals.Add("vcr_rew", 0.1);
        localSignals.Add("abp_10_rew", 0.25);
        localSignals.Add("abp_5_rew", 0.25);
        localSignals.Add("abp_rew", 0.2566664);
        localSignals.Add("s_dep_nat", 2);
        localSignals.Add("ctr_nat", 0.5);
        localSignals.Add("vcr_nat", 0.1);
        localSignals.Add("abp_10_nat", 0.25);
        localSignals.Add("abp_5_nat", 0.25);
        localSignals.Add("abp_nat", 0.2566666);
        localSignals.Add("iap", true);
        localSignals.Add("iap_type", "minnow");
        localSignals.Add("iaa_type", "minnow");
        localSignals.Add("ua_type", "paid");
    }

    public void close()
    {
        SceneManager.LoadScene("InmobiIntegration");
    }

    // Call putPublisherSignals and clear local dictionary
    public void PutPublisherSignals()
    {
        if (this.inmobiPlugin == null) {
            Debug.Log("inmobiPlugin Instance is NULL.");
            return;
        }
        
        this.inmobiPlugin.PutPublisherSignals(localSignals);
        localSignals.Clear();
        Debug.Log("Local signals pushed.");
    }

    // Call resetPublisherSignals
    public void ResetPublisherSignals()
    {
        this.inmobiPlugin.ResetPublisherSignals();
        signalsDisplayText.text = ""; // Clear the display
    }

    // Call getPublisherSignals and display in TextView
    public void GetPublisherSignals()
    {
        Dictionary<string, object> signals = this.inmobiPlugin.GetPublisherSignals();
        signalsDisplayText.text = ""; // Clear existing text

        if (signals == null)
        {
            signalsDisplayText.text += "Nil publisher signals received.";
            return; // Exit the method
        }

        foreach (var signal in signals)
        {
            signalsDisplayText.text += signal.Key + ": " + signal.Value.ToString() + "\n";
        }
    }
}
