using Newtonsoft.Json;
using esoft.Class;
using esoft.Entities;
using esoft.Models.Respounce;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace esoft.Pages
{
    /// <summary>
    /// Логика взаимодействия для LoginPage.xaml
    /// </summary>
    public partial class LoginPage : Page
    {
        ActualContext actualContext = new ActualContext();
        private const string apiUrl = "http://localhost:55429/api/Users/";

        public LoginPage()
        {
            InitializeComponent();
        }

        private async void BtnLogin_Click(object sender, RoutedEventArgs e)
        {

            // Получение логина и пароля из текстовых полей
            string username = TBoxLogin.Text;
            string password = PBoxPassword.Password;

            // Отправка запроса к API
            var user = await GetUserFromApi(username);

            if (user != null && user.Password == password && !user.IsDeleted)
            {
                // Успешная авторизация
                GetCurrent.CurrentUser = user;

                // Перенаправление пользователя на страницу с задачами
                NavigationService.Navigate(new Pages.TaskLists());
            }
            else
            {
                // Ошибка авторизации
                MessageBox.Show("Ошибка авторизации. Пожалуйста, проверьте логин и пароль.");
            }
        }

        private async Task<User> GetUserFromApi(string username)
        {
            using (HttpClient client = new HttpClient())
            {
                try
                {
                    // Отправка GET-запроса к API
                    var response = await client.GetStringAsync(apiUrl);

                    // Десериализация JSON-ответа в объект User
                    var users = JsonConvert.DeserializeObject<List<User>>(response);

                    // Поиск пользователя по логину
                    var user = users.FirstOrDefault(u => u.Login == username);

                    return user;
                }
                catch (Exception ex)
                {
                    // Обработка ошибок
                    MessageBox.Show($"Ошибка при получении данных с сервера: {ex.Message}");
                    return null;
                }
            }
        }
    }
}
