示例#1
0
文件: Gas.cs 项目: jirizikmund/net
 /// <summary>
 /// Přetížení oprerátoru, slouží ke sčítání cen a objemu tankování
 /// </summary>
 /// <returns>Nový objekt tankování se sečtenýmy hodnotami ceny a objemu</returns> 
 public static Gas operator +(Gas g1, Gas g2)
 {
     Gas result = new Gas();
     result.cost = g1.cost + g2.cost;
     result.mililiters = g1.mililiters + g2.mililiters;
     return result;
 }
示例#2
0
 /// <summary>
 /// Získání souhrnné informace o včech tankování auta
 /// </summary>
 /// <param name="carId">Identifikace auta, o kterém chceme informace získat</param>
 /// <returns>ˇŘetězec s informacemi</returns>
 /// <exception cref="CarExpensesException">Při chybě aplikace</exception>
 public string getTotalGasInfo(int carId)
 {
     GasResponse response = this.getCarGasses(carId);
     if (response.success)
     {
         Gas gas = new Gas();
         int count = 0;
         foreach (Gas g in response.gasList)
         {
             count++;
             gas += g;
         }
         return "Total " + (float)(gas.mililiters / 100) + " liters for " + gas.cost.ToString("C") + "  (" + count + "x)";
     }
     else
     {
         return "Unknown total services stats.";
     }
 }
示例#3
0
文件: GasDAO.cs 项目: jirizikmund/net
        /// <summary>
        /// Vkládá informaci o novém tankování do databáze.
        /// Vše je potřebné se nachází v objektu tankování (parametr <paramref name="gas">gas</paramref>),
        /// včetné ID auta, ke kterému se vztahuje.
        /// </summary>
        /// <param name="gas">Nová informace o tankování pro vložení do databáze</param>
        /// <returns>True při úspěchu vložení</returns>
        /// <exception cref="CarExpensesDatabaseException">Při chybě práce s databází</exception>
        public bool addGas(Gas gas)
        {
            using (OracleCommand cmdInsert = new OracleCommand())
            {
                try
                {
                    string sqlInsert = "INSERT INTO \"gas\" (\"car_id\", \"km\", \"mililiters\", \"cost\", \"date\") ";
                    sqlInsert += "values (:p_car_id, :p_km, :p_mililiters, :p_cost, to_date(:p_date, 'yyyy/mm/dd'))";

                    cmdInsert.CommandText = sqlInsert;
                    cmdInsert.Connection = connection;

                    OracleParameter pCarId = new OracleParameter();
                    pCarId.OracleDbType = OracleDbType.Decimal;
                    pCarId.Value = gas.carId;
                    pCarId.ParameterName = "p_car_id";

                    OracleParameter pKm = new OracleParameter();
                    pKm.OracleDbType = OracleDbType.Decimal;
                    pKm.Value = gas.km;
                    pKm.ParameterName = "p_km";

                    OracleParameter pMililiters = new OracleParameter();
                    pMililiters.OracleDbType = OracleDbType.Decimal;
                    pMililiters.Value = gas.mililiters;
                    pMililiters.ParameterName = "p_mililiters";

                    OracleParameter pCost = new OracleParameter();
                    pCost.OracleDbType = OracleDbType.Decimal;
                    pCost.Value = gas.cost;
                    pCost.ParameterName = "p_cost";

                    OracleParameter pDate = new OracleParameter();
                    //pDate.OracleDbType = OracleDbType.Date;
                    pDate.Value = gas.date.ToString("yyyy/MM/dd");
                    pDate.ParameterName = "p_date";

                    cmdInsert.Parameters.Add(pCarId);
                    cmdInsert.Parameters.Add(pKm);
                    cmdInsert.Parameters.Add(pMililiters);
                    cmdInsert.Parameters.Add(pCost);
                    cmdInsert.Parameters.Add(pDate);

                    if ( cmdInsert.ExecuteNonQuery() > 0 )
                    {
                        return true;
                    }
                    else return false;
                }
                catch (OracleException ex)
                {
                    switch (ex.Number)
                    {
                        case 1:
                            throw new CarExpensesDatabaseException("Gas ID " + gas.id + " already exists.");
                        //case 2291:
                        //   throw new CarExpensesDatabaseException("Car ID " + gas.carId + " doesn't exist.");
                        case 12545:
                            throw new CarExpensesDatabaseException("The database is unavailable.");
                        default:
                            throw new CarExpensesDatabaseException("Database error: " + ex.Message.ToString());
                    }
                }
                catch (CarExpensesDatabaseException ex)
                {
                    throw new CarExpensesDatabaseException(ex.Message.ToString());
                }
                catch (Exception ex)
                {
                    throw new CarExpensesDatabaseException("Unexpected error: " + ex.Message.ToString());
                }
            }
        }
示例#4
0
        /// <summary>
        /// Přidání nového tankování k aktuálně přihlášenému uživateli
        /// </summary>
        /// <param name="carId">Identifikace auta, do kterého bylo tankováno</param>
        /// <param name="km">Stav tachometru při tankování</param>
        /// <param name="cost">Cena za tankování</param>
        /// <param name="liters">Počet natankovaných litrů paliva</param>
        /// <param name="date">Datum tankování</param>
        /// <returns>Objekt <see cref="Response"/>, kde je uložen stav akce a zpráva.</returns>
        /// <exception cref="CarExpensesException">Při chybě aplikace</exception>
        public Response addGas(int carId, int km, float liters, int cost, DateTime date)
        {
            if (notLogged()) return new Response(false, "You are NOT logged in.");

            if (km < 1 || liters < 1 || cost < 1)
                return new Response(false, "None of values can be smaller than 1.");

            Response response = new Response();
            try
            {
                if (carDAO.userHasCar(user.id, carId) == false)
                {
                    return new Response(false, "User ID " + user.id + " is not owner of car ID " + carId + ".");
                }

                Gas gas = new Gas();
                gas.carId = carId;
                gas.km = km;
                gas.mililiters = (int) Math.Round(liters * 1000);
                gas.cost = cost;
                gas.date = date;

                if (gasDAO.addGas(gas) == true)
                {
                    response.message = "Gas was successfuly added.";
                    response.success = true;
                }
                else
                {
                    response.message = "Gas wasn't added.";
                    response.success = false;
                }
            }
            catch (CarExpensesDatabaseException ex)
            {
                response.success = false;
                response.message = ex.Message.ToString();
            }
            return response;
        }
示例#5
0
文件: GasDAO.cs 项目: jirizikmund/net
        /// <summary>
        /// Získává všechny informace o tankování vztahující se ka autu danému parametrem <paramref name="carId">carId</paramref>
        /// </summary>
        /// <param name="carId">ID auta</param>
        /// <returns>Seznam informací o tankování pro dané auto</returns>
        /// <exception cref="CarExpensesDatabaseException">Při chybě práce s databází</exception>
        public List<Gas> getCarGasses(int carId)
        {
            List<Gas> gasList = new List<Gas>();

            using (OracleCommand cmd = new OracleCommand())
            {
                try
                {
                    cmd.Connection = connection;
                    cmd.CommandText = "SELECT * FROM \"gas\" WHERE \"car_id\" = :p_car_id ORDER BY \"date\" DESC";
                    cmd.CommandType = System.Data.CommandType.Text;

                    OracleParameter pCarId = new OracleParameter();
                    pCarId.OracleDbType = OracleDbType.Decimal;
                    pCarId.Value = carId;
                    pCarId.ParameterName = "p_car_id";

                    cmd.Parameters.Add(pCarId);

                    using (OracleDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.HasRows)
                        {
                            while (dr.Read())
                            {
                                Gas gas = new Gas();
                                gas.id = Convert.ToInt32(dr["id"].ToString());
                                gas.carId = Convert.ToInt32(dr["car_id"].ToString());
                                gas.km = Convert.ToInt32(dr["km"].ToString());
                                gas.mililiters = Convert.ToInt32(dr["mililiters"].ToString());
                                gas.cost = Convert.ToInt32(dr["cost"].ToString());
                                gas.date = Convert.ToDateTime(dr["date"].ToString());
                                gasList.Add(gas);
                            }
                        }

                        return gasList;
                    }
                }
                catch (OracleException ex)
                {
                    switch (ex.Number)
                    {
                        case 12545:
                            throw new CarExpensesDatabaseException("The database is unavailable.");
                        default:
                            throw new CarExpensesDatabaseException("Database error: " + ex.Message.ToString());
                    }
                }
                catch (CarExpensesDatabaseException ex)
                {
                    throw new CarExpensesDatabaseException(ex.Message.ToString());
                }
                catch (Exception ex)
                {
                    throw new CarExpensesDatabaseException("Unexpected error: " + ex.Message.ToString());
                }
            }
        }