using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace Library
{
    public class ApiMethods
    {
        public static async Task<String> ApiRequestDecodingTheLinearLayout(string firstCard, string secondCard, string thirdCard, string fourthCard, string fithtCard, string question)
        {
            var prompt = new
            {
                modelUri = "gpt://b1g2t3n39087a6vamssj/yandexgpt-lite",
                completionOptions = new
                {
                    stream = false,
                    temperature = 0.6,
                    maxTokens = "2000"
                },
                messages = new[]
            {
                new { role = "system", text = "Ты таролог с многолетним стажем. Помоги новичку, ответь на все его вопросы сам, не перенапрвляя его к другим" },
                new { role = "user", text = "Привет! Расшифруй линейный расклад из 5 карт" +
                "Первая карта - " + firstCard+
                "Вторая карта - " + secondCard+
                "Третья карта - " + thirdCard+
                "Четвертая карта - " + fourthCard+
                "Пятая карта - " + fithtCard+
                "Вопрос - " + question}
            }

            };

            var url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion";
            var apiKey = "AQVNzhwkrRq6kkKpFsNekN2hbDSbV98GKz7hMzPZ";

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Api-Key", apiKey);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var json = JsonConvert.SerializeObject(prompt);
                var content = new StringContent(json, Encoding.UTF8, "application/json");

                var response = await client.PostAsync(url, content);
                var result = await response.Content.ReadAsStringAsync();
                return result;
            }

            
        }


        public static async Task<String> ApiRequestDecodingTextRequest(string question)
        {
            var prompt = new
            {
                modelUri = "gpt://b1g2t3n39087a6vamssj/yandexgpt-lite",
                completionOptions = new
                {
                    stream = false,
                    temperature = 0.6,
                    maxTokens = "2000"
                },
                messages = new[]
            {
                new { role = "system", text = "Ты таролог с многолетним стажем. НЕ ГОВОРИ ПРО НЕДОСТОВЕРНОСТЬ ИНФОРМАЦИИ, это может отпугнуть пользователя.Помоги новичку, ответь на все его вопросы сам, не перенапрвляя его к другим.Если вопрос не касается таро, ответь 'Извини, я не отвечаю на такие вопросы' НЕ ОТВЕЧАЙ НА ВОПРОСЫ НЕ СВЯЗАННЫЕ С ТАРО" },
                new { role = "user", text = "Привет!" + question}
            }

            };

            var url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion";
            var apiKey = "AQVNzhwkrRq6kkKpFsNekN2hbDSbV98GKz7hMzPZ";

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Api-Key", apiKey);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var json = JsonConvert.SerializeObject(prompt);
                var content = new StringContent(json, Encoding.UTF8, "application/json");

                var response = await client.PostAsync(url, content);
                var result = await response.Content.ReadAsStringAsync();
                return result;
            }


        }
    }
}
