/// <summary> /// Does the work. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void DoWork(object sender, ElapsedEventArgs e) { if (isRunning) { return; } if (messageGatewayService == null || messageGatewayService.Gateways.Count() == 0) { return; } if (log.IsDebugEnabled) { log.DebugFormat("[{0}]: Polling from DSN [{1}]", messenger.Name, messenger.Dsn); } try { isRunning = true; DataTable dt = MessengerHelper.GetRecords(messenger); if (dt.Rows.Count > 0) { List <IMessage> outgoingMessages = new List <IMessage>(); try { foreach (DataRow row in dt.Rows) { Sms sms = Sms.NewInstance(); sms.DestinationAddress = row[messenger.DestNoColName].ToString(); string msgColName = messenger.MsgColName; if (string.IsNullOrEmpty(msgColName)) { sms.Content = messenger.DefaultTextMsg; } else { sms.Content = row[msgColName].ToString(); } sms.ValidityPeriod = MessageValidPeriod.OneDay; if (string.IsNullOrEmpty(messenger.MsgPriorityColName)) { sms.QueuePriority = EnumMatcher.MessagePriority[messenger.DefaultMsgPriority]; } else { sms.QueuePriority = EnumMatcher.MessagePriority[row[messenger.MsgPriorityColName].ToString()]; } if (!string.IsNullOrEmpty(messenger.MsgAlertColName)) { sms.DcsMessageClass = EnumMatcher.MessageClass[row[messenger.MsgAlertColName].ToString()]; } sms.Identifier = MessengerHelper.GenerateMessageId(messenger, row[messenger.UniqMsgIdColName].ToString()); outgoingMessages.Add(sms); MessengerHelper.UpdateStatus(messenger, row[messenger.UniqMsgIdColName].ToString(), messenger.StatusColUpdateSendingValue); } } catch (Exception ex) { log.Error(string.Format("Messenger [{0}] encountered error in sending", messenger.Name), ex); } if (outgoingMessages.Count > 0) { int count = messageGatewayService.SendMessages(outgoingMessages); log.InfoFormat("Database messenger [{0}] : Messages are queued for sending. Count of number of messages is [{1}]", messenger.Name, count); } } } catch (Exception ex) { log.Error(ex.Message, ex); } finally { isRunning = false; } }