public async Task <ProductOption> CreateProductOptionAsync(Guid productId, CreateProductOptionDto createProductOptionDto) { if (await _productRepository.GetByIdAsync(productId) == null) { throw new NotFoundException(Constants.Constants.ProductNotFound, HttpStatusCode.NotFound.ToString()); } var validationResults = createProductOptionDto.Validate(); var validations = validationResults.ToList(); if (validations.Any()) { throw new ValidationException(validations); } var productOption = new ProductOption { Id = Guid.NewGuid(), Description = createProductOptionDto.Description, Name = createProductOptionDto.Name, ProductId = productId }; return(await _repository.CreateAsync(productOption)); }
public async Task <HttpResponseMessage> CreateOption(Guid productId, ProductOptionModel option) { // validate if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } await productOptionRepository.CreateAsync(productId, option); return(new HttpResponseMessage(HttpStatusCode.Created)); }
/// <inheritdoc /> public async Task <Result <ProductOption> > CreateAsync(ProductOption productOption) { _logger.Debug("Creating a product option. ProductOption: {productOption}", JsonConvert.SerializeObject(productOption)); var duplicateOptionResult = await GetByProductAsync(productOption.ProductId); if (!duplicateOptionResult.IsSuccess()) { return(Result <ProductOption> .Failed(duplicateOptionResult.Error)); } var duplicateOption = duplicateOptionResult.Data.Items .FirstOrDefault(x => x.Name.Equals(productOption.Name, StringComparison.InvariantCultureIgnoreCase)); if (duplicateOption != null) { return(Result <ProductOption> .Failed(ErrorCode.DuplicateProductOptionFound, AppConstants.DuplicateProductOptionFoundErrorMessage.Replace("[name]", productOption.Name))); } var createdProductOption = await _productOptionRepository.CreateAsync(productOption); return(Result <ProductOption> .Success(createdProductOption)); }