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)); }
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); } } }