public async Task <IActionResult> EditBeersQuantityOfWholesaler(int wholesalerId, int beerId, [FromBody] DTOs.UpdateStock updateBeer) { var wholesaler = await _repository.ReadAsync(wholesalerId); if (wholesaler == null) { return(NotFound()); } var newBeer = updateBeer.Clone().SetBeerId(beerId); var beer = await _beerRepository.ReadAsync(newBeer.BeerId); if (beer == null) { return(NotFound()); } await BusinessRequirements.EnsureBeersAreSoldByWholesalerAsync(wholesalerId, new List <DTOs.Stock> { newBeer }, _repository); await BusinessRequirements.EnsureQuantitiesAreNotGreaterThanStockAsync(wholesalerId, new List <DTOs.Stock> { newBeer }, _repository); wholesaler.AddQuantity(-1 * newBeer.Quantity, beer); await _repository.SaveChangesAsync(); return(NoContent()); }
public async Task <IActionResult> AddBeerToWholesaler(int wholesalerId, [FromBody] DTOs.Stock newBeer) { var wholesaler = await _repository.ReadAsync(wholesalerId); if (wholesaler == null) { return(NotFound()); } var beer = await _beerRepository.ReadAsync(newBeer.BeerId); if (beer == null) { return(NotFound()); } await BusinessRequirements.EnsureBeersAreNotSoldByWholesalerAsync(wholesalerId, new List <DTOs.Stock> { newBeer }, _repository); wholesaler.AddStock(newBeer.Quantity, beer); await _repository.SaveChangesAsync(); return(NoContent()); }
public void ThrowBusinessExceptionOrderEmpty() { var sut = _order.OrderDetails; Assert.That(() => BusinessRequirements.EnsureOrderDetailsIsNotEmpty(sut), Throws.TypeOf <BusinessException>().With.Message.EqualTo("ORDER_CANNOT_BE_EMPTY") ); }
public void ThrowBusinessExceptionWholesalerDoesNotExist() { var breweryId = 0; var breweryRepo = new BreweryRepository(_context, null); Assert.That(() => BusinessRequirements.EnsureBreweryExistsAsync(breweryId, breweryRepo), Throws.TypeOf <BusinessException>().With.Message.EqualTo("BREWERY_MUST_EXIST") ); }
public void ThrowBusinessExceptionQuantityNotGreaterThanInStock() { var wholesalerId = 1; var sut = _order.OrderDetails = new List <Stock> { new Stock { BeerId = 1, Quantity = 159 } }; var wholesalerRepo = new WholesalerRepository(_context, null); Assert.That(() => BusinessRequirements.EnsureQuantitiesAreNotGreaterThanStockAsync(wholesalerId, sut, wholesalerRepo), Throws.TypeOf <BusinessException>().With.Message.EqualTo("NOT_GREATER_NUMBER_THAN_IN_STOCK") ); }
public void ThrowBusinessExceptionBeerNotSoldByWholesaler() { var wholesalerId = 1; var sut = _order.OrderDetails = new List <Stock> { new Stock { BeerId = 6, Quantity = 1 } }; var wholesalerRepo = new WholesalerRepository(_context, null); Assert.That(() => BusinessRequirements.EnsureBeersAreSoldByWholesalerAsync(wholesalerId, sut, wholesalerRepo), Throws.TypeOf <BusinessException>().With.Message.EqualTo("BEER_NOT_SOLD_BY_WHOLESALER") ); }
public async Task <IActionResult> PlaceOrder(int wholesalerId, [FromBody] DTOs.Order order) { var wholesaler = await _repository.ReadAsync(wholesalerId); if (wholesaler == null) { return(NotFound()); } await BusinessRequirements.EnsureAllRequirementsAsync(wholesalerId, order, _repository); var beers = await _beerRepository.ReadAllFromListAsync(order.OrderDetails.Select(od => od.BeerId)); return(Ok(new DTOs.Quote(order, beers))); }
public void ThrowBusinessExceptionOrderHasDuplicate() { var sut = _order.OrderDetails; sut.Add(new Stock() { BeerId = 1 }); sut.Add(new Stock() { BeerId = 1 }); Assert.That(() => BusinessRequirements.EnsureOrderDetailsAreUnique(sut), Throws.TypeOf <BusinessException>().With.Message.EqualTo("NO_DUPLICATE_IN_ORDER") ); }
public async Task <IActionResult> Post([FromBody] DTOs.CreateBeer beer, ApiVersion version = null) { if (version is null) { version = ApiVersion.Default; } await BusinessRequirements.EnsureBreweryExistsAsync(beer.BreweryId, _breweryRepository); DTOs.Beer newBeer = beer.Clone(); var entity = await _repository.AddAsync(newBeer); await _repository.SaveChangesAsync(); newBeer.Id = entity.Id; return(CreatedAtAction(nameof(GetById), new { id = newBeer.Id.ToString(), version = $"{version}" }, newBeer)); }