示例#1
0
        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);
        }