Esempio n. 1
0
        /// <summary>
        /// Получает тариф из БД по его идентификатору, паредаваемому в качестве параметра.
        /// </summary>
        /// <param name="tariffID">Идентификатор</param>
        /// <returns>Тариф</returns>
        public static Tariff SelectTariffByID(long tariffID)
        {
            Tariff result = null;
            try
            {
                connection.Open();

                MySqlCommand cmd = new MySqlCommand("SELECT * FROM tariff WHERE id = @tariffID", connection);
                cmd.Parameters.AddWithValue("@tariffID", tariffID);
                MySqlDataReader r = cmd.ExecuteReader();
                if (r.Read())
                {
                    result = new Tariff(r.GetInt64("id"), r.GetString("name"), DatabaseUtils.GetStringOrNull(r, "description"), r.GetBoolean("active"));
                }
                r.Close();
            }
            catch (MySqlException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());
            }
            finally
            {
                connection.Close();
            }

            return result;
        }
 /// <summary>
 /// Рассчитывает стоимость звонка.
 /// </summary>
 /// <param name="call">Звонок</param>
 /// <param name="tariff">Тариф</param>
 /// <returns>Стоимость</returns>
 public static double CalculateCallCost(Call call, Tariff tariff)
 {
     Price price = tariff.SelectCallPrice(call.CalledNumber);
     double cost = price.Cost * (call.Duration.TotalSeconds);
     return Math.Round(cost, 2);
 }
Esempio n. 3
0
        /// <summary>
        /// Возвращает тариф для данного номера на конкретный момент времени.
        /// </summary>
        /// <param name="date">Дата и время</param>
        /// <returns>Тариф</returns>
        public Tariff SelectTariffByDate(DateTime date)
        {
            Tariff result = null;
            try
            {
                connection.Open();

                string query = "SELECT * FROM tariff WHERE id = (SELECT tariff_id FROM tariff_history WHERE phone_id = @phone_id AND start_date <= @date AND (end_date > @date OR end_date IS NULL))";

                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.Parameters.AddWithValue("@phone_id", _id);
                cmd.Parameters.AddWithValue("@date", date);

                MySqlDataReader r = cmd.ExecuteReader();
                while (r.Read())
                {
                    result = new Tariff(r.GetInt64("id"), r.GetString("name"), DatabaseUtils.GetStringOrNull(r, "description"), r.GetBoolean("active"));
                }
                r.Close();
            }
            catch (MySqlException ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());

            }
            finally
            {
                connection.Close();
            }

            return result;
        }
 /// <summary>
 /// Создает экземпляр класса ChangeTariffController.
 /// </summary>
 /// <param name="number">Номер телефона</param>
 public ChangeTariffController(PhoneNumber number)
 {
     _number = number;
     _tariff = _number.GetTariff();
 }