Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }