/// <summary>Deletes a <see cref="FuelTransaction"/> from the database.</summary>
        /// <param name="deleteTransaction"><see cref="FuelTransaction"/> to be deleted</param>
        /// <returns>Returns true if deletion is successful</returns>
        public Task <bool> DeleteTransaction(FuelTransaction deleteTransaction)
        {
            SQLiteCommand cmd = new SQLiteCommand {
                CommandText = "DELETE FROM Transactions WHERE [TransactionID] = @transactionID"
            };

            cmd.Parameters.AddWithValue("@transactionID", deleteTransaction.TranscationID);

            return(SQLiteHelper.ExecuteCommand(_con, cmd));
        }
예제 #2
0
        /// <summary>Attempts to add a <see cref="FuelTransaction"/> to the database.</summary>
        /// <returns>Returns true if successfully added</returns>
        private async Task <bool> ModifyTransaction()
        {
            ModifiedTransaction = new FuelTransaction(UnmodifiedTransaction.TranscationID,
                                                      UnmodifiedTransaction.VehicleID, DateTimeHelper.Parse(TransactionDate.SelectedDate), TxtStore.Text,
                                                      Int32Helper.Parse(TxtOctane.Text), DecimalHelper.Parse(TxtDistance.Text),
                                                      DecimalHelper.Parse(TxtGallons.Text), DecimalHelper.Parse(TxtPrice.Text),
                                                      DecimalHelper.Parse(TxtOdometer.Text), Int32Helper.Parse(TxtRange.Text));

            if (await AppState.DatabaseInteraction.ModifyTransaction(UnmodifiedTransaction, ModifiedTransaction))
            {
                CurrentVehicle.ModifyTransaction(UnmodifiedTransaction, ModifiedTransaction);
                return(true);
            }
            return(false);
        }
        /// <summary>Adds a new <see cref="FuelTransaction"/> to the database.</summary>
        /// <param name="newTransaction"><see cref="FuelTransaction"/> to be added</param>
        /// <returns>Returns true if add is successful</returns>
        public Task <bool> NewTransaction(FuelTransaction newTransaction)
        {
            SQLiteCommand cmd = new SQLiteCommand {
                CommandText = "INSERT INTO Transactions([VehicleID], [Store], [Date], [Octane], [Distance], [Gallons], [Price], [Odometer], [Range])VALUES(@id, @store, @date, @octane, @distance, @gallons, @price, @odometer, @range)"
            };

            cmd.Parameters.AddWithValue("@id", newTransaction.VehicleID);
            cmd.Parameters.AddWithValue("@store", newTransaction.Store);
            cmd.Parameters.AddWithValue("@date", newTransaction.DateToString);
            cmd.Parameters.AddWithValue("@octane", newTransaction.Octane);
            cmd.Parameters.AddWithValue("@distance", newTransaction.Distance);
            cmd.Parameters.AddWithValue("@gallons", newTransaction.Gallons);
            cmd.Parameters.AddWithValue("@price", newTransaction.Price);
            cmd.Parameters.AddWithValue("@odometer", newTransaction.Odometer);
            cmd.Parameters.AddWithValue("@range", newTransaction.Range);
            return(SQLiteHelper.ExecuteCommand(_con, cmd));
        }
        /// <summary>Modifies an existing <see cref="FuelTransaction"/>.</summary>
        /// <param name="oldTransaction">Existing <see cref="FuelTransaction"/></param>
        /// <param name="newTransaction">New <see cref="FuelTransaction"/></param>
        /// <returns>Returns true if modification is successful</returns>
        public Task <bool> ModifyTransaction(FuelTransaction oldTransaction, FuelTransaction newTransaction)
        {
            SQLiteCommand cmd = new SQLiteCommand
            {
                CommandText = "UPDATE Transactions SET [VehicleID] = @vehicleID, [Store] = @store, [Date] = @date, [Octane] = @octane, [Distance] = @distance, [Gallons] = @gallons, [Price] = @price, [Odometer] = @odometer, [Range] = @range WHERE [TransactionID] = @transactionID"
            };

            cmd.Parameters.AddWithValue("@vehicleID", newTransaction.VehicleID);
            cmd.Parameters.AddWithValue("@store", newTransaction.Store.Replace("'", "''"));
            cmd.Parameters.AddWithValue("@date", newTransaction.DateToString);
            cmd.Parameters.AddWithValue("@octane", newTransaction.Octane);
            cmd.Parameters.AddWithValue("@distance", newTransaction.Distance);
            cmd.Parameters.AddWithValue("@gallons", newTransaction.Gallons);
            cmd.Parameters.AddWithValue("@price", newTransaction.Price);
            cmd.Parameters.AddWithValue("@odometer", newTransaction.Odometer);
            cmd.Parameters.AddWithValue("@range", newTransaction.Range);
            cmd.Parameters.AddWithValue("@transactionID", oldTransaction.TranscationID);

            return(SQLiteHelper.ExecuteCommand(_con, cmd));
        }
        /// <summary>Attempts to add a <see cref="FuelTransaction"/> to the database.</summary>
        /// <returns>Returns true if successfully added</returns>
        private async Task <bool> AddTransaction()
        {
            FuelTransaction newTransaction = new FuelTransaction(await AppState.DatabaseInteraction.GetNextTransactionIndex(),
                                                                 CurrentVehicle.VehicleID, DateTimeHelper.Parse(TransactionDate.SelectedDate), TxtStore.Text,
                                                                 Int32Helper.Parse(TxtOctane.Text), DecimalHelper.Parse(TxtDistance.Text),
                                                                 DecimalHelper.Parse(TxtGallons.Text), DecimalHelper.Parse(TxtPrice.Text),
                                                                 DecimalHelper.Parse(TxtOdometer.Text), Int32Helper.Parse(TxtRange.Text));

            // if the odometer or distance weren't both set, determine the distance/odometer so MPG/odometer will be calculated properly
            if (newTransaction.Distance <= 0M)
            {
                if (newTransaction.Odometer > 0M && CurrentVehicle.Transactions.Count > 0)
                {
                    newTransaction.Distance = newTransaction.Odometer - CurrentVehicle.Transactions[0].Odometer;
                }
                else if (newTransaction.Odometer >= 0M && CurrentVehicle.Transactions.Count == 0)
                {
                    newTransaction.Distance = newTransaction.Odometer;
                }
            }
            else if (newTransaction.Odometer <= 0M)
            {
                if (newTransaction.Distance > 0M && CurrentVehicle.Transactions.Count > 0)
                {
                    newTransaction.Odometer = CurrentVehicle.Transactions[0].Odometer + newTransaction.Distance;
                }
                else if (newTransaction.Distance > 0M && CurrentVehicle.Transactions.Count == 0)
                {
                    newTransaction.Odometer = newTransaction.Distance;
                }
            }

            if (!await AppState.DatabaseInteraction.NewTransaction(newTransaction))
            {
                return(false);
            }
            CurrentVehicle.AddTransaction(newTransaction);
            return(true);
        }
예제 #6
0
 /// <summary>Adds a new <see cref="FuelTransaction"/> to the database.</summary>
 /// <param name="newTransaction"><see cref="FuelTransaction"/> to be added</param>
 /// <returns>Returns true if add successful</returns>
 public static Task <bool> NewFuelTransaction(FuelTransaction newTransaction) => DatabaseInteraction
 .NewFuelTransaction(newTransaction);
예제 #7
0
 /// <summary>Modifies an existing <see cref="FuelTransaction"/>.</summary>
 /// <param name="oldTransaction">Existing <see cref="FuelTransaction"/></param>
 /// <param name="newTransaction">New <see cref="FuelTransaction"/></param>
 /// <returns>Returns true if modification successful</returns>
 public static Task <bool> ModifyFuelTransaction(FuelTransaction oldTransaction, FuelTransaction newTransaction) =>
 DatabaseInteraction.ModifyFuelTransaction(oldTransaction, newTransaction);
예제 #8
0
 /// <summary>Deletes a <see cref="FuelTransaction"/> from the database.</summary>
 /// <param name="deleteTransaction"><see cref="FuelTransaction"/> to be deleted</param>
 /// <returns>Returns true if deletion successful</returns>
 public static Task <bool> DeleteFuelTransaction(FuelTransaction deleteTransaction) => DatabaseInteraction
 .DeleteFuelTransaction(deleteTransaction);