public async Task <ValidationResult> ValidateUpdateWishList(UpdateWishListInput input) { ValidationResult validationResult = new(); if (string.IsNullOrWhiteSpace(input.CustomerEmail)) { validationResult.Messages.Add(new(nameof(UpdateWishListInput.CustomerEmail), "Debe indicar un cliente.")); } else { Customer customer = await _customerRepository.GetCustomer(input.CustomerEmail); if (customer is null) { validationResult.Messages.Add(new(nameof(UpdateWishListInput.CustomerEmail), "No existe el cliente.")); } } foreach (string productid in input.Products) { if (string.IsNullOrWhiteSpace(productid)) { validationResult.Messages.Add(new(nameof(UpdateWishListInput.Products), "Debe indicar un producto.")); } else { Product product = await _productRepository.GetAsync(productid); if (product is null) { validationResult.Messages.Add(new(nameof(UpdateWishListInput.Products), "No existe el producto.")); } else if (!product.IsActive) { validationResult.Messages.Add(new(nameof(UpdateWishListInput.Products), $"El producto {product.Name} no esta activo.")); } } } return(validationResult); }
public async Task <OperationResult <WishListDto> > UpdateWishListAsync(UpdateWishListInput input) { var validatioResult = await _validator.ValidateUpdateWishList(input); if (validatioResult.IsSuccess) { var wishlist = await _repository.GetByCustomerAsync(input.CustomerEmail); if (wishlist is null) { wishlist = await CreateEmplyBasket(input.CustomerEmail); } wishlist.Products = input.Products; await _repository.UpdateAsync(wishlist); return(OperationResult <WishListDto> .Success(wishlist.ConvertToDto())); } return(OperationResult <WishListDto> .Fail(validatioResult)); }
public async Task <IActionResult> UpdateWishListAsync(UpdateWishListInput input) { var result = await _service.UpdateWishListAsync(input); return(new OperationActionResult(result)); }