public async Task <OperationResult <WishListDto> > AddProductToWishListAsync(AddProductToWishListInput input)
        {
            var validatioResult = await _validator.ValidateAddProductToWishList(input);

            if (validatioResult.IsSuccess)
            {
                var wishlist = await _repository.GetByCustomerAsync(input.CustomerEmail);

                if (wishlist is null)
                {
                    wishlist = await CreateEmplyBasket(input.CustomerEmail);
                }

                wishlist.Products = wishlist.Products.Add(input.ProductId);

                await _repository.UpdateAsync(wishlist);

                return(OperationResult <WishListDto> .Success(wishlist.ConvertToDto()));
            }

            return(OperationResult <WishListDto> .Fail(validatioResult));
        }
Exemple #2
0
        public async Task <ValidationResult> ValidateAddProductToWishList(AddProductToWishListInput input)
        {
            ValidationResult validationResult = new();

            if (string.IsNullOrWhiteSpace(input.CustomerEmail))
            {
                validationResult.Messages.Add(new(nameof(AddProductToWishListInput.CustomerEmail), "Debe indicar un cliente."));
            }
            else
            {
                Customer customer = await _customerRepository.GetCustomer(input.CustomerEmail);

                if (customer is null)
                {
                    validationResult.Messages.Add(new(nameof(AddProductToWishListInput.CustomerEmail), "No existe el cliente."));
                }
            }

            if (string.IsNullOrWhiteSpace(input.ProductId))
            {
                validationResult.Messages.Add(new(nameof(AddProductToWishListInput.ProductId), "Debe indicar un producto."));
            }
            else
            {
                Product product = await _productRepository.GetAsync(input.ProductId);

                if (product is null)
                {
                    validationResult.Messages.Add(new(nameof(AddProductToWishListInput.ProductId), "No existe el producto."));
                }
                else if (!product.IsActive)
                {
                    validationResult.Messages.Add(new(nameof(AddProductToWishListInput.ProductId), "El producto no esta activo."));
                }
            }

            return(validationResult);
        }
        public async Task <IActionResult> AddWishListProduct(AddProductToWishListInput input)
        {
            var result = await _service.AddProductToWishListAsync(input);

            return(new OperationActionResult(result));
        }