public ReviewApiController( IReviewService reviewService, ILocalizedTextService textService, IProductAdapter productAdapter) { _reviewService = reviewService; _textService = textService; _productAdapter = productAdapter; }
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"); }
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")); } }
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()); }
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; }