public Task Handle(UpdateCarRequest message, IMessageHandlerContext context)
        {
            log.Info("Received UpdateCarRequest.");

            using (var unitOfWork = new CarUnitOfWork(new CarApiContext(_dbContextOptionsBuilder.Options)))
            {
                unitOfWork.Cars.Update(message.Car);
                unitOfWork.Complete();
            }

            var response = new UpdateCarResponse
            {
                Car = message.Car
            };
            var reply = context.Reply(response);

            return(reply);
        }
Beispiel #2
0
 public UpdateCarResponse Update(UpdateCarRequest request)
 {
     if (!ModelState.IsValid)
     {
         var errors = ModelState.Keys.SelectMany(key =>
                                                 ModelState[key].Errors.Select(x => x.ErrorMessage));
         var response = new UpdateCarResponse
         {
             Success = false,
             Message = "Form has validation errors",
             Errors  = errors.ToArray()
         };
         return(response);
     }
     //send request to the car service and return the
     //response (success or fail)
     return(CarService.UpdateCar(request));
 }
        public void CarUpdate_InsideCityLimits_DoesUpdate()
        {
            //testing within allowable drop off zone
            //Arrange
            var request = new UpdateCarRequest
            {
                Id = 95,
                CarCategory = "Sedan",
                Make = "Mercedes-Benz",
                Model = "CLS250",
                Transmission = "AT",
                Status = "Available",
                LatPos = (decimal)-37.813600,
                LongPos = (decimal)144.963100
            };

            // Act
            UpdateCarResponse result = Controller.Update(request);

            //Assert
            Assert.IsTrue(result.Success);
        }
        public void CarUpdate_OutsideCityLimits_DoesNotUpdate()
        {
            //Unit testing against locations outside allowable drop off zone
            //Arrange
            var request = new UpdateCarRequest
            {
                Id = 95,
                CarCategory = "Sedan",
                Make = "Mercedes-Benz",
                Model = "CLS250",
                Transmission = "AT",
                Status = "Available",
                LatPos = (decimal)-17.571280,
                LongPos = (decimal)152.964494
            };

            // Act
            UpdateCarResponse result = Controller.Update(request);

            //Assert
            Assert.AreEqual("No cities are within a 50000m radius", result.Message);
        }
        public UpdateCarResponse UpdateCar(int carId, UpdateCarRequest request)
        {
            var response = new UpdateCarResponse
            {
                Errors = new List <string>()
            };

            _carRepository.Update(carId, new Car
            {
                Make               = request.Make,
                Manufacturer       = request.Manufacturer,
                Plant              = request.Plant,
                ModelYear          = request.ModelYear,
                Model              = request.Model,
                Body               = request.Body,
                Drive              = request.Drive,
                NumberofSeats      = request.NumberofSeats,
                NumberofDoors      = request.NumberofDoors,
                Steering           = request.Steering,
                EngineDisplacement = request.EngineDisplacement,
                EngineCylinders    = request.EngineCylinders,
                NumberofGears      = request.NumberofGears,
                Engine             = request.Engine,
                Made               = request.Made,
                Color              = request.Color,
                Fuel               = request.Fuel,
                Cc        = request.Cc,
                Power     = request.Power,
                Emissions = request.Emissions,
                Odometer  = request.Odometer,
                Vin       = request.Vin,
                License   = request.License,
                CarImage  = request.CarImage
            });

            response.Success = true;
            return(response);
        }
Beispiel #6
0
        public UpdateCarResponse UpdateCar(UpdateCarRequest request)
        {
            //this method allows cars to be updated after passing some basic checks

            //validate the a car category exists and fail if it doesnt
            var category = CarCategoryRepository.Find(request.CarCategory);

            if (category == null)
            {
                return new UpdateCarResponse
                       {
                           Message = $"Category {request.CarCategory} does not exist",
                           Success = false
                       }
            }
            ;

            //validate the a car exists and fail if it doesnt
            Car car;

            if (request.Id.HasValue)
            {
                car = CarRepository.Find(request.Id.Value);

                if (car == null)
                {
                    return new UpdateCarResponse
                           {
                               Message = $"Vehicle {request.Id} does not exist",
                               Success = false
                           }
                }
                ;
            }
            else
            {
                car = new Car();
            }

            //look through cities and ensure one is close enough for check in
            var  cities       = CityRepository.FindAll();
            City selectedCity = null;

            foreach (var city in cities)
            {
                //use microsofts haversine formula (returns metres)
                var cityCoordinate    = new GeoCoordinate((double)city.LatPos, (double)city.LongPos);
                var currentCoordinate = new GeoCoordinate((double)request.LatPos, (double)request.LongPos);
                var distance          = cityCoordinate.GetDistanceTo(currentCoordinate);
                if (distance < Constants.BookingMaxRangeFromCityCentre)
                {
                    selectedCity = city;

                    break;
                }
            }

            //validates that a selected city exists
            if (selectedCity == null)
            {
                return(new UpdateCarResponse
                {
                    Message = "No cities are within a " +
                              $"{Constants.BookingMaxRangeFromCityCentre}m radius",
                    Success = false
                });
            }

            //assigns car values based on the parsed request to change the car
            car.CarCategory  = request.CarCategory;
            car.Make         = request.Make;
            car.Model        = request.Model;
            car.Status       = request.Status;
            car.Suburb       = selectedCity.CityName;
            car.LatPos       = request.LatPos;
            car.LongPos      = request.LongPos;
            car.Transmission = request.Transmission;

            //switch to determine whether the car needs to be updated or added
            //to the car table

            if (request.Id.HasValue)
            {
                var updatedCar = CarRepository.Update(car);
            }
            else
            {
                var updatedCar = CarRepository.Add(car);
            }

            //message returned after car has been updated

            var response = new UpdateCarResponse
            {
                Success = true,
                Message = $"{request.Make} {request.Model} has been updated",
                Errors  = null
            };

            return(response);
        }