public async Task <IActionResult> PostStockItemAsync([FromBody] PostStockItemsRequestModel requestModel) { Logger?.LogDebug("'{0}' has been invoked", nameof(PostStockItemAsync)); var response = new SingleResponse <StockItem>(); try { var existingEntity = await Repository .GetStockItemsByStockItemNameAsync(new StockItem { StockItemName = requestModel.StockItemName }); if (existingEntity != null) { ModelState.AddModelError("StockItemName", "Stock item name already exists"); } if (!ModelState.IsValid) { return(BadRequest()); } // Create entity from request model var entity = requestModel.ToEntity(); // Add entity to repository Repository.Add(entity); // Save entity in database await Repository.CommitChangesAsync(); // Set the entity to response model response.Model = entity; } catch (Exception ex) { response.DidError = true; response.ErrorMessage = "There was an internal error, please contact to technical support."; Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(PostStockItemAsync), ex); } return(response.ToHttpResponse()); }
public async Task TestPostStockItemAsync() { // Arrange var repository = RepositoryMocker.GetWarehouseRepository(nameof(TestPostStockItemAsync)); var controller = new WarehouseController(null, repository); var requestModel = new PostStockItemsRequestModel { StockItemID = 100, StockItemName = "USB anime flash drive - Goku", SupplierID = 12, UnitPackageID = 7, OuterPackageID = 7, LeadTimeDays = 14, QuantityPerOuter = 1, IsChillerStock = false, TaxRate = 15.000m, UnitPrice = 32.00m, RecommendedRetailPrice = 47.84m, TypicalWeightPerUnit = 0.050m, CustomFields = "{ \"CountryOfManufacture\": \"Japan\", \"Tags\": [\"32GB\",\"USB Powered\"] }", Tags = "[\"32GB\",\"USB Powered\"]", SearchDetails = "USB anime flash drive - Goku", LastEditedBy = 1, ValidFrom = DateTime.Now, ValidTo = DateTime.Now.AddYears(5) }; // Act var response = await controller.PostStockItemAsync(requestModel) as ObjectResult; var value = response.Value as ISingleResponse <StockItem>; repository.Dispose(); // Assert Assert.False(value.DidError); }