Ejemplo n.º 1
0
        public Guid Add(AddMessageTemplate model)
        {
            var validationResult = _messageTemplateQueries.GetValidationResult(model);

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

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var messageTemplate = Mapper.Map <MessageTemplate>(model);

                messageTemplate.Brand     = _messagingRepository.Brands.Single(x => x.Id == model.BrandId);
                messageTemplate.Language  = _messagingRepository.Languages.Single(x => x.Code == model.LanguageCode);
                messageTemplate.Created   = DateTimeOffset.Now.ToBrandOffset(messageTemplate.Brand.TimezoneId);
                messageTemplate.CreatedBy = _actorInfoProvider.Actor.UserName;

                _messagingRepository.MessageTemplates.Add(messageTemplate);

                _messagingRepository.SaveChanges();

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

                scope.Complete();

                return(messageTemplate.Id);
            }
        }
Ejemplo n.º 2
0
        private void PopulateRepositoriesWhichNeedANewlyCreatedPaymentLevel(
            PaymentLevel paymentLevel,
            Guid paymentLevelId,
            string paymentLevelCode)
        {
            //Populate Payment repository
            _paymentRepository.PaymentLevels.Add(paymentLevel);

            _paymentRepository.SaveChanges();

            //Populate Messaging repository
            _messagingRepository.PaymentLevels.Add(new Core.Messaging.Data.PaymentLevel()
            {
                Id   = paymentLevelId,
                Name = "PaymentLevel-Messaging-" + paymentLevelCode
            });

            _messagingRepository.SaveChanges();
        }
Ejemplo n.º 3
0
        public UpdateRecipientsResponse UpdateRecipients(UpdateRecipientsRequest request)
        {
            var validationResult = _massMessageQueries.GetValidationResult(request);

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

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                if (!request.Id.HasValue)
                {
                    DeleteUnsentMassMessages();
                }

                MassMessage massMessage;

                if (request.Id.HasValue)
                {
                    massMessage = _messagingRepository.MassMessages
                                  .Include(x => x.Recipients.Select(y => y.Language))
                                  .Single(x => x.Id == request.Id);
                }
                else
                {
                    massMessage = new MassMessage
                    {
                        Id      = Guid.NewGuid(),
                        AdminId = _actorInfoProvider.Actor.Id
                    };

                    _messagingRepository.MassMessages.Add(massMessage);
                }

                massMessage.IpAddress = request.IpAddress;

                if (request.UpdateRecipientsType == UpdateRecipientsType.SelectSingle)
                {
                    massMessage.Recipients.Add(_messagingRepository.Players
                                               .Include(x => x.Language)
                                               .Single(x => x.Id == request.PlayerId));
                }
                else if (request.UpdateRecipientsType == UpdateRecipientsType.UnselectSingle)
                {
                    massMessage.Recipients.Remove(massMessage.Recipients.Single(x => x.Id == request.PlayerId));
                }
                else if (request.UpdateRecipientsType == UpdateRecipientsType.RecipientsListUnselectAll)
                {
                    massMessage.Recipients.Clear();
                }
                else
                {
                    var playerIds = _massMessageQueries.CreateMassMessagePlayerQuery(request.SearchPlayersRequest)
                                    .Select(x => x.Id);

                    if (request.UpdateRecipientsType == UpdateRecipientsType.SearchResultSelectAll)
                    {
                        var players = _messagingRepository.Players
                                      .Include(x => x.Language)
                                      .Where(x => playerIds.Contains(x.Id));

                        foreach (var player in players)
                        {
                            massMessage.Recipients.Add(player);
                        }
                    }
                    else
                    {
                        var recipients = massMessage.Recipients.Where(x => playerIds.Contains(x.Id)).ToArray();

                        foreach (var recipient in recipients)
                        {
                            massMessage.Recipients.Remove(recipient);
                        }
                    }
                }

                _messagingRepository.SaveChanges();

                scope.Complete();

                IEnumerable <Interface.Data.Language> languages = null;

                if (massMessage.Recipients.Any())
                {
                    var languageEntities = massMessage.Recipients.GroupBy(x => x.LanguageCode).Select(x => x.First().Language);
                    languages = Mapper.Map <List <Interface.Data.Language> >(languageEntities);
                }

                return(new UpdateRecipientsResponse
                {
                    Id = massMessage.Id,
                    HasRecipients = massMessage.Recipients.Any(),
                    Languages = languages
                });
            }
        }
Ejemplo n.º 4
0
        public void Consume(LanguageCreated message)
        {
            _repository.Languages.Add(new Language
            {
                Code = message.Code,
                Name = message.Name
            });

            _repository.SaveChanges();
        }