Ejemplo n.º 1
0
        public async Task Consume(ConsumeContext <CasePlanInstanceCreatedEvent> context)
        {
            var casePlan = await _casePlanCommandRepository.Get(context.Message.CasePlanId, CancellationToken.None);

            casePlan.IncrementInstance();
            await _casePlanCommandRepository.Update(casePlan, CancellationToken.None);

            await _casePlanCommandRepository.SaveChanges(CancellationToken.None);
        }
        public async Task <CasePlanInstanceResult> Handle(CreateCaseInstanceCommand request, CancellationToken cancellationToken)
        {
            var workflowDefinition = await _casePlanCommandRepository.Get(request.CasePlanId, cancellationToken);

            if (workflowDefinition == null)
            {
                throw new UnknownCasePlanException(request.CasePlanId);
            }

            var casePlanInstance = CasePlanInstanceAggregate.New(Guid.NewGuid().ToString(), workflowDefinition, request.NameIdentifier, request.Parameters);
            await _casePlanInstanceCommandRepository.Add(casePlanInstance, cancellationToken);

            await _casePlanInstanceCommandRepository.SaveChanges(cancellationToken);

            await _busControl.Publish(casePlanInstance.DomainEvents.First(s => s is CasePlanInstanceCreatedEvent) as CasePlanInstanceCreatedEvent, cancellationToken);

            return(CasePlanInstanceResult.ToDto(casePlanInstance));
        }