using esoft.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace esoft.Class
{
    internal static class UserInFIO
    {
        // Метод SoloUser формирует ФИО пользователя в формате "Фамилия Имя[0]. Отчество[0].".
        public static string SoloUser(User user)
        {
            return $"{user.MiddleName} {user.FirstName[0]}. {user.LastName[0]}.";
        }

        // Метод GroupUser формирует список ФИО пользователей в формате "Фамилия Имя[0]. Отчество[0]." из списка объектов типа User.
        public static List<string> GroupUser(List<User> users)
        {
            List<string> userFIO = new List<string>();
            foreach (var user in users)
            {
                userFIO.Add($"{user.MiddleName} {user.FirstName[0]}. {user.LastName[0]}.");
            }
            return userFIO;
        }

        // Метод ExecuterOnForm формирует информацию о пользователе и исполнителе в формате "Фамилия Имя[0]. Отчество[0].\nЛогин - Логин, Уровень - Уровень.".
        public static string ExecuterOnForm(User user)
        {
            string answer = null;
            try
            {
                // Получение объекта исполнителя для указанного пользователя
                Executor executor = esoftEntities.GetContext().Executor.FirstOrDefault(x => x.ID == user.ID);

                // Формирование строки с ФИО, логином и уровнем исполнителя
                answer = $"{user.MiddleName} {user.FirstName[0]}. {user.LastName[0]}.";
                answer += $"\nЛогин - {user.Login}, Уровень - {executor.Grade}.";
            }
            catch
            {
                // В случае ошибки выводится сообщение об ошибке
                MessageBox.Show("Ошибка получения уровня пользователя",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
            }
            return answer;
        }
    }
}
