Exemple #1
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);
            }
        }
        private IPlayerMessageTemplateModel FormatModel(MessageType messageType, IPlayerMessageTemplateModel model)
        {
            switch (messageType)
            {
            case MessageType.BonusIssued:
                var bonusIssuedModel = (BonusIssuedModel)model;
                return(Mapper.Map <BonusIssuedFormattedModel>(bonusIssuedModel));

            case MessageType.BonusWageringRequirement:
                var wageringModel = (BonusWageringRequirementModel)model;
                return(Mapper.Map <BonusWageringRequirementFormattedModel>(wageringModel));

            case MessageType.HighDepositReminder:
                var highDepositModel = (HighDepositReminderModel)model;
                return(Mapper.Map <HighDepositReminderFormattedModel>(highDepositModel));

            default:
                return(model);
            }
        }