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); } }