public async Task <SingleCar> UpdateCarAsync(SingleCar car) { if (!await _context.Cars.AnyAsync(c => c.VehicleIdentification == car.VehicleIdentification).ConfigureAwait(false)) { // car doesn't exist. We need to add the car not update the car return(await AddCarAsync(car, true).ConfigureAwait(false)); } var model = await _context.Models.SingleOrDefaultAsync(m => m.ModelName == car.Model).ConfigureAwait(false) ?? await AddModel(car.Model, car.Make).ConfigureAwait(false); var updatedCar = _mapper.Map <Car>(car); updatedCar.Model = model; updatedCar.LastUpdated = DateTime.UtcNow; _context.Cars.Attach(updatedCar); var entry = _context.Entry(updatedCar); entry.State = EntityState.Modified; entry.Property(nameof(Car.ScannedDate)).IsModified = false; entry.Property(nameof(Car.LastScanned)).IsModified = false; updatedCar.Photos = await _photoService.UploadPictures(car.Pictures.Where(c => !c.IsDeleted)).ConfigureAwait(false); await _photoService.UpdateDeletedPhotos(car.Pictures.Where(c => c.IsDeleted)).ConfigureAwait(false); await _context.SaveChangesAsync().ConfigureAwait(false); return(car); }
private async Task <SingleCar> AddCarAsync(SingleCar car, bool skipCheck) { car.Id = null; if (await _context.Cars.AnyAsync(c => c.VehicleIdentification == car.VehicleIdentification).ConfigureAwait(false)) { throw new ArgumentException("Not allowed to add a car with the same VIN number"); } var model = await _context.Models.SingleOrDefaultAsync(m => m.ModelName == car.Model).ConfigureAwait(false); if (model is null) { model = await AddModel(car.Model, car.Make).ConfigureAwait(false); } var result = _mapper.Map <Car>(car); result.Model = model; result.LastUpdated = DateTime.UtcNow; result.ScannedDate = DateTime.UtcNow; result.LastScanned = DateTime.UtcNow; _context.Cars.Add(result); result.Photos = await _photoService.UploadPictures(car.Pictures).ConfigureAwait(false); await _context.SaveChangesAsync().ConfigureAwait(false); return(_mapper.Map <SingleCar>(result)); }
private async Task <SingleCar> LoadPhotos(SingleCar car, int id) { var list = new List <PhotoDto>(); await foreach (var photo in _photoService.GetPhotosByCar(id).ConfigureAwait(false)) { list.Add(photo); } car.Pictures = list; return(car); }
public async Task <SingleCar> AddOrUpdateCarAsync(SingleCar car) { if (car.Id is null) { return(await AddCarAsync(car).ConfigureAwait(false)); } var result = await _context.Cars.SingleOrDefaultAsync(c => c.Id == car.Id.Value).ConfigureAwait(false); if (result is null) { return(await AddCarAsync(car).ConfigureAwait(false)); } var updatedCar = _mapper.Map <Car>(car); _context.Cars.Attach(updatedCar); await _context.SaveChangesAsync().ConfigureAwait(false); return(car); }
public async Task <SingleCar> AddCarAsync(SingleCar car) { return(await AddCarAsync(car, false).ConfigureAwait(false)); }
public async Task <IActionResult> UpdateCar(SingleCar singleCar) { return(Ok(await _service.UpdateCarAsync(singleCar).ConfigureAwait(false))); }
public async Task <ActionResult <SingleCar> > AddCar(SingleCar singleCar) { return(Ok(await _service.AddCarAsync(singleCar).ConfigureAwait(false))); }