public async Task UpdateUserCar_ReturnOK_OkStatus()
        {
            // Arrange
            await PrepareTestUser();

            int count = 3;

            var carEntities = await _dataUtil.CreateCarEntityInTestRepo(_user.Id, count);

            var carDbEntity = carEntities.FirstOrDefault(x => x.IsCurrent);


            var updatedCar = new EditCarModel
            {
                Id            = carDbEntity.Id,
                CarEntityName = "New test name",
                IsCurrent     = true,
                CarsTotalRide = carDbEntity.CarsTotalRide + count
            };

            // Act

            var responseUpdateResult = await _apiUtil.PutAsync("/api/Cars/put/car", updatedCar, _accessToken);

            var allCarEntitiesDb = await _apiUtil.GetAsync <List <CarEntitySendModel> >("/api/cars/allUsersCars", _accessToken);

            // Assert

            Assert.Contains(updatedCar.Id, allCarEntitiesDb.Select(x => x.Id));
            Assert.DoesNotContain(carDbEntity.CarEntityName, allCarEntitiesDb.Select(x => x.CarEntityName));
            Assert.Equal(allCarEntitiesDb.Count(), carEntities.Count());
        }
Example #2
0
        public async Task <IActionResult> Edit(EditCarModel editCarModel, int id)
        {
            var car        = carsService.GetById(editCarModel.Id);
            var engine     = enginesService.GetById(editCarModel.EngineId);
            var generation = generationsService.GetById(editCarModel.GenerationId);

            if (generation == null || engine == null || car == null)
            {
                return(this.BadRequest());
            }

            bool isChanged =
                car.EngineId != editCarModel.EngineId ||
                car.GenerationId != editCarModel.GenerationId ||
                car.Transmission != editCarModel.Transmission ||
                car.DriveWheel != editCarModel.DriveWheel ||
                car.BeginningOfProductionYear != editCarModel.BeginningOfProductionYear ||
                car.BeginningOfProductionMonth != editCarModel.BeginningOfProductionMonth ||
                car.EndOfProductionYear != editCarModel.EndOfProductionYear ||
                car.EndOfProductionMonth != editCarModel.EndOfProductionMonth;

            Mapper.Map(editCarModel, car);

            if (isChanged && carsService.Exists(car))
            {
                this.ModelState.AddModelError("", GlobalConstants.CAR_ALREADY_EXISTS);
            }

            ValidateTireInfo(editCarModel.TireInfo);

            if (!this.ModelState.IsValid)
            {
                SetUpViewBag(generation);
                this.ViewBag.Engine = $"{car.Engine.Name} ({car.Engine.MaxHP} HP)";
                return(this.View());
            }

            await carsService.UpdateAsync(car);

            return(this.RedirectToAction(nameof(All), new { car.Id }));
        }
        public async Task <bool> UpdateUserCarAsync(EditCarModel carEntity, string userId)
        {
            var builderFilter = Builders <CarEntity> .Filter;
            var builderUpdate = Builders <CarEntity> .Update;

            var filterUser      = builderFilter.Eq("UserId", userId);
            var filterCarEntity = builderFilter.Eq("Id", carEntity.Id);
            var update          = builderUpdate.Set("CarEntityName", carEntity.CarEntityName);

            var car = await CarEntities.Find(filterUser& filterCarEntity).FirstOrDefaultAsync();

            if (car != null)
            {
                await this.SetTotalRideAsync(new UpdateTotalRideModel
                {
                    Id        = car.Id,
                    TotalRide = carEntity.CarsTotalRide
                }, userId);

                await CarEntities.UpdateOneAsync(filterUser& filterCarEntity, update);

                if (carEntity.IsCurrent &&
                    !(car.IsCurrent))
                {
                    await SetUserCurCarAsync(carEntity.Id, userId);
                }

                if (!carEntity.IsCurrent &&
                    car.IsCurrent)
                {
                    await SetUserCurCarAsync(CarEntities.Find(filterUser & !filterCarEntity).FirstOrDefault().Id, userId);
                }
                return(true);
            }
            return(false);
        }
Example #4
0
        public async Task <bool> UpdateUserCarAsync(EditCarModel carEntity, string userId)
        {
            var car = await _db.CarEntities.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == carEntity.Id);

            if (car != null)
            {
                if (carEntity.IsCurrent)
                {
                    car.CarEntityName = carEntity.CarEntityName;
                    await this.SetUserCurCarAsync(carEntity.Id, userId);
                }
                else
                {
                    car.CarEntityName = carEntity.CarEntityName;
                    car.IsCurrent     = false;
                }

                await _db.SaveChangesAsync();

                return(true);
            }

            return(false);
        }