using Demo.Domain.UseCase;
using System;
using System.Text;

namespace Demo.UI
{
    public class UserConsoleUI
    {
        private readonly UserUseCase _userUseCase;

        public UserConsoleUI(UserUseCase userUseCase)
        {
            _userUseCase = userUseCase;
        }

        // Метод для отображения всех пользователей
        public void DisplayAllUsers()
        {
            Console.WriteLine("\n=== Список всех пользователей ===");
            StringBuilder userOutput = new StringBuilder();

            foreach (var user in _userUseCase.GetAllUsers())
            {
                userOutput.AppendLine($"{user.ID}\t{user.FIO}\t{user.Group.Name}");
            }

            Console.WriteLine(userOutput);
            Console.WriteLine("===============================\n");
        }

        // Метод для удаления пользователя по ID
        public void RemoveUserById(int userId)
        {
            string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не найден";
            Console.WriteLine($"\n{output}\n");
        }

        // Метод для обновления пользователя по ID
        public void UpdateUserById(int userId)
        {
            try
            {
                var user = _userUseCase.FindUserById(userId);

                Console.WriteLine($"Текущие данные: {user.FIO}, {user.Group.Name}");
                Console.Write("\nВведите новое ФИО: ");
                string newFIO = Console.ReadLine();

                user.FIO = newFIO;
                _userUseCase.UpdateUser(user);

                Console.WriteLine("\nПользователь обновлен.\n");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Ошибка: {ex.Message}\n");
            }
        }

        // Метод для поиска пользователя по ID
        public void FindUserById(int userId)
        {
            var user = _userUseCase.FindUserById(userId);
            if (user != null)
            {
                Console.WriteLine($"\nПользователь найден: {user.ID}, {user.FIO}, {user.Group.Name}\n");
            }
            else
            {
                Console.WriteLine("\nПользователь не найден.\n");
            }
        }
    }
}
