public async Task <bool> SetTotalRideAsync(UpdateTotalRideModel value, string userId) { var carEntity = await CarEntities.Find(x => x.UserId == userId && x.Id == value.Id).FirstOrDefaultAsync(); if (carEntity != null) { if (value.TotalRide <= carEntity.CarsTotalRide) { return(true); } if (value.TotalRide > 0) { int carEntityTotalRide = carEntity.CarsTotalRide; var filterCarEntity = Builders <CarEntity> .Filter.Eq("Id", carEntity.Id); var filterCarItem = Builders <CarItem> .Filter.Eq("CarEntityId", carEntity.Id); var updateCarItemTotalRide = Builders <CarItem> .Update.Inc <int>("TotalRide", (value.TotalRide - carEntityTotalRide)); var updateCarEntityTotalRide = Builders <CarEntity> .Update.Set("CarsTotalRide", value.TotalRide); var resultCarItem = await CarItems.UpdateManyAsync(filterCarItem, updateCarItemTotalRide); var resultCarEntity = await CarEntities.UpdateOneAsync(filterCarEntity, updateCarEntityTotalRide); return(true); } } return(false); }
public async Task <bool> SetTotalRideAsync(UpdateTotalRideModel value, string userId) { var carEntity = await _db.CarEntities.FirstOrDefaultAsync(x => x.Id == value.Id && x.UserId == userId); if (carEntity != null) { if (value.TotalRide < carEntity.CarsTotalRide) { return(true); } if (value.TotalRide > 0 && value.TotalRide > carEntity.CarsTotalRide ) { int carEntityTotalRide = carEntity.CarsTotalRide; await _db.CarItems.Where(x => x.CarEntityId == carEntity.Id). ForEachAsync(item => { item.TotalRide += (value.TotalRide - carEntityTotalRide); }); carEntity.CarsTotalRide = value.TotalRide; await _db.SaveChangesAsync(); return(true); } } return(false); }
public async Task SetTotalRide_ReturnNotFound_IsReturnedNotFound() { // Arrange await PrepareTestUser(); var carEntity = await _dataUtil.CreateCarEntityInTestRepo(_user.Id); var updatedTotalRide = new UpdateTotalRideModel { Id = "not_valid_id", TotalRide = -1 }; // Act var ex = await Assert.ThrowsAsync <HttpStatusException>(() => _apiUtil.CreateAsync("/api/Cars/totalride/set", updatedTotalRide, _accessToken)); // Assert Assert.Equal(HttpStatusCode.NotFound, ex.HttpStatusCode); }
public async Task SetTotalRide_ReturnOK_OkStatus() { // Arrange await PrepareTestUser(); var carEntity = await _dataUtil.CreateCarEntityInTestRepo(_user.Id); var updatedTotalRide = new UpdateTotalRideModel { Id = carEntity.FirstOrDefault().Id, TotalRide = carEntity.FirstOrDefault().CarsTotalRide + 2 }; // Act var totalRideResponse = await _apiUtil.CreateAsync("/api/Cars/totalride/set", updatedTotalRide, _accessToken); var carDbEntity = await _apiUtil.GetAsync <UpdateTotalRideModel>("/api/Cars/car", _accessToken); // Assert Assert.NotNull(carDbEntity); Assert.NotEqual(updatedTotalRide.TotalRide, carDbEntity.TotalRide); }