Ejemplo n.º 1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Post, Route = "category")] CreateCategoryHttpRequest createCategoryRequest)
        {
            var validationResult = await _createCategoryRequestValidator.ValidateAsync(createCategoryRequest);

            if (!validationResult.IsValid)
            {
                return(new BadRequestObjectResult(validationResult.Errors));
            }

            var id = _guidProvider.GenerateGuid().ToString("N");

            var categoryToAdd = new CategoryDto(
                id,
                createCategoryRequest.Name,
                createCategoryRequest.Description,
                createCategoryRequest.SortOrder);

            var createResult = await _categoryRepository.Create(categoryToAdd);

            if (!createResult.Success)
            {
                return(new BadRequestResult());
            }

            await _eventPublisher.PublishEvent(this.BuildCategoryChangedEvent(categoryToAdd));

            return(new CreatedResult(id, categoryToAdd));
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, HttpMethods.Post, Route = "category")] CreateCategoryHttpRequest createCategoryRequest,
            [NotificationSubscriber] string subscriber,
            ILogger log)
        {
            var id = _guidProvider.GenerateGuid();

            _correlationInitializer.Initialize(id);
            var validationResult = await _createCategoryRequestValidator.ValidateAsync(createCategoryRequest);

            var correlationId = id;

            log.LogProgress(OperationStatus.Started, "Creating category process started", correlationId);

            if (!validationResult.IsValid)
            {
                log.LogProgress(OperationStatus.Failed, "Validation failed", correlationId);
                return(new BadRequestObjectResult(validationResult.Errors));
            }

            await _subscriber.Register(correlationId, subscriber);

            var categoryAddedEvent = new CreateCategoryProcessStartedEvent(
                id,
                createCategoryRequest.Name,
                createCategoryRequest.Description,
                createCategoryRequest.SortOrder,
                correlationId);

            var saveEventResult = await _eventStore.AppendEvent(id, categoryAddedEvent);

            if (!saveEventResult.Success)
            {
                log.LogFailedOperation(OperationStatus.Failed, "Creating category process failed", saveEventResult.Errors, correlationId);
                return(new BadRequestResult());
            }

            log.LogProgress(OperationStatus.InProgress, "Request accepted to further processing.", correlationId);
            await _eventPublisher.PublishEvent(categoryAddedEvent);

            return(new AcceptedWithCorrelationIdHeaderResult(correlationId));
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, HttpMethodNames.POST)] CreateCategoryHttpRequest createCategoryHttpRequest)
        {
            var validationResult = await _validator.ValidateAsync(createCategoryHttpRequest);

            if (!validationResult.IsValid)
            {
                return(new BadRequestObjectResult(validationResult.Errors));
            }

            var categoryToAdd = new CategoryToAddDto(createCategoryHttpRequest.Name, createCategoryHttpRequest.Description);

            var result = await _categoryRepository.CreateCategoryAsync(categoryToAdd);

            if (!result.IsSuccessful)
            {
                return(new BadRequestObjectResult(result.Value));
            }

            return(new OkObjectResult(""));
        }