﻿using AsmodeeDigital.CrossPromo.Plugin.Domain;
using AsmodeeDigital.CrossPromo.Plugin.Manager;
using AsmodeeDigital.CrossPromo.Plugin.View;
using System;
using UnityEngine;
using UnityEngine.UI;

public class SampleCrossPromoView : MonoBehaviour
{
    [Serializable]
    public class UI
    {
        public Text ConnectButtonText;
        public Text StatusConnection;
    }

    public UI ui;
    public string AmplitudeAPIKey;

    private void Awake()
    {
        Amplitude amplitude = Amplitude.Instance;
        amplitude.logging = false;
        amplitude.init(AmplitudeAPIKey);

        Invoke("Init", 0.2f);
    }

    private void Init()
    {
        CrossPromoView.Instance.CrossPromoLogic.ConnectedEvent += CrossPromoLogic_ConnectedEvent;
        CrossPromoView.Instance.CrossPromoLogic.DisconnectedEvent += CrossPromoLogic_DisconnectedEvent;

        AnalyticsManager.Instance.AnalyticsEvent += Instance_AnalyticsEvent;

        var platform = Application.platform;

        if (platform == RuntimePlatform.OSXEditor || platform == RuntimePlatform.WindowsEditor)
        {
            AnalyticsManager.SetEnvironnement(AnalyticsManager.Environments.dev);
        }
        else
        {
            AnalyticsManager.SetEnvironnement(AnalyticsManager.Environments.test);
        }

        if (platform == RuntimePlatform.IPhonePlayer)
        {
            AnalyticsManager.SetFirstParty(AnalyticsManager.FirstParties.AppStore);
        }
        else if (platform == RuntimePlatform.Android)
        {
            AnalyticsManager.SetFirstParty(AnalyticsManager.FirstParties.GooglePlay);
        }
        else
        {
            AnalyticsManager.SetFirstParty(AnalyticsManager.FirstParties.Steam);
        }

        AnalyticsManager.SetIsTrial(false);
        AnalyticsManager.SetScreenResolution(Screen.currentResolution.width, Screen.currentResolution.height);
        AnalyticsManager.Instance.SetCurrentScreen(CrossPromoView.Instance.ScreenNameForAnalytics, "not_applicable");
    }

    public void ToggleConnection()
    {
        CrossPromoView.Instance.CrossPromoLogic.ToggleConnection();
    }

    private void CrossPromoLogic_ConnectedEvent()
    {
        ui.ConnectButtonText.text = "Disconnect";
        ui.StatusConnection.text = "Connected";
        ui.StatusConnection.color = Color.green;
    }

    private void CrossPromoLogic_DisconnectedEvent()
    {
        ui.ConnectButtonText.text = "Connect";
        ui.StatusConnection.text = "Disconnected";
        ui.StatusConnection.color = Color.red;
    }

    private void Instance_AnalyticsEvent(AnalyticsItem analyticsItem)
    {
        Amplitude.Instance.logEvent(analyticsItem.MetricName, analyticsItem.ToDictionary());
        Debug.LogFormat("Logged AnalyticsEvent: '{0}' = {1}", analyticsItem.MetricName, analyticsItem.ToString());
    }
}
