using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEngine.UI;

public class GameLogDialog : MonoBehaviour
{
    private const int MaxEventJsonBytes = 50 * 1024; // 50KB

    public Action<string, string> action;

    public GameObject panel;

    public InputField inputField1;
    public InputField inputField2;

    public static void Show(Action<string, string> action)
    {
        Present(action);
    }

    public static void Present(Action<string, string> action)
    {
        GameObject gameLogDialogPanel = GameObject.Find("GameLogDialogPanel");

        Image image = gameLogDialogPanel.GetComponent<Image>();
        image.enabled = true;

        GameLogDialog gameLogDialog = gameLogDialogPanel.GetComponent<GameLogDialog>();
        gameLogDialog.panel.SetActive(true);
        gameLogDialog.action = action;
    }

    public static void Dismiss()
    {
        GameObject gameLogDialogPanel = GameObject.Find("GameLogDialogPanel");

        Image image = gameLogDialogPanel.GetComponent<Image>();
        image.enabled = false;

        GameLogDialog gameLogDialog = gameLogDialogPanel.GetComponent<GameLogDialog>();
        gameLogDialog.panel.SetActive(false);
        gameLogDialog.ClearInputFields();
    }

    private void ClearInputFields()
    {
        inputField1.text = string.Empty;
        inputField2.text = string.Empty;
    }

    public void OnClickSetDefaultData()
    {
        inputField1.text = "{\"auid\":10001070379,\"cuid\":1766135303113712501,\"mkt_type_1\":null,\"mkt_id_1\":null,\"mkt_type_2\":null,\"mkt_id_2\":null,\"game_version\":\"1.98\",\"log_group_id\":\"102\",\"server_cd\":\"10\",\"server_cd_det\":\"05\",\"lv_cd\":\"62\",\"lv_cd_det\":null,\"market_id\":\"GOOGLE_PLAY\"}";
        inputField2.text = "{\"item_change\":{\"item_type\":\"\",\"item_type_details\":\"\",\"item_cd\":\"2020020\",\"item_details\":\"1767518509344712800\",\"hold_before\":14,\"hold_after\":17,\"change_type\":\"use\",\"change_amount\":3,\"change_reason_type\":\"use\",\"change_reason_cd\":\"\",\"target_guid\":\"\",\"target_auid\":\"\",\"target_cuid\":\"\",\"target_region_cd\":\"\",\"target_server_cd\":\"\"}}";
    }

    public void OnClickSetLargeData()
    {
        inputField1.text = "{\"auid\":10001070379,\"cuid\":1766135303113712501,\"mkt_type_1\":null,\"mkt_id_1\":null,\"mkt_type_2\":null,\"mkt_id_2\":null,\"game_version\":\"1.98\",\"log_group_id\":\"102\",\"server_cd\":\"10\",\"server_cd_det\":\"05\",\"lv_cd\":\"62\",\"lv_cd_det\":null,\"market_id\":\"GOOGLE_PLAY\"}";
        inputField2.text = GenerateLargeData();
    }

    private string GenerateLargeData()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("{\"data\":\"");

        int targetSize = MaxEventJsonBytes + 1024; // 50KB + 1KB
        while (sb.Length < targetSize)
        {
            sb.Append("LARGE_DATA_PADDING_");
        }

        sb.Append("\"}");
        return sb.ToString();
    }

    public void OnClick(int tag)
    {
        if (tag == 0)
        {
            action.Invoke(inputField1.text, inputField2.text);
            Dismiss();
        }
        else
        {
            action.Invoke(null, null);
            Dismiss();
        }

    }
}
