public async Task <IActionResult> PutProductUnitPriceAsync(int?id, [FromBody] UpdateProductUnitPriceRequest request)
        {
            Logger?.LogDebug("{0} has been invoked", nameof(PutProductUnitPriceAsync));

            // Get response from business logic
            Service.UserInfo = UserInfo;

            var response = await Service.UpdateProductUnitPriceAsync(id, request);

            // Return as http response
            return(response.ToHttpResponse());
        }
Пример #2
0
        public async Task TestUpdateProductUnitPriceAsync()
        {
            // Arrange
            var userInfo   = IdentityMocker.GetWarehouseOperatorIdentity().GetUserInfo();
            var service    = ServiceMocker.GetWarehouseService(userInfo, nameof(TestUpdateProductUnitPriceAsync));
            var controller = new WarehouseController(LoggingHelper.GetLogger <WarehouseController>(), service);
            var id         = 1;
            var request    = new UpdateProductUnitPriceRequest
            {
                UnitPrice = 14.99m
            };

            // Act
            var response = await controller.PutProductUnitPriceAsync(id, request) as ObjectResult;

            var value = response.Value as ISingleResponse <Product>;

            // Assert
            Assert.False(value.DidError);
        }
Пример #3
0
        public async Task <ISingleResponse <Product> > UpdateProductUnitPriceAsync(int?productID, UpdateProductUnitPriceRequest request)
        {
            Logger?.LogInformation("'{0}' has been invoked", nameof(UpdateProductUnitPriceAsync));

            var response = new SingleResponse <Product>();

            try
            {
                // Retrieve product by ID
                var entity = await DbContext.GetProductAsync(new Product(productID));

                if (entity == null)
                {
                    return(response);
                }

                var history = new ProductUnitPriceHistory
                {
                    ProductID = entity.ID,
                    UnitPrice = entity.UnitPrice
                };

                // Change unit price
                if (entity.UnitPrice != request.UnitPrice)
                {
                    entity.UnitPrice = request.UnitPrice;
                }

                // Set last update info

                DbContext.Update(entity, UserInfo);

                DbContext.Add(history, UserInfo);

                // Save changes
                await DbContext.SaveChangesAsync();

                response.Model = entity;
            }
            catch (Exception ex)
            {
                response.SetError(Logger, nameof(CreateProductAsync), ex);
            }

            return(response);
        }