Exemple #1
0
        public void Can_validate_edit(MessageDeliveryMethod messageDeliveryMethod)
        {
            var data = MessagingTestHelper.CreateEditMessageTemplateData(messageDeliveryMethod);

            var result = MessageTemplateQueries.GetValidationResult(data);

            Assert.That(result.Errors.Count, Is.EqualTo(0));
        }
        public void Broadcast(MessageDeliveryMethod method, long? excludedClientId)
        {
            NetConnection excluded = null;

            if (excludedClientId.HasValue &&
                connections.ContainsKey(excludedClientId.Value))
            {
                excluded = connections[excludedClientId.Value];
            }

            server.SendToAll((NetOutgoingMessage)Writer.GetMessage(), excluded, GetDeliveryMethod(method), 0);
        }
Exemple #3
0
        public void TrySendPlayerMessage(
            Guid playerId,
            MessageType messageType,
            MessageDeliveryMethod messageDeliveryMethod,
            IPlayerMessageTemplateModel model,
            bool ignoreAccountAlertSetting = false)
        {
            var player = _repository.Players
                         .Include(x => x.Brand)
                         .Include(x => x.Language)
                         .Single(x => x.Id == playerId);

            var accountAlertEnabled = messageDeliveryMethod == MessageDeliveryMethod.Email
                ? player.AccountAlertEmail
                : player.AccountAlertSms;

            if (!accountAlertEnabled && !ignoreAccountAlertSetting)
            {
                return;
            }

            var messageTemplate = _repository.MessageTemplates.SingleOrDefault(x =>
                                                                               x.BrandId == player.Brand.Id &&
                                                                               x.LanguageCode == player.Language.Code &&
                                                                               x.MessageType == messageType &&
                                                                               x.MessageDeliveryMethod == messageDeliveryMethod &&
                                                                               x.Status == Status.Active);

            if (messageTemplate == null)
            {
                return;
            }

            model = Mapper.Map(player, model);

            var parsedMessage = ParseTemplate(messageTemplate.MessageContent, model);

            if (messageDeliveryMethod == MessageDeliveryMethod.Email)
            {
                SendEmail(
                    senderEmail: player.Brand.Email,
                    senderName: player.Brand.Name,
                    recipientEmail: player.Email,
                    recipientName: string.Format("{0} {1}", player.FirstName, player.LastName),
                    subject: ParseTemplate(messageTemplate.Subject, model),
                    body: parsedMessage);
            }
            else
            {
                SendSms(player.Brand.SmsNumber, player.PhoneNumber, parsedMessage);
            }
        }
Exemple #4
0
        public void SendMessageToAll(INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
        {
            if (_netPeer == null)
            {
                throw new NullReferenceException("NetPeer was not initialized.");
            }

            message.Encrypt();

            var outMessage = ((NetworkMessageOutLidgren)message).GetInternalMessage();

            _netPeer.SendMessage(outMessage, _netPeer.Connections, deliveryMethod.ToDeliveryMethod(), channel);
        }
        public void Can_fail_sending_player_message_because_player_account_setting(MessageDeliveryMethod messageDeliveryMethod)
        {
            var player = SetUpPlayerMessageTest(messageDeliveryMethod, false);

            MessageTemplateService.TrySendPlayerMessage(
                player.Id,
                MessageType.PlayerRegistered,
                messageDeliveryMethod,
                new PlayerRegisteredModel());

            var events = _eventRepository.GetEvents <NotificationSentEvent>().ToArray();

            Assert.That(events, Is.Empty);
        }
        private Core.Messaging.Data.Player SetUpPlayerMessageTest(MessageDeliveryMethod messageDeliveryMethod, bool enableAccountAlert = true)
        {
            var player = _playerTestHelper.CreatePlayer();

            var messagingPlayer = MessagingRepository.Players.Single(x => x.Id == player.Id);

            if (messageDeliveryMethod == MessageDeliveryMethod.Email)
            {
                _emailNotificationWorker.Start();
                messagingPlayer.AccountAlertEmail = enableAccountAlert;
            }
            else
            {
                _smsNotificationWorker.Start();
                messagingPlayer.AccountAlertSms = enableAccountAlert;
            }

            return(messagingPlayer);
        }
Exemple #7
0
        private void TrySendBrandMessage(
            string recipientName,
            string recipientContact,
            string languageCode,
            Guid brandId,
            MessageType messageType,
            MessageDeliveryMethod messageDeliveryMethod,
            IBrandMessageTemplateModel model)
        {
            var brand = _repository.Brands.Single(x => x.Id == brandId);

            var messageTemplate = _repository.MessageTemplates.SingleOrDefault(x =>
                                                                               x.BrandId == brandId &&
                                                                               x.LanguageCode == (languageCode ?? brand.DefaultLanguageCode) &&
                                                                               x.MessageType == messageType &&
                                                                               x.MessageDeliveryMethod == messageDeliveryMethod &&
                                                                               x.Status == Status.Active);

            if (messageTemplate == null)
            {
                return;
            }

            model.BrandName     = brand.Name;
            model.RecipientName = recipientName;

            var parsedMessage = ParseTemplate(messageTemplate.MessageContent, model);

            if (messageDeliveryMethod == MessageDeliveryMethod.Email)
            {
                SendEmail(
                    senderEmail: brand.Email,
                    senderName: brand.Name,
                    recipientEmail: recipientContact,
                    recipientName: recipientName,
                    subject: ParseTemplate(messageTemplate.Subject, model),
                    body: parsedMessage);
            }
            else
            {
                SendSms(brand.SmsNumber, recipientContact, parsedMessage);
            }
        }
        public void Can_send_brand_message(MessageDeliveryMethod messageDeliveryMethod)
        {
            if (messageDeliveryMethod == MessageDeliveryMethod.Email)
            {
                _emailNotificationWorker.Start();
            }
            else
            {
                _smsNotificationWorker.Start();
            }

            if (messageDeliveryMethod == MessageDeliveryMethod.Email)
            {
                MessageTemplateService.TrySendBrandEmail(
                    TestDataGenerator.GetRandomString(),
                    TestDataGenerator.GetRandomEmail(),
                    Brand.Id,
                    MessageType.ReferFriends,
                    new ReferFriendsModel());
            }
            else
            {
                MessageTemplateService.TrySendBrandSms(
                    TestDataGenerator.GetRandomString(),
                    TestDataGenerator.GetRandomPhoneNumber(),
                    Brand.Id,
                    MessageType.ReferFriends,
                    new ReferFriendsModel());
            }

            var events = _eventRepository.GetEvents <NotificationSentEvent>().ToArray();

            Assert.That(events.Length, Is.EqualTo(1));

            var notificationType = messageDeliveryMethod == MessageDeliveryMethod.Email
                ? NotificationType.Email
                : NotificationType.Sms;

            Assert.That(events.First().Type, Is.EqualTo(notificationType));
            Assert.That(events.First().Status, Is.EqualTo(NotificationStatus.Send));
        }
        public void Can_send_player_message(MessageDeliveryMethod messageDeliveryMethod)
        {
            var player = SetUpPlayerMessageTest(messageDeliveryMethod);

            MessageTemplateService.TrySendPlayerMessage(
                player.Id,
                MessageType.PlayerRegistered,
                messageDeliveryMethod,
                new PlayerRegisteredModel());

            var events = _eventRepository.GetEvents <NotificationSentEvent>().ToArray();

            Assert.That(events.Length, Is.EqualTo(1));

            var notificationType = messageDeliveryMethod == MessageDeliveryMethod.Email
                ? NotificationType.Email
                : NotificationType.Sms;

            Assert.That(events.First().Type, Is.EqualTo(notificationType));
            Assert.That(events.First().Status, Is.EqualTo(NotificationStatus.Send));
        }
Exemple #10
0
        public void SendMessageToId(long uniqueId, INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
        {
            if (_netPeer == null)
            {
                throw new NullReferenceException("NetPeer was not initialized.");
            }

            message.Encrypt();

            var outMessage = ((NetworkMessageOutLidgren)message).GetInternalMessage();

            for (int i = 0; i < _netPeer.Connections.Count; i++)
            {
                var connection = _netPeer.Connections[i];
                if (connection.RemoteUniqueIdentifier == uniqueId)
                {
                    _netPeer.SendMessage(outMessage, connection, deliveryMethod.ToDeliveryMethod(), channel);
                    break;
                }
            }
        }
        public static NetDeliveryMethod ToDeliveryMethod(this MessageDeliveryMethod deliveryMethod)
        {
            switch (deliveryMethod)
            {
            case MessageDeliveryMethod.Unreliable:
                return(NetDeliveryMethod.Unreliable);

            case MessageDeliveryMethod.UnreliableSequenced:
                return(NetDeliveryMethod.UnreliableSequenced);

            case MessageDeliveryMethod.ReliableUnordered:
                return(NetDeliveryMethod.ReliableUnordered);

            case MessageDeliveryMethod.ReliableSequenced:
                return(NetDeliveryMethod.ReliableSequenced);

            case MessageDeliveryMethod.ReliableOrdered:
                return(NetDeliveryMethod.ReliableOrdered);

            default:
                return(NetDeliveryMethod.Unknown);
            }
        }
Exemple #12
0
        private NetDeliveryMethod GetDeliveryMethod(MessageDeliveryMethod method)
        {
            switch (method)
            {
                case MessageDeliveryMethod.Unreliable:
                    return NetDeliveryMethod.Unreliable;

                case MessageDeliveryMethod.UnreliableSequenced:
                    return NetDeliveryMethod.UnreliableSequenced;

                case MessageDeliveryMethod.ReliableSequenced:
                    return NetDeliveryMethod.ReliableSequenced;

                case MessageDeliveryMethod.ReliableUnordered:
                    return NetDeliveryMethod.ReliableUnordered;

                case MessageDeliveryMethod.ReliableOrdered:
                    return NetDeliveryMethod.ReliableOrdered;

                default:
                    return NetDeliveryMethod.Unknown;
            }
        }
 protected void SendMessageToId(long uniqueId, INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
 {
     NetworkImplementation?.SendMessageToId(uniqueId, message, deliveryMethod, channel);
 }
Exemple #14
0
        public void SendMessageToIds(IEnumerable <long> uniqueIds, INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
        {
            if (_netPeer == null)
            {
                throw new NullReferenceException("NetPeer was not initialized.");
            }

            message.Encrypt();

            var connections = new List <NetConnection>(4);

            foreach (var uniqueId in uniqueIds)
            {
                for (int i = 0; i < _netPeer.Connections.Count; i++)
                {
                    var connection = _netPeer.Connections[i];
                    if (connection.RemoteUniqueIdentifier == uniqueId)
                    {
                        connections.Add(connection);
                        break;
                    }
                }
            }

            var outMessage = ((NetworkMessageOutLidgren)message).GetInternalMessage();

            try
            {
                _netPeer.SendMessage(outMessage, connections, deliveryMethod.ToDeliveryMethod(), channel);
            }
            catch
            {
                // todo: throw?
            }
        }
Exemple #15
0
 private void SendMessage(MessageDeliveryMethod method = MessageDeliveryMethod.Unreliable)
 {
     if (!isCombined)
     {
         client.Send(method);
     }
 }
 protected void SendMessageToIds(IEnumerable <long> uniqueIds, INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
 {
     NetworkImplementation?.SendMessageToIds(uniqueIds, message, deliveryMethod, channel);
 }
Exemple #17
0
 public void Send(long clientId, MessageDeliveryMethod method)
 {
     if (connections.ContainsKey(clientId))
     {
         server.SendMessage((NetOutgoingMessage)Writer.GetMessage(), connections[clientId], GetDeliveryMethod(method));
     }
 }
 protected void SendMessageToSender(INetworkMessageIn to, INetworkMessageOut message, MessageDeliveryMethod deliveryMethod, int channel)
 {
     NetworkImplementation?.SendMessageToSender(to, message, deliveryMethod, channel);
 }