コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public async Task <SingleCar> AddCarAsync(SingleCar car)
 {
     return(await AddCarAsync(car, false).ConfigureAwait(false));
 }
コード例 #6
0
 public async Task <IActionResult> UpdateCar(SingleCar singleCar)
 {
     return(Ok(await _service.UpdateCarAsync(singleCar).ConfigureAwait(false)));
 }
コード例 #7
0
 public async Task <ActionResult <SingleCar> > AddCar(SingleCar singleCar)
 {
     return(Ok(await _service.AddCarAsync(singleCar).ConfigureAwait(false)));
 }