public async Task <bool> UpdateCarItemAsync(UpdateCarItemModel value, string userId)
        {
            var carEntity = await CarEntities.Find(x => x.UserId == userId && x.IsCurrent == true).FirstOrDefaultAsync();

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

                var carItem = CarItems.Find(x => x.Id == value.Id).FirstOrDefault();

                var filterCarItem = Builders <CarItem> .Filter.Eq("CarItemId", value.Id);

                await CarItems.ReplaceOneAsync(filterCarItem, new CarItem
                {
                    Id                = carItem.Id,
                    Name              = value.Name,
                    TotalRide         = value.IsTotalRideChanged ? 0 : carItem.TotalRide,
                    ChangeRide        = int.Parse(value.ChangeRide),
                    PriceOfDetail     = int.Parse(value.PriceOfDetail),
                    DateOfReplace     = DateTime.Parse(value.DateOfReplace),
                    RecomendedReplace = int.Parse(value.RecomendedReplace),
                    CarEntityId       = carItem.CarEntityId
                });

                return(true);
            }
            return(false);
        }
        public async Task UpdateCarItem_ReturnOK_OkStatus()
        {
            // Arrange
            await PrepareTestUser();

            int count  = 4;
            int limit  = count;
            int offset = 0;

            var carItems = await _dataUtil.CreateCarItemInTestRepo(_user.Id, count);

            var updatedCarItem = new UpdateCarItemModel
            {
                Id   = carItems.FirstOrDefault().Id,
                Name = "New test car item",
                IsTotalRideChanged = false,
                ChangeRide         = new Random().Next().ToString(),
                PriceOfDetail      = new Random().Next().ToString(),
                DateOfReplace      = System.DateTime.Now.ToString(),
                RecomendedReplace  = new Random().Next().ToString(),
            };

            // Act

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

            var allCarItemsDb = await _apiUtil.GetAsync <CarItemsSendModel>($"/api/Cars/cardetails?offset={offset}&limit={limit}", _accessToken);

            // Assert

            Assert.Contains(updatedCarItem.Id, allCarItemsDb.CarItems.Select(x => x.Id));

            Assert.DoesNotContain(updatedCarItem.Name, allCarItemsDb.CarItems.Select(x => x.Name));

            Assert.Equal(allCarItemsDb.CarItems.FirstOrDefault(x => x.Id == updatedCarItem.Id).TotalRide,
                         carItems.FirstOrDefault(x => x.Id == updatedCarItem.Id).TotalRide); // if IsTotalRideChanged = false, then TotalRide must be the same

            Assert.Equal(carItems.FirstOrDefault().CarEntityId, allCarItemsDb.CarEntityId);

            Assert.Equal(allCarItemsDb.CountCarsItems, carItems.Count());

            // TODO Assert for IsTotalRideChanged = true
        }
Example #3
0
        public async Task <bool> UpdateCarItemAsync(UpdateCarItemModel value, string userId)
        {
            var carEntity = await _db.CarEntities.FirstOrDefaultAsync(x => x.IsCurrent == true && x.UserId == userId);

            if (carEntity != null)
            {
                var carItem = await _db.CarItems.FirstOrDefaultAsync(x => x.CarEntityId == carEntity.Id && x.Id == value.Id);

                if (carItem != null)
                {
                    carItem.Name              = value.Name;
                    carItem.TotalRide         = value.IsTotalRideChanged ? 0 : carItem.TotalRide;
                    carItem.ChangeRide        = int.Parse(value.ChangeRide);
                    carItem.PriceOfDetail     = int.Parse(value.PriceOfDetail);
                    carItem.DateOfReplace     = DateTime.Parse(value.DateOfReplace);
                    carItem.RecomendedReplace = int.Parse(value.RecomendedReplace);

                    await _db.SaveChangesAsync();

                    return(true);
                }
            }
            return(false);
        }