using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using CandyCoded.env;
using models;
using services;
using TMPro;
using UnityEngine;

public enum TrashType
{
    Temperature,
    Distance,
    Gyro
}

public class PocketBaseDataRepository : MonoBehaviour
{
    [SerializeField] public String userToken;
    [SerializeField] public Trash[] trashes;
    [SerializeField] public TrashType type = TrashType.Distance;
    [SerializeField] public TextMeshPro textToUpdate;
    [SerializeField] public float timeBetweenUpdate = 10f;
    private float currentCountdown;

    void Start()
    {
        this.currentCountdown = this.timeBetweenUpdate;
        env.TryParseEnvironmentVariable("API_USER", out string user);
        env.TryParseEnvironmentVariable("API_PASSWORD", out string password);
        LoginResponse res = UserService.Login(new LoginRequest(user, password));
        this.userToken = res.token;
        this.UpdateData();
    }

    void UpdateData()
    {
        TrashList list = TrashService.ListTrash(this.userToken);
        foreach (Trash trash in list.items)
        {
            DataList trashData = TrashService.ListTrashData(userToken, trash.id);
            trash.data = trashData.items;
        }
        this.trashes = list.items;
        this.UpdateText();
    }

    void UpdateText()
    {
        if (this.trashes.Length <= 0 || this.textToUpdate == null)
        {
            return;
        }
        this.textToUpdate.text = "" + this.trashes[0].data[0].value + " " + this.trashes[0].data[0].unit;

    }

    void Update()
    {
        this.currentCountdown -= Time.deltaTime;
        if (this.currentCountdown <= 0)
        {
            this.currentCountdown = this.timeBetweenUpdate;
            this.UpdateData();
        }
    }

    private void LateUpdate()
    {
        this.textToUpdate.transform.LookAt(Camera.main.transform.position);
        this.textToUpdate.transform.rotation = Quaternion.LookRotation(this.textToUpdate.transform.position - Camera.main.transform.position);
    }
}
