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); }
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); }
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); }