/// <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); }
/// <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(); }