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