コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }