Ejemplo n.º 1
0
        public async Task <OperationResult> DeleteImageAsync(DeleteProductImageInput input)
        {
            var validateResult = await _productImageValidator.ValidateDeleteProductImage(input);

            if (validateResult.IsSuccess)
            {
                var productDtoResult = await _productService.GetAsync(input.ProductId);

                if (!productDtoResult.IsSuccess)
                {
                    return(OperationResultEnumerable <ProductImageDto> .Fail(productDtoResult.Validations));
                }

                var images = await _repository.GetProductImages(productDtoResult.Result.ConvertToEntity());

                images = images.Where(x => x.Id != input.ProductImageId);

                await _repository.UpdateProductImages(images);

                return(OperationResult.Success());
            }
            else
            {
                return(OperationResult.Fail(validateResult));
            }
        }
Ejemplo n.º 2
0
        public async Task <OperationResultEnumerable <ProductImageDto> > GetAllImageAsync(string productId)
        {
            var productDtoResult = await _productService.GetAsync(productId);

            if (!productDtoResult.IsSuccess)
            {
                return(OperationResultEnumerable <ProductImageDto> .Fail(productDtoResult.Validations));
            }
            var images = await _repository.GetProductImages(productDtoResult.Result.ConvertToEntity());

            return(OperationResultEnumerable <ProductImageDto> .Success(images.Select(x => x.ConvertToDto())));
        }
        public async Task <OperationResultEnumerable <ProductVariantDto> > UpdateAsync(UpdateProductVariantInput input)
        {
            var validationResult = await _productVariantValidator.ValidateUpdateProductVariant(input);

            if (validationResult.IsSuccess)
            {
                var taskGetVariants = _productVariantRepository.GetByProduct(new() { Id = input.ProductId });

                foreach (var variant in input.Variants)
                {
                    var entity = await _productVariantRepository.GetByNameAsync(new() { Id = input.ProductId }, variant.Name);

                    if (entity is null)
                    {
                        await _productVariantRepository.CreateAsync(new()
                        {
                            Name      = variant.Name,
                            ProductId = input.ProductId,
                            Values    = variant.Values
                        });
                    }
                    else
                    {
                        await _productVariantRepository.UpdateAsync(new()
                        {
                            Id        = entity.Id,
                            Name      = variant.Name,
                            ProductId = input.ProductId,
                            Values    = variant.Values
                        });
                    }
                }


                var variants = await taskGetVariants;

                var variantsToDelete = variants.Where(x => !input.Variants.Select(y => y.Name).Contains(x.Name));

                foreach (var item in variantsToDelete)
                {
                    await _productVariantRepository.RemoveAsync(item);
                }

                variants = await _productVariantRepository.GetByProduct(new() { Id = input.ProductId });

                return(OperationResultEnumerable <ProductVariantDto> .Success(variants.Select(x => x.ConvertToDto())));
            }

            return(OperationResultEnumerable <ProductVariantDto> .Fail(validationResult));
        }