Exemplo n.º 1
0
        protected override async Task <Product> HandleCore(CreateProduct request)
        {
            await ValidateProductCodeUniqueness(request);

            var aggregate = new Domain.Aggregates.Product(request.Code, request.Name, request.Price);

            await _productsRepository.Save(aggregate);

            return(_mapper.Map <Domain.Aggregates.Product, Product>(aggregate));
        }
Exemplo n.º 2
0
        private async Task ValidateAggregateCodeUniqueness(UpdateProduct request, Domain.Aggregates.Product aggregate)
        {
            if (aggregate.Code != request.Code)
            {
                var product = await _productsRepository.GetByCode(request.Code);

                if (product != null)
                {
                    throw new ApiException("A product with the provided code already exists. Codes must be unique.",
                                           "ProductCodeTaken", HttpStatusCode.BadRequest);
                }
            }
        }