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;
case SmsDeliveryMethodEnum.Vodacom:
_sender = new SmsVodacom(
smsSettings.UserRef,
smsSettings.UserName,
smsSettings.Password);
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);
}
}
}