/// <summary>
        /// Получает абонента из БД по его идентификатору.
        /// </summary>
        /// <param name="subscriberID">Идентификатор</param>
        /// <returns>Абонент</returns>
        public static Subscriber SelectSubscriberByID(long subscriberID)
        {
            Subscriber result = null;
            try
            {
                connection.Open();

                MySqlCommand cmd = new MySqlCommand("SELECT * FROM subscriber WHERE id = @id", connection);
                cmd.Parameters.AddWithValue("@id", subscriberID);
                MySqlDataReader r = cmd.ExecuteReader();
                if (r.Read())
                {
                    result = new Subscriber(r.GetInt64("id"), r.GetString("name"), DatabaseUtils.GetStringOrNull(r, "patronymic"), r.GetString("surname"), DatabaseUtils.GetStringOrNull(r, "email"), DatabaseUtils.GetStringOrNull(r, "login"), DatabaseUtils.GetStringOrNull(r, "password_hash"));
                }
                r.Close();
            }
            catch (MySqlException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());
            }
            finally
            {
                connection.Close();
            }

            return result;
        }
        /// <summary>
        /// Создает нового абонента.
        /// </summary>
        /// <returns>Абонент</returns>
        public static Subscriber GetNewSubscriber()
        {
            Subscriber result = null;
            long id;
            try
            {
                connection.Open();

                MySqlCommand cmd = new MySqlCommand("SELECT MAX(id) FROM subscriber_id", connection);
                MySqlDataReader r = cmd.ExecuteReader();
                if (r.Read())
                {
                    id = r.GetInt64("MAX(id)");
                    r.Close();
                    MySqlCommand cmd2 = new MySqlCommand("UPDATE subscriber_id SET id = @id", connection);
                    cmd2.Parameters.AddWithValue("@id", id+1);
                    cmd2.ExecuteNonQuery();
                    result = new Subscriber(id, Constants.No, Constants.No, Constants.No, Constants.No, Constants.No, Constants.DefaultPasswordHash);
                }
                r.Close();
            }
            catch (MySqlException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());
            }
            finally
            {
                connection.Close();
            }

            return result;
        }
 /// <summary>
 /// Конструктор контроллера детализированной информации.
 /// </summary>
 /// <param name="subscriberID">ID абонента</param>
 public DetailedInfController(long subscriberID)
 {
     _subscriber = Subscriber.SelectSubscriberByID(subscriberID);
     if (_subscriber == null)
         throw new BillingSystem.Exceptions.ModelObjectNotFoundException("Subscriber with number = " + subscriberID);
 }
 /// <summary>
 /// Инициализирует новый экземпляр класса Payment, получая в качестве аргументов следующие параметры:
 /// </summary>
 /// <param name="subscriber">Абонент</param>
 /// <param name="sum">Сумма</param>
 public Payment(Subscriber subscriber, double sum)
 {
     _date = System.DateTime.Now;
     _subscriberID = subscriber.ID;
     _sum = sum;
 }
 /// <summary>
 /// Создает экземпляр класса DepositController.
 /// </summary>
 /// <param name="id">Идентификатор абонента</param>
 public DepositController(long id)
 {
     _subscriber = Subscriber.SelectSubscriberByID(id);
 }
 /// <summary>
 /// Создает новый экземпляр класса Subscriber с указанным параметром:
 /// </summary>
 /// <param name="subscriberID">ID абонента</param>
 public SubscriberController(long subscriberID)
 {
     subscriber = Subscriber.SelectSubscriberByID(subscriberID);
     if (subscriber == null)
         throw new BillingSystem.Exceptions.ModelObjectNotFoundException("Subscriber with id = " + subscriberID + " doesn't exist");
 }
 /// <summary>
 /// Создает новый экземпляр класса Subscriber.
 /// </summary>
 public SubscriberController()
 {
     subscriber = Subscriber.GetNewSubscriber();
 }