Пример #1
0
        private async Task <bool> SaveGuard(UpdateCategoryProcessStartedEvent categoryChangedEvent)
        {
            var existingCategoryResult = await _categorySearchHandler.GetById(new GetCategoryByIdQuery(categoryChangedEvent.Id));

            if (!existingCategoryResult.Success)
            {
                var failedEvent =
                    new UpdatingCategoryFailedEvent(categoryChangedEvent.Id, CategoryModificationStatus.NotFound, categoryChangedEvent.CorrelationId);
                await this.SaveAndDispatchEvent(categoryChangedEvent.Id, failedEvent);

                _logger.LogProgress(OperationStatus.Failed, $"Category({categoryChangedEvent.Id}) cannot be found", categoryChangedEvent.CorrelationId);
                return(false);
            }

            var existingCategoryWithSameNameResult = await _categorySearchHandler.GetByName(new GetCategoryByNameQuery(categoryChangedEvent.Name));

            if (existingCategoryWithSameNameResult.Success)
            {
                var failedEvent = new UpdatingCategoryFailedEvent(categoryChangedEvent.Id, CategoryModificationStatus.DuplicatedName,
                                                                  categoryChangedEvent.CorrelationId);
                await this.SaveAndDispatchEvent(categoryChangedEvent.Id, failedEvent);

                _logger.LogProgress(OperationStatus.Failed, $"Cannot save category({categoryChangedEvent.Id}). Duplicated name", categoryChangedEvent.CorrelationId);
                return(false);
            }

            return(true);
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Get, Route = "category/{id:guid}")] HttpRequest req,
            string id)
        {
            var categoryResult = await _categorySearchHandler.GetById(new GetCategoryByIdQuery(id));

            if (!categoryResult.Success)
            {
                return(new NotFoundResult());
            }

            return(new OkObjectResult(categoryResult.Value));
        }
Пример #3
0
        public async Task <ICategoryDeleteValidationResult> CanDelete(string id)
        {
            var existingCategoryResult = await _categorySearchHandler.GetById(new GetCategoryByIdQuery(id));

            if (!existingCategoryResult.Success)
            {
                return(new FailedCategoryDeleteValidationResult(CategoryModificationStatus.NotFound));
            }

            var categoryUsage = await _usedCategoryRepository.GetCategoryUsageById(id);

            var canDelete = categoryUsage == null || categoryUsage.UsageCounter == default;

            return(canDelete ?
                   (ICategoryDeleteValidationResult) new SuccessfulDeleteValidationResult()
                :
                   (ICategoryDeleteValidationResult) new FailedCategoryDeleteValidationResult(CategoryModificationStatus.Used));
        }