/// <summary>
 /// Возвращает объект "Специальность" созданный на основе данных в базе
 /// Вызывается исключение если специальности в базе не существует
 /// </summary>
 /// <param name="name">Имя специальности</param>
 /// <returns>Объект специальности</returns>
 public static Specialty GetByName(String name)
 {
     try
     {
         Specialty specialty = new Specialty();
         String    query     = "SELECT * FROM PERMANENT_USER.SPECIALTIES "
                               + "WHERE SPECIALTY = '" + name + "'";
         List <Object[]> list = specialty.ExecuteSelect(query);
         if (list.Count == 0)
         {
             throw new Exception("Запрос вернул 0 строк");
         }
         specialty.Id   = Convert.ToInt32(list.ElementAt(0).ElementAt(0));
         specialty.Name = list.ElementAt(0).ElementAt(1).ToString();
         return(specialty);
     }
     catch (Exception e)
     {
         Console.WriteLine("Невозможно получить объект специальности по имени");
         throw e;
     }
 }
 /// <summary>
 /// Проверяет существует ли специальность в базе данных с именем name
 /// </summary>
 /// <param name="name">true если запись в базе данных существует</param>
 /// <returns></returns>
 public static bool CanGetByName(String name)
 {
     try
     {
         Specialty specialty = new Specialty();
         String    query     = "SELECT * FROM PERMANENT_USER.SPECIALTIES "
                               + "WHERE SPECIALTY = '" + name + "'";
         if (specialty.ExecuteSelect(query).Count > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Ошибка при поиске специальности");
         throw e;
     }
 }
 /// <summary>
 /// Сменить тип специальности для данной вакансии и внести изменения в базу данных.
 /// Обычно данный метод вызывать не требуется
 /// </summary>
 /// <param name="specialty">Специальность для данной вакансии</param>
 public void ChangeSpecialty(Specialty specialty)
 {
     try
     {
         if (this.EmployerItn == null || this.EmployerItn.CompareTo("") == 0)
         {
             throw new Exception("Не задан работодатель");
         }
         String query = "UPDATE PERMANENT_USER.VACANCIES "
                        + "SET IDSPECIALTY = " + specialty.GetId() + " "
                        + "WHERE NAME = '" + this.Name + "' "
                        + "AND EMPLOYERITN = '" + this.EmployerItn + "'";
         ExecuteNonSelectQuery(query);
         this.CurrentSpecialty = specialty;
         Console.WriteLine("Тип специальности изменен для вакансии");
     }
     catch (Exception e)
     {
         Console.WriteLine("Невозможно сменить тип специальности для вакансии");
         throw e;
     }
 }
 /// <summary>
 /// Проверяется можно ли получить специальность из базы данных по идентификатору
 /// </summary>
 /// <param name="id">id специальности</param>
 /// <returns>true если запись специальности с id существует в базе данных</returns>
 public static bool CanGetByID(int id)
 {
     try
     {
         Specialty specialty = new Specialty();
         String    query     = "SELECT * FROM PERMANENT_USER.SPECIALTIES "
                               + "WHERE ID = " + id;
         List <Object[]> list = specialty.ExecuteSelect(query);
         if (list.Count > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Ошибка при поиске специальности");
         throw e;
     }
 }
 /// <summary>
 /// Убрать у текущего работника дополнительную приоритетную специальность
 /// Имя специальности должно существовать в базе данных
 /// </summary>
 /// <param name="specialty">Имя специальности для удаления</param>
 public void DeletePriorSpecialty(String specialty)
 {
     DeletePriorSpecialty(Specialty.GetByName(specialty));
 }
 /// <summary>
 /// Добавить текущему работнику дополнительную приоритетную специальность
 /// На основе этих данных будут подбираться предложения
 /// Имя специальности должно существовать в базе данных
 /// </summary>
 /// <param name="specialty">Имя специальности для добавления</param>
 public void AddPriorSpecialty(String specialty)
 {
     AddPriorSpecialty(Specialty.GetByName(specialty));
 }