예제 #1
0
        public void Can_fail_activate_message_template()
        {
            var data = new ActivateMessageTemplate
            {
                Id      = MessagingRepository.MessageTemplates.First(x => x.Status == Status.Active).Id,
                Remarks = TestDataGenerator.GetRandomString()
            };

            var exception = Assert.Throws <RegoValidationException>(() => MessageTemplateCommands.Activate(data));

            Assert.That(exception.Message, Is.EqualTo(
                            Enum.GetName(typeof(MessagingValidationError), MessagingValidationError.AlreadyActive)));
        }
예제 #2
0
        public void Can_activate_message_template()
        {
            var addData = MessagingTestHelper.CreateAddMessageTemplateData();

            var id = MessageTemplateCommands.Add(addData);

            var activateData = new ActivateMessageTemplate
            {
                Id      = id,
                Remarks = TestDataGenerator.GetRandomString()
            };

            MessageTemplateCommands.Activate(activateData);

            var messageTemplate = MessagingRepository.MessageTemplates.Single(x => x.Id == id);

            Assert.That(messageTemplate.Status, Is.EqualTo(Status.Active));
        }
예제 #3
0
        public void Activate(ActivateMessageTemplate model)
        {
            var validationResult = _messageTemplateQueries.GetValidationResult(model);

            if (!validationResult.IsValid)
            {
                throw new RegoValidationException(validationResult);
            }

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var messageTemplate = _messagingRepository.MessageTemplates.Single(x => x.Id == model.Id);

                messageTemplate.Status      = Status.Active;
                messageTemplate.Activated   = DateTimeOffset.Now.ToBrandOffset(messageTemplate.Brand.TimezoneId);
                messageTemplate.ActivatedBy = _actorInfoProvider.Actor.UserName;
                messageTemplate.Remarks     = model.Remarks;

                var oldMessageTemplate = _messagingRepository.MessageTemplates.SingleOrDefault(x =>
                                                                                               x.Id != messageTemplate.Id &&
                                                                                               x.BrandId == messageTemplate.BrandId &&
                                                                                               x.LanguageCode == messageTemplate.LanguageCode &&
                                                                                               x.MessageType == messageTemplate.MessageType &&
                                                                                               x.MessageDeliveryMethod == messageTemplate.MessageDeliveryMethod &&
                                                                                               x.Status == Status.Active);

                if (oldMessageTemplate != null)
                {
                    oldMessageTemplate.Status = Status.Inactive;
                }

                _messagingRepository.SaveChanges();

                _eventBus.Publish(new MessageTemplateActivatedEvent(Mapper.Map <Interface.Data.MessageTemplate>(messageTemplate))
                {
                    EventCreated = DateTimeOffset.Now.ToBrandOffset(messageTemplate.Brand.TimezoneId),
                });

                scope.Complete();
            }
        }
예제 #4
0
 public ValidationResult GetValidationResult(ActivateMessageTemplate model)
 {
     return(new ActivateMessageTemplateValidator(_messagingRepository).Validate(model));
 }