public ReviewApiController(
     IReviewService reviewService,
     ILocalizedTextService textService,
     IProductAdapter productAdapter)
 {
     _reviewService  = reviewService;
     _textService    = textService;
     _productAdapter = productAdapter;
 }
Exemplo n.º 2
0
 public HandlerClick(IProductProcess productProcess, ICheckLast checkLast, IProductAdapter productAdapter, IProducerService producerService,
                     WSS.Service.Report.ProductOnClick.Error.Model.ISettingRepository settingRepository, ICheckLinkValid checkLinkValid)
 {
     _productProcess  = productProcess;
     _checkLast       = checkLast;
     _productAdapter  = productAdapter;
     _producerService = producerService;
     _checkLinkValid  = checkLinkValid;
     _producer        = new ProducerBasic(RabbitMQManager.GetRabbitMQServer(settingRepository.RabbitMq), "Product.ErrorRequest");
 }
Exemplo n.º 3
0
        public async Task <Result> Save(IProductAdapter productAdapter)
        {
            try
            {
                var insertProduct = @"
                    IF NOT EXISTS (SELECT 1 FROM [dbo].[Products] WHERE [Id] = @Id)
                        INSERT INTO [dbo].[Products] ([Id], [CategoryId], [Name], [Description], [Price], [Quantity], [Status])
                        VALUES (@Id, @CategoryId, @Name, @Description, @Price, @Quantity, @Status)
                    ELSE
                        UPDATE [dbo].[Products]
                        SET [CategoryId] = @CategoryId, [Name] = @Name, [Description] = @Description, [Price] = @Price, [Quantity] = @Quantity, [Status] = @Status
                        WHERE [Id] = @Id
                ";

                await _uow.Connection.ExecuteAsync(insertProduct, productAdapter, transaction : _uow.Transaction);

                var deleteFiles = @"
                    DELETE FROM [dbo].[ProductFiles]
                    WHERE [ProductId] = @ProductId
                ";

                var deleteFilesParam = new
                {
                    ProductId = productAdapter.Id
                };

                await _uow.Connection.ExecuteAsync(deleteFiles, param : deleteFilesParam, transaction : _uow.Transaction);

                var insertFiles = @"
                    INSERT INTO [dbo].[ProductFiles] ([ProductId], [FileId])
                    VALUES (@ProductId, @FileId)
                ";

                var tasks = productAdapter.FileIds.Select(it => _uow.Connection.ExecuteAsync(insertFiles, new { ProductId = productAdapter.Id, FileId = it }, transaction: _uow.Transaction));

                await Task.WhenAll(tasks);

                return(Result.Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);

                return(Result.Fail("Oops... something has been wrong"));
            }
        }
Exemplo n.º 4
0
        public async Task <Result> Execute(IProductAdapter productAdapter)
        {
            var getProductOrError = await GetProductOrError(productAdapter);

            if (getProductOrError.Failure)
            {
                return(Result.Fail(getProductOrError.Message));
            }

            var saveProductOrError = await SaveProductOrError(getProductOrError.Value);

            if (saveProductOrError.Failure)
            {
                return(Result.Fail(saveProductOrError.Message));
            }

            return(Result.Ok());
        }
Exemplo n.º 5
0
        private async Task <Result <Product> > GetProductOrError(IProductAdapter productAdapter)
        {
            var categoryOrError = await GetCategoryOrError(productAdapter.CategoryName);

            var filesOrError = await GetFilesOrErrors(productAdapter.FileNames);

            var idOrError = Identifier.Of(productAdapter.Id);

            var nameOrError = Name.Of(productAdapter.Name);

            var descriptionOrError = Description.Of(productAdapter.Description);

            var priceOrError = Price.Of(productAdapter.Price);

            var quantityOrError = Quantity.Of(productAdapter.Quantity);

            var result = Result.Combine
                         (
                Result.Combine(idOrError, categoryOrError, nameOrError, descriptionOrError, priceOrError, quantityOrError),
                Result.Combine(filesOrError)
                         );

            if (result.Failure)
            {
                return(Result.Fail <Product>(result.Message));
            }

            var files = filesOrError.Select(it => it.Value);

            var product = ProductFactory.Create
                          (
                idOrError.Value,
                categoryOrError.Value,
                nameOrError.Value,
                descriptionOrError.Value,
                priceOrError.Value,
                quantityOrError.Value,
                files,
                EStatus.Activated
                          );

            return(Result.Ok(product));
        }
 public LogReviewAddedActivity(IActivityLogService activityLogService, IProductAdapter productAdapter, IVariationContextAccessor variationContextAccessor)
 {
     _activityLogService       = activityLogService;
     _productAdapter           = productAdapter;
     _variationContextAccessor = variationContextAccessor;
 }