public override async Task <ActionResult <CategoryDto> > Handle(SaveCategoryCommand command) { var saveCategoryDtoResult = await _getCategoryByUrlQueryHandler.Handle(new GetCategoryByUrlCommand(command.SaveCategory.RouteUrl, command.LanguageId)); if (saveCategoryDtoResult.Failure) { return(Error(saveCategoryDtoResult.ErrorMessages)); } var saveCategoryDto = saveCategoryDtoResult.Object; var detailErrors = saveCategoryDto.Fieldsets.MapToFields(command.SaveCategory.Category).ValidateFieldsets(); if (!detailErrors.IsNullOrEmpty()) { return(Error(detailErrors)); } var classifierStore = await _classifierStoresRepository.Get(); var availableCharacteristics = await _listCharacteristicsQuery.Query(new ListCharacteristicsCommand()); var category = await _getCategoryQuery.Query(new GetCategoryCommand(command.SaveCategory.Category.Id, command.LanguageId, true) { IsFromCache = false }) ?? new Category(); var categoryDto = command.SaveCategory.Category; categoryDto = await CategoryDtoDefaults(categoryDto); _mapper.Map(categoryDto, category); category.Route.AngularComponentId = classifierStore.AngularComponents.First(o => o.Code == categoryDto.AngularComponentCode).Id; category.CategoryTypeId = classifierStore.CategoryTypes.First(o => o.Code == categoryDto.CategoryTypeCode).Id; category.Images.MergeImages(availableCharacteristics, categoryDto.Images); category.Characteristics.MergeCharacteristics(availableCharacteristics, categoryDto.Characteristics); await _saveCategoryQuery.Query(new SaveCategoryQueryCommand(category)); return(Ok(categoryDto)); }
public override async Task <ActionResult <ProductDto> > Handle(SaveProductCommand command) { var saveProductDtoResult = await _getCategoryByUrlQueryHandler.Handle(new GetCategoryByUrlCommand(command.SaveProduct.RouteUrl, command.LanguageId)); if (saveProductDtoResult.Failure) { return(Error(saveProductDtoResult.ErrorMessages)); } var saveProductDto = saveProductDtoResult.Object; var detailErrors = saveProductDto.Fieldsets.MapToFields(command.SaveProduct.Product).ValidateFieldsets(); if (!detailErrors.IsNullOrEmpty()) { return(Error(detailErrors)); } var classifierStore = await _classifierStoresRepository.Get(); var availableCharacteristics = await _listCharacteristicsQuery.Query(new ListCharacteristicsCommand()); var product = await _getProductQuery.Query(new GetProductCommand(command.SaveProduct.Product.Id, command.LanguageId) { IsFromCache = false }) ?? new Product(); var productDto = command.SaveProduct.Product; _mapper.Map(productDto, product); product.Route.AngularComponentId = classifierStore.AngularComponents.First(o => o.Code == productDto.AngularComponentCode).Id; product.Images.MergeImages(availableCharacteristics, productDto.Images); product.Characteristics.MergeCharacteristics(availableCharacteristics, productDto.Characteristics); product = await BeforeProductSave(product); await _saveProductQuery.Query(new SaveProductQueryCommand(product)); return(Ok(productDto)); }