using System.Collections.Generic; namespace Neo.Afx.WinService.Messages { /// /// A class for sending batches of SMS's. /// public class SmsSender : MessageSender { ISmsSender _sender; public SmsSender() : base(MessageTypeEnum.Sms) { } #region InitializeSender protected override void InitializeSender(MessageDatabase database) { var smsSettings = database.GetSmsSetting(); switch((SmsDeliveryMethodEnum)smsSettings.SmsDeliveryMethodID) { case SmsDeliveryMethodEnum.Vodazone: _sender = new SmsVodazone( smsSettings.UserRef, smsSettings.UserName, smsSettings.Password); break; case SmsDeliveryMethodEnum.Swift: _sender = new SmsSwift( smsSettings.UserRef, smsSettings.UserName); break; } } #endregion #region FinalizeSender protected override void FinalizeSender(MessageDatabase database) { _sender = null; } #endregion protected override bool ShouldRun(int count, out string error) { var creditCount = _sender.Credits; var result = count <= creditCount; error = result ? null : string.Format("Insufficient credits to send sms's. Credits left: {0}", creditCount); return result; } protected override bool SendMessage(Message message, List attachments, char recipientSeparator, out string error) { return _sender.Send(message.MessageText, message.Recipients, out error); } } }