public async Task Run(
            [DurableClient] IDurableOrchestrationClient client,
            [ActivityTrigger] IDurableActivityContext context,
            ILogger log)
        {
            var command           = context.GetInput <SaveApplicationCommand>();
            var applicationToSave = _mapper.Map <SaveApplicationCommand, DataStorage.Models.Application>(command);
            var saveResult        = await _applicationRepository.Create(applicationToSave);

            if (!saveResult.Success)
            {
                this.LogError(log, context.InstanceId, string.Join(',', saveResult.Errors.Select(x => x.Value)));
                var eventToDispatch = new ApplicationSaveFailedInternalFunctionEvent(saveResult.Errors);
                await client.RaiseEventAsync(context.InstanceId, nameof(ApplicationSaveFailedInternalFunctionEvent), eventToDispatch);

                return;
            }

            var applicationSavedEvent = new ApplicationSavedInternalFunctionEvent(applicationToSave);
            await client.RaiseEventAsync(context.InstanceId, nameof(ApplicationSavedInternalFunctionEvent), applicationSavedEvent);
        }
Esempio n. 2
0
        public async Task Run(
            [DurableClient] IDurableOrchestrationClient client,
            [ActivityTrigger] IDurableActivityContext context,
            ILogger log)
        {
            _correlationInitializer.Initialize(context.InstanceId);
            var command = context.GetInput <CreateApplicationCommand>();

            var applicationCreatedEvent = _mapper.Map <CreateApplicationCommand, CreateApplicationProcessStartedEvent>(command);

            var result = await _eventStore.AppendEvent(applicationCreatedEvent.Id, applicationCreatedEvent);

            if (!result.Success)
            {
                var applicationSaveFailedEvent = new ApplicationSaveFailedInternalFunctionEvent(result.Errors);
                await client.RaiseEventAsync(context.InstanceId, nameof(ApplicationSaveFailedInternalFunctionEvent), applicationSaveFailedEvent);
            }

            log.LogProgress(OperationStatus.InProgress, "Application accepted", context.InstanceId);
            await _eventPublisher.PublishEvent(applicationCreatedEvent);

            var applicationSavedEvent = new ApplicationSavedInternalFunctionEvent();
            await client.RaiseEventAsync(context.InstanceId, nameof(ApplicationSavedInternalFunctionEvent), applicationSavedEvent);
        }