Exemplo n.º 1
0
        public async Task <IHttpActionResult> GetOpenRentalByID(int vehicleID)
        {
            string userContext = RequestContext.Principal.Identity.GetUserId();

            try
            {
                Vehicle_Types vehicle = await carStore.GetVehicleType(vehicleID);

                var rental = await store.getOpenByVehicleNumber(vehicleID);

                if (rental != null && rental.Returned_Date == null)
                {
                    rental.Total_Price = store.CalculateCurrentTotalSum(vehicle, rental);
                    return(Ok(rental));
                }
                else
                {
                    return(Content(HttpStatusCode.OK, "No Rental Found"));
                }
            }
            catch (Exception)
            {
                return(Content(HttpStatusCode.NotFound, "No Rental Found"));
            }
        }
Exemplo n.º 2
0
        internal int?CalculateTotalSum(Vehicle_Types vehicle, RentalModel rental)
        {
            var car = vehicle;
            int total;

            double daysRented = rental.Returned_Date.Value.Subtract(rental.Start_Date).TotalDays;

            double daysIntended = rental.Return_Date.Subtract(rental.Start_Date).TotalDays;


            if (daysRented > 0)
            {
                int days = (int)daysIntended - (int)daysRented;
                if ((int)daysIntended >= (int)daysRented)
                {
                    total = (int)daysRented * car.Daily_Rate;
                }
                else
                {
                    total = (int)(((daysRented - daysIntended) * (car.Penalty_Rate + car.Daily_Rate)) + (daysRented * car.Daily_Rate));
                }
            }
            else
            {
                total = 0;
            }

            return(total);
        }
Exemplo n.º 3
0
        internal int?CalculateCurrentTotalSum(Vehicle_Types vehicle, RentalModel rental)
        {
            var car = vehicle;
            int total;

            int daysInRental = (int)rental.Return_Date.Subtract(rental.Start_Date).TotalDays;
            int daysRented   = (int)DateTime.Now.Subtract(rental.Start_Date).TotalDays;


            if (daysRented > 0)
            {
                if (daysRented > daysInRental)
                {
                    total = ((daysRented - daysInRental) * (car.Penalty_Rate + car.Daily_Rate)) + (daysInRental * car.Daily_Rate);
                }
                else
                {
                    total = daysRented * car.Daily_Rate;
                }
            }
            else
            {
                total = 0;
            }

            return(total);
        }
        internal async Task <Vehicle_Types> GetVehicleType(int vehicleID)
        {
            Vehicle_Types car = new Vehicle_Types();

            await Task.Run(() =>
            {
                var vehicleFound = dBase.Vehicles.FirstOrDefault(vehicle => vehicle.Vehicle_ID == vehicleID);
                if (vehicleFound != null)
                {
                    car = dBase.Vehicle_Types.FirstOrDefault(vehicle => vehicle.Vehicle_Makes.Make_Name == vehicleFound.Vehicle_Types.Vehicle_Makes.Make_Name && vehicle.Vehicle_Models.Model_Name == vehicleFound.Vehicle_Types.Vehicle_Models.Model_Name);
                }
            });

            return(car);
        }
        internal async Task <Tuple <Status, string> > AddVehicleType(VehicleTypes model)
        {
            Vehicle_Types existingType = dBase.Vehicle_Types.FirstOrDefault(car =>
                                                                            (
                                                                                car.Vehicle_Makes.Make_Name.ToLower() == model.Make.ToLower() &&
                                                                                car.Vehicle_Models.Model_Name.ToLower() == model.Model.ToLower() &&
                                                                                car.Gear_Type == model.Gear_Type &&
                                                                                car.Year == model.Year
                                                                            ));

            if (existingType == null)
            {
                int makeId  = dBase.Vehicle_Makes.FirstOrDefault(make => make.Make_Name == model.Make).Make_ID;
                int modelId = dBase.Vehicle_Models.FirstOrDefault(carModel => carModel.Model_Name == model.Model).Model_ID;

                Vehicle_Types addedType = dBase.Vehicle_Types.Add(new Vehicle_Types()
                {
                    Daily_Rate   = model.Daily_Rate,
                    Penalty_Rate = model.Penalty_Rate,
                    Gear_Type    = model.Gear_Type,
                    Year         = model.Year,
                    Make_ID      = makeId,
                    Model_ID     = modelId
                });

                await dBase.SaveChangesAsync();

                if (addedType != null)
                {
                    return(new Tuple <Status, string>(Status.Success, addedType.Vehicle_Makes.Make_Name + " " + addedType.Vehicle_Models.Model_Name + " Successfully Added To The Models Inventory"));
                }
                else
                {
                    return(new Tuple <Status, string>(Status.Failure, "Something Went Wrong While Trying To Add The Type"));
                }
            }
            else
            {
                return(new Tuple <Status, string>(Status.Failure, "Type Already Exists"));
            }
        }
        internal async Task <Tuple <Status, string> > TryDeleteType(PublicVehicleViewModel model)
        {
            Vehicle_Types chosenType = dBase.Vehicle_Types.FirstOrDefault(type =>
                                                                          (
                                                                              type.Vehicle_Models.Model_Name == model.Model &&
                                                                              type.Vehicle_Makes.Make_Name == model.Make &&
                                                                              type.Year == model.Year &&
                                                                              type.Gear_Type == model.Gear_Type
                                                                          ));

            int typeId = chosenType.Vehicle_Type_ID;

            bool vehicles = false,
                 rentals  = false;

            if (dBase.Vehicles.FirstOrDefault(carModel => carModel.Vehicle_Types.Vehicle_Type_ID == typeId) != null)
            {
                vehicles = true;
            }
            if (dBase.Rentals.FirstOrDefault(carModel => carModel.Vehicle.Vehicle_Type_ID == typeId) != null)
            {
                rentals = true;
            }

            if (vehicles || rentals)
            {
                string error = concatErrorString(vehicles, rentals);
                return(new Tuple <Status, string>(Status.Failure, error));
            }
            else
            {
                dBase.Vehicle_Types.Remove(chosenType);
                await dBase.SaveChangesAsync();

                return(new Tuple <Status, string>(Status.Success, model + " Deleted"));
            }
        }