protected override async Task ProcessMessage(ExternalEventNotification notification, CancellationToken cancellationToken)
        {
            string lockName = $"extevt:{notification.Id}";

            if (!await _distributedLock.TryAcquireLock(lockName, cancellationToken))
            {
                return;
            }

            try
            {
                var subscriber = await _subscriberRepository.Get(notification.CasePlanInstanceId, notification.CasePlanElementInstanceId, notification.EvtName, cancellationToken);

                if (subscriber == null)
                {
                    throw new InvalidOperationException("subscriber doesn't exist");
                }

                subscriber.IsCaptured = true;
                subscriber.Parameters = notification.Parameters;
                await _subscriberRepository.Update(subscriber, cancellationToken);

                await MessageBroker.QueueCasePlanInstance(notification.CasePlanInstanceId, cancellationToken);
            }
            finally
            {
                await _distributedLock.ReleaseLock(lockName, cancellationToken);
            }
        }
Exemple #2
0
        public ActionResult Subscribe(Subscriber subscriber)
        {
            var viewModal = new SubscriberViewModel(subscriber);

            if (!ModelState.IsValid)
            {
                viewModal.Status = new Status {
                    Message = SubscribeFormDefinitions.ErroreMessage, Type = StatusType.danger
                };
                return(PartialView("_FormFields", viewModal));
            }

            if (_subscriberRepository.Get(subscriber.Email) != null)
            {
                viewModal.Status = new Status {
                    Message = SubscribeFormDefinitions.DuplicateMessage, Type = StatusType.danger
                };
                return(PartialView("_FormFields", viewModal));
            }

            _subscriberRepository.Add(subscriber);
            _unitOfWork.Complete();

            viewModal.Status = new Status {
                Message = SubscribeFormDefinitions.SuccessMessage, Type = StatusType.success
            };
            viewModal.Subscriber = new Subscriber();
            ModelState.Clear();

            return(PartialView("_FormFields", viewModal));
        }
Exemple #3
0
        public async Task <bool> Execute(string casePlanInstanceId, string casePlanElementInstanceId, Dictionary <string, string> parameters, CancellationToken token)
        {
            var casePlanInstance = await _casePlanInstanceCommandRepository.Get(casePlanInstanceId, token);

            if (casePlanInstance == null)
            {
                throw new UnknownCasePlanInstanceException(casePlanInstanceId);
            }

            if (!string.IsNullOrWhiteSpace(casePlanElementInstanceId))
            {
                var elt = casePlanInstance.GetChild(casePlanElementInstanceId);
                if (elt == null)
                {
                    throw new UnknownCasePlanElementInstanceException(casePlanInstanceId, casePlanElementInstanceId);
                }
            }

            var subscriber = await _subscriberRepository.Get(casePlanInstanceId, casePlanElementInstanceId, EvtName, token);

            if (subscriber == null)
            {
                throw new InvalidOperationException("subscriber doesn't exist");
            }

            subscriber.IsCaptured = true;
            subscriber.Parameters = parameters;
            await _subscriberRepository.Update(subscriber, token);

            await _casePlanInstanceProcessor.Execute(casePlanInstance, token);

            await _casePlanInstanceCommandRepository.Update(casePlanInstance, token);

            await _casePlanInstanceCommandRepository.SaveChanges(token);

            return(true);
        }
        private async Task <string> GetSubscriber(string id)
        {
            var Subscriber = await _subscriberRepository.Get(id);

            return(JsonConvert.SerializeObject(Subscriber));
        }
 public void GetFromNullSubscriberRepositoryShouldReturnNull()
 {
     _cut.Get("MyServerName", "MyQueueName").Should().BeNull();
 }