public IActionResult CreateASaleEvent(SaleEventDTO saleEventDTO) { if (saleEventDTO == null) { return(this.BadRequest("The data sent has not reached the server. Please check the data and try again.")); } try { var newSaleEvent = this.salesRepository.CreateSaleEvent(saleEventDTO); var mappedEvent = this.mapper.Map <SaleEventViewModel>(newSaleEvent); return(this.StatusCode(StatusCodes.Status201Created, mappedEvent)); } catch (Exception ex) { return(this.StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }
/// <summary> /// Creates the sale event. /// </summary> /// <param name="saleEventDTO">The sale event dto.</param> /// <returns> /// Returns a sale event object from the database created by the action. /// </returns> /// <exception cref="System.ArgumentNullException">saleEventDTO</exception> /// <exception cref="System.ArgumentException">ArticleSoldNumber</exception> /// <exception cref="System.ArgumentOutOfRangeException">ArticleSoldPrice</exception> /// <exception cref="System.NullReferenceException"> /// SaleEvents /// or /// Articles /// or /// articleInDatabase /// </exception> public SaleEvent CreateSaleEvent(SaleEventDTO saleEventDTO) { if (saleEventDTO == null) { throw new ArgumentNullException(nameof(saleEventDTO)); } if (string.IsNullOrEmpty(saleEventDTO.ArticleSoldNumber)) { throw new ArgumentException(nameof(saleEventDTO.ArticleSoldNumber)); } if (saleEventDTO.ArticleSoldPrice <= 0) { throw new ArgumentOutOfRangeException(nameof(saleEventDTO.ArticleSoldPrice)); } this.ValidateDataPresenceInTheDatabase(); var articleInDatabase = this.context.Articles.FirstOrDefault(a => a.ArticleNumber == saleEventDTO.ArticleSoldNumber); if (articleInDatabase == null) { throw new NullReferenceException(nameof(articleInDatabase)); } var newSaleEvent = new SaleEvent { TimeStamp = DateTime.Now, ArticleSoldNumber = saleEventDTO.ArticleSoldNumber, ArticleSoldPrice = saleEventDTO.ArticleSoldPrice, ArticleSold = articleInDatabase }; this.context.SaleEvents.Add(newSaleEvent); this.context.SaveChanges(); return(newSaleEvent); }