/// <summary>
        /// Функция возвращает объект пользователя инициализированный на основе данных из базы данных
        /// </summary>
        /// <param name="login">Логин пользователя из базы данных</param>
        /// <returns>Возвращает объект или null</returns>
        public static User GetByLogin(String login)
        {
            String query = "SELECT USERS.USERLOGIN, USERS.USERPASSWORD, USERROLES.ROLEID "
                           + "FROM PERMANENT_USER.USERS, PERMANENT_USER.USERROLES "
                           + "WHERE USERS.USERLOGIN = '******' "
                           + "AND USERROLES.USERLOGIN = USERS.USERLOGIN";
            User            newUser = new User();
            List <Object[]> list    = newUser.ExecuteSelect(query);

            if (list.Count == 0)
            {
                return(null);
            }
            else
            {
                try
                {
                    newUser.Login    = list.ElementAt(0).ElementAt(0).ToString();
                    newUser.Password = list.ElementAt(0).ElementAt(1).ToString();
                    newUser.RoleId   = Convert.ToInt32(list.ElementAt(0).ElementAt(2));
                    return(newUser);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Невозможно корректно преобразовать данные из базы");
                    throw e;
                }
            }
        }
 /// <summary>
 /// Получить все объекты пользователей из базы данных
 /// </summary>
 /// <returns>Список пользователей</returns>
 public static List <User> GetAll()
 {
     try
     {
         String query = "SELECT * FROM PERMANENT_USER.USERS";
         //Временный пользователь для вызова методов базового класса
         User            temp = new User();
         List <Object[]> list = temp.ExecuteSelect(query);
         if (list.Count == 0)
         {
             throw new Exception("Запрос не вернул ни одной строки");
         }
         List <User> result = new List <User>();
         foreach (Object[] currentUser in list)
         {
             User newUser = new User();
             newUser.Login    = currentUser.ElementAt(0).ToString();
             newUser.Password = currentUser.ElementAt(1).ToString();
             result.Add(newUser);
         }
         return(result);
     }
     catch (Exception e)
     {
         Console.WriteLine("Невозможно получить список пользователей");
         throw e;
     }
 }
        /// <summary>
        /// Функция ищет пользователя по логину
        /// Обратите внимание, что это статическая функция и может быть вызвана без создания объекта
        /// </summary>
        /// <param name="login">Логин пользователя для поиска в базе данных</param>
        /// <returns>true, если пользователь с таким логином существует</returns>
        public static Boolean CanFindByLogin(String login)
        {
            String query = "SELECT * FROM PERMANENT_USER.USERS "
                           + "WHERE USERLOGIN = '******'";

            try
            {
                User newUser = new User();
                if (newUser.ExecuteSelect(query).Count != 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка обращения к базе данных");
                throw e;
            }
        }