예제 #1
0
        public async Task <IActionResult> PutFuelPurchase(ulong id, FuelPurchase fuelPurchase)
        {
            if (id != fuelPurchase.Id)
            {
                return(BadRequest());
            }

            _context.Entry(fuelPurchase).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FuelPurchaseExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public void getFuelEconomyTest()
        {
            // this is just a sample data for vehicle
            Vehicle vehicle = new Vehicle();

            vehicle.Id              = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e");
            vehicle.RegistrationID  = "21HSK1";
            vehicle.CarManufacture  = "Ford";
            vehicle.CarModel        = "LOL";
            vehicle.CarYear         = 2019;
            vehicle.FuelType        = "Petrol";
            vehicle.TankCapacity    = 50;
            vehicle.VehicleOdometer = 100;
            // add to the new vehicle lists
            CarList.vehicles.Add(vehicle);

            Journey journey = new Journey();

            // this is just a sample data for journey
            journey.id             = Guid.NewGuid();
            journey.BookingID      = Guid.NewGuid();
            journey.vehicleID      = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e");
            journey.JourneyStartAt = DateTime.Parse("2019-11-25");
            journey.JourneyEndedAt = DateTime.Parse("2019-11-26");
            journey.StartOdometer  = 100;
            journey.EndOdometer    = 460;
            journey.JourneyFrom    = "Perth";
            journey.JourneyTo      = "Midlands";
            CarList.journeys.Add(journey);

            // this is just a sample data for fuel purchases
            double       FuelQuantity = double.Parse("30");
            double       FuelPrice    = double.Parse("1.5");
            FuelPurchase fuelPurchase = new FuelPurchase(FuelQuantity, FuelPrice);

            fuelPurchase.VId = Guid.Parse("0f8fad5b-d9cb-469f-a165-70867728950e");

            CarList.fuelPurchases.Add(fuelPurchase);

            Vehicle             relatedVehicle            = CarList.vehicles.Find(v => v.Id == fuelPurchase.VId);
            Journey             relatedJourneys           = CarList.journeys.Find(j => j.vehicleID == fuelPurchase.VId);
            List <FuelPurchase> fuelPurchases             = CarList.fuelPurchases.Where(fp => fp.VId == relatedJourneys.vehicleID).ToList();
            List <Journey>      allJourneysRelatedWithFps = CarList.journeys.Where(j => j.vehicleID == relatedVehicle.Id).ToList();

            double totalKmTravelled = 0.0;
            double totalFuelUsed    = 0.0;

            if (fuelPurchases != null)
            {
                totalFuelUsed    = fuelPurchases.Sum(fps => fps.FuelQuantity);
                totalKmTravelled = allJourneysRelatedWithFps.Max(max => max.EndOdometer) - allJourneysRelatedWithFps.Min(min => min.StartOdometer);
            }
            // act
            double fuelEconomy = totalKmTravelled / totalFuelUsed;

            // assert
            // 360/30 expected result should be 12
            Assert.AreEqual(12, fuelEconomy);
        }
예제 #3
0
        public FuelPurchaseMock()
        {
            FuelPurchaseMock1 = new FuelPurchase();
            FuelPurchaseMock2 = new FuelPurchase();

            FuelPurchaseMock2.SetFuelEconomy(61);
            FuelPurchaseMock2.PurchaseFuel(47.29, 19.41);
        }
        public void getFuelEconomy_Test3()
        {
            FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading + 200, 25, 1.5);
            TestClass.updateTestVehicle();
            FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading + 400, 25, 1.5);

            double result = FuelPurchase.GetFuelEconomy(TestClass.v.Id);

            Assert.AreEqual(result, 8);
        }
        public void addPurchaseFuel_Test()
        {
            var listCountBefore = FuelPurchase.fuelList.Count;

            FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading + 200, 45, 1.3);

            var listCountAfter = FuelPurchase.fuelList.Count;

            Assert.AreEqual(listCountBefore + 1, listCountAfter);
        }
        public void FuelPurchaseTest()
        {
            // this is just a sample data/input
            double       fuelQuantity = 30;
            double       fuelPrice    = 1.5;
            FuelPurchase fuelPurchase = new FuelPurchase(fuelQuantity, fuelPrice);

            // act
            fuelPurchase.TotalCost = fuelPrice * fuelQuantity;
            // assert
            Assert.AreEqual(45, fuelPurchase.TotalCost);
        }
예제 #7
0
        public void deleteFuelPurchasesTest()
        {
            CarList car = new CarList();
            // this is just a sample data
            double FuelQuantity = double.Parse("30");
            double FuelPrice = double.Parse("1.5");
            FuelPurchase fuelPurchase = new FuelPurchase(FuelQuantity, FuelPrice);
            fuelPurchase.VId = Guid.NewGuid();

            CarList.fuelPurchases.Add(fuelPurchase);
            // it will return true if its deleted
            Assert.IsTrue(VehicleHistory.deleteFuelPurchases(fuelPurchase));
        }
예제 #8
0
        public void TestCostOutput()
        {
            for (int i = 0; i < 1000; i++)
            {
                var Purchase = new FuelPurchase(i);

                // assert
                double actualCost      = Purchase.Cost;
                double expectedCost    = 2.00 * i;
                double allowedVariance = 0.25 * i;
                Assert.AreEqual(expectedCost, actualCost, allowedVariance);
            }
        }
예제 #9
0
        private void btnAddFuel_Click(object sender, EventArgs e)
        {
            int  num;
            bool result = int.TryParse(txtFuel.Text, out num);

            if (result)
            {
                FuelPurchase fuel = new FuelPurchase(num);
                Vehicles[cbVehicles.SelectedIndex].TLpurchased = Vehicles[cbVehicles.SelectedIndex].AddFuel(num);
                Vehicles[cbVehicles.SelectedIndex].CalcFuelEcon();
                rtbReport.Text = Vehicles[cbVehicles.SelectedIndex].PrintToScreen() + "\n\nTotal litres of fuel has been updated.";
            }
            else
            {
                MessageBox.Show("Please enter a valid number");
            }
        }
예제 #10
0
        //creates a new journey and fuel purchase and adds them to the car
        private void Add_Journey_Click(object sender, EventArgs e)
        {
            int     journeyKilometers;
            int     litresFuelUsed;
            Vehicle current = Vehicles.ElementAt(cbxAddJourney.SelectedIndex);

            if (Kilometers_travelled_TextBox.Text == string.Empty)
            {
                MessageBox.Show("Kilometers Travelled text box is Empty!");
            }

            else if (Fuel_Used_Text_Box.Text == string.Empty)
            {
                MessageBox.Show("Fuel Used text box is Empty");
            }

            else if (!int.TryParse(Kilometers_travelled_TextBox.Text, out journeyKilometers))
            {
                MessageBox.Show("kilometers traveled must be a whole number");
            }

            else if (!int.TryParse(Fuel_Used_Text_Box.Text, out litresFuelUsed))
            {
                MessageBox.Show("Fuel used must be a whole number of litres");
            }

            else
            {
                //creates a new instance of journey and fuelpurchase and adds them to the vehicle
                Journey      J  = new Journey(journeyKilometers);
                FuelPurchase fp = new FuelPurchase(litresFuelUsed);
                current.AddJourney(J);
                current.AddFuelPurchase(fp);

                //updates whether car requires service
                Service.CheckServiceNeeded(current);
                current.CalcFuelEconomy();

                Kilometers_travelled_TextBox.Clear();
                Fuel_Used_Text_Box.Clear();
            }
        }
예제 #11
0
        public async Task <ActionResult <FuelPurchase> > PostFuelPurchase(FuelPurchase fuelPurchase)
        {
            var associatedVehicle = await _context.Vehicles.SingleOrDefaultAsync(v => v.Uuid == fuelPurchase.VehicleUuid);

            var associatedBooking = await _context.Bookings.SingleOrDefaultAsync(b => b.Uuid == fuelPurchase.BookingUuid);

            if (associatedVehicle == null || associatedBooking == null)
            {
                return(BadRequest());
            }

            fuelPurchase.Vehicle = associatedVehicle;
            fuelPurchase.Booking = associatedBooking;

            fuelPurchase.VehicleId = associatedVehicle.Id;
            fuelPurchase.BookingId = associatedBooking.Id;

            _context.FuelPurchases.Add(fuelPurchase);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetFuelPurchase", new { id = fuelPurchase.Id }, fuelPurchase));
        }
예제 #12
0
        private void VehicleGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            registrationNo = VehicleGridView.Rows[e.RowIndex].Cells[1].Value.ToString();

            if (VehicleGridView.Columns[e.ColumnIndex].Name == "AddJourney")
            {
                Vehicle vehicle = GetVehicleForRegNumber(registrationNo);
                if (vehicle != null)
                {
                    AddJourneyDialog jDialog = new AddJourneyDialog();

                    bool requiresService = vehicle.RequiresService();
                    if (requiresService == false)
                    {
                        jDialog.StartPosition = FormStartPosition.CenterParent;
                        jDialog.ControlBox    = false;
                        jDialog.Text          = String.Empty;

                        jDialog.RegistrationNumber = registrationNo;
                        DialogResult result = jDialog.ShowDialog();
                        if (result == DialogResult.OK)
                        {
                            Journey newJourney = new Journey(jDialog.RentalType, jDialog.NumberDays, jDialog.KmsTravelled);


                            {
                                vehicle.AddJourney(newJourney);
                                populateOutputs();
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Sorry. This vehicle requires a service and cannot be rented", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            else if (VehicleGridView.Columns[e.ColumnIndex].Name == "AddFuel")
            {
                AddFuelDialog fDialog = new Dialogs.AddFuelDialog();

                fDialog.StartPosition = FormStartPosition.CenterParent;
                fDialog.ControlBox    = false;
                fDialog.Text          = String.Empty;

                fDialog.RegistrationNumber = registrationNo;
                DialogResult result = fDialog.ShowDialog();
                if (result == DialogResult.OK)
                {
                    FuelPurchase fuelPurchase = new FuelPurchase(fDialog.FuelQuantity);

                    Vehicle vehicle = GetVehicleForRegNumber(registrationNo);
                    if (vehicle != null)
                    {
                        vehicle.AddFuelPurchase(fuelPurchase);
                        populateOutputs();
                    }
                }
            }
            else if (VehicleGridView.Columns[e.ColumnIndex].Name == "AddService")
            {
                Vehicle vehicle = GetVehicleForRegNumber(registrationNo);
                if (vehicle != null)
                {
                    int TotalKmsTravelled = vehicle.GetTotalKms();

                    AddServiceDialog sDialog = new AddServiceDialog();
                    sDialog.TotalKmsTravelled = TotalKmsTravelled;

                    sDialog.StartPosition = FormStartPosition.CenterParent;
                    sDialog.ControlBox    = false;
                    sDialog.Text          = String.Empty;

                    sDialog.RegistrationNumber = registrationNo;
                    DialogResult result = sDialog.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        Service service = new Service(TotalKmsTravelled);

                        vehicle.AddService(service);
                        populateOutputs();
                    }
                }
            }
        }
예제 #13
0
        private void Rent()
        {
            int    Kilometers;
            int    Litres;
            int    Days;
            string RentType;

            bool daysNeeded = int.TryParse(txtDaysRented.Text, out Days);


            if (isDailyRent)
            {
                RentType = "Daily Rate";
            }
            else
            {
                RentType = "Distance Rate";
            }
            Vehicle current = Vehicles.ElementAt(cbxChooseCar.SelectedIndex);

            if (current.NeedService)
            {
                MessageBox.Show("This vehicle needs a service and so cannot be rented");
            }
            else if (!int.TryParse(txtKmRent.Text, out Kilometers))
            {
                MessageBox.Show("Kilometers travelled must be a whole number");
            }
            else if (!int.TryParse(txtLitresRent.Text, out Litres))
            {
                MessageBox.Show("Litres used must be a whole number");
            }
            else if (isDailyRent && !daysNeeded)
            {
                MessageBox.Show("Days rented must not be blank");
            }
            else
            {
                if (isDailyRent)
                {
                    var Rent = new PerDayRental(Kilometers, Days, Litres);
                    var j    = new Journey(Rent.KilometersTravelled);
                    var fp   = new FuelPurchase(Rent.LitresUsed);
                    current.AddFuelPurchase(fp);
                    current.AddJourney(j);
                    current.TotalRevenue += Rent.TotalCost;
                }
                else
                {
                    var Rent = new PerKmRental(Kilometers, Litres);
                    var j    = new Journey(Rent.KilometersTravelled);
                    var fp   = new FuelPurchase(Rent.LitresUsed);
                    current.AddFuelPurchase(fp);
                    current.AddJourney(j);
                    current.TotalRevenue += Rent.TotalCost;
                }
                txtDaysRented.Clear();
                txtKmRent.Clear();
                txtLitresRent.Clear();
                MessageBox.Show($"New {RentType} Rental Successfully Saved");
            }
        }
        public void getFuelEconomy_Test()
        {
            double result = FuelPurchase.GetFuelEconomy(TestClass.v.Id);

            Assert.AreEqual(result, double.NaN);
        }
        public void addPurchaseFuel_Test4()
        {
            string sAux = FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading + 200, 45, 1.3);

            Assert.AreEqual(sAux, "");
        }
        public void addPurchaseFuel_Test3()
        {
            string sAux = FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading - 200, 45, 1.3);

            Assert.AreEqual(sAux, "New Odometer is lower than actual");
        }
        public void addPurchaseFuel_Test2()
        {
            string sAux = FuelPurchase.AddPurchaseFuel(TestClass.v, TestClass.v.OdometerReading + 200, 55, 1.3);

            Assert.AreEqual(sAux, "Quantity is higher than tank capacity");
        }